注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Foundry データセット用の ODBC および JDBC ドライバーは、クライアントアプリケーション(BI ツールや ETL ツールなど)からデータセットにアクセスするための、読み取り専用の SQL ベースのインターフェースを提供します。ユーザーは Foundry 内のプロジェクトやデータセットを探索し、SQL クエリを実行して表形式のデータにアクセスできます。ドライバーはサーバー側で Foundry SQL Server を利用して、SQL クエリを処理および実行します。
クライアントアプリケーションが両方のプロトコルをサポートしている場合は、ODBC よりも JDBC の使用を推奨します。JDBC ドライバーはインストールと設定が容易で、データの読み込みのパフォーマンスも優れています。
ドライバーは Foundry SQL Server を使用して、Foundry データセットに対する SQL クエリを処理および実行します。アーキテクチャやクエリのパフォーマンスを改善する方法について、詳しくは Foundry SQL Server のアーキテクチャのドキュメントを参照してください。
| オペレーティングシステム | 要件 |
|---|---|
| Windows |
|
ODBC ドライバーは現在、Windows のみに対応しています。
| オペレーティングシステム | 要件 |
|---|---|
| Windows |
|
| macOS | |
| Linux |
Java 16以降は、追加の設定を行うことでサポートされます。詳細については、Java 16以降で JDBC ドライバーを使用するを参照してください。
ダウンロード:ODBC ドライバーの手順に従って、ODBC ドライバーのインストーラーを実行します。
クライアントアプリケーション内でドライバーを使用するには、まず Foundry 環境のデータソース名(DSN)の設定を行います。
https://<SUBDOMAIN>.palantirfoundry.com。追加の設定パラメーターと接続 URL を作成する手順については、設定パラメーターを参照してください。
DSN を作成したので、ODBC ソースをサポートするクライアントアプリケーションから参照できます。ODBC ソースに関するクライアントアプリケーションのドキュメントを参照してください。以下は、Foundry とともによく使用されるアプリケーションのセットアップガイドです。
クライアントアプリケーションがサポートしている場合は、Foundry データセットから行を返す SQL クエリをテストします。
Copied!1SELECT * FROM "/Path/To/Dataset" LIMIT 10
クライアントアプリケーションによっては、代わりにプロジェクトの一覧を見てデータセットを選択し、データにアクセスできる場合があります。
ダウンロード:JDBC ドライバーページから JDBC ドライバー(.jar ファイル)をダウンロードします。ダウンロードしたら、クライアントアプリケーションの JDBC 接続設定に関するドキュメントで指定されている適切な場所にファイルを配置します。
JDBC 接続文字列の形式は次のとおりです。
jdbc:foundrysql://<FOUNDRY_HOSTNAME>?Password=<TOKEN>
FOUNDRY_HOSTNAME は Foundry 環境のホスト名です(例:subdomain.palantirfoundry.com)。TOKEN は Foundry 内の設定ページで生成されるセキュリティトークンです。トークンの取得手順については、ユーザー生成トークンのドキュメントを参照してください。その他の認証オプションについては、OAuth を使用して認証するガイドを参照してください。任意のパラメーターは、接続文字列に &OptionalParam=<VALUE> を追加することで指定できます。利用可能なパラメーターの全一覧については、設定パラメーターを参照してください。
JDBC クライアントでドライバークラスを明示的に指定する必要がある場合は、com.palantir.foundry.sql.jdbc.FoundryJdbcDriver を指定します。
クライアントアプリケーションがサポートしている場合は、Foundry データセットから行を返す SQL クエリをテストします。
Copied!1SELECT * FROM "/Path/To/Dataset" LIMIT 10
クライアントアプリケーションによっては、代わりにプロジェクトの一覧を見てデータセットを選択し、データにアクセスできる場合があります。
利用可能な設定パラメーターは ODBC と JDBC で共通です。各ドライバーは、クライアントアプリケーション内で接続文字列を使用する方法、またはクライアントアプリケーションの外部で設定する方法のいずれかで設定できます。
| 接続文字列を使用する場合 | クライアントアプリケーションの外部で設定する場合 | |
|---|---|---|
| ODBC | Driver=FoundrySqlDriver;BaseUrl=<FOUNDRY_HOSTNAME>;Pwd=<TOKEN>;OptionalParamOne=ABC;OptionalParamTwo=XYZ | Windows の ODBC データソースツールを使用して DSN を設定します。パート2. データソース名(DSN)の設定を行うを参照してください。 |
| JDBC | jdbc:foundrysql://<FOUNDRY_HOSTNAME>?Password=<TOKEN>&OptionalParamOne=ABC&OptionalParamTwo=XYZ | foundry.ini config ファイルを使用します。foundry.ini 設定ファイルを使用して JDBC ドライバーを設定するを参照してください。 |
| パラメーター | 接続文字列のキー | 必須 | 説明 |
|---|---|---|---|
| Foundry URL | ODBC BaseUrl / JDBC 該当なし | はい | Foundry の URL。例:https://<SUBDOMAIN>.palantirfoundry.com |
| 認証トークン | ODBC Pwd / JDBC Password | はい | Foundry の UI を使用して生成した認証トークン、または OAuth 認証フローで取得した認証トークン。 |
| データセットブランチ | Branch | いいえ | データセットに対してクエリを実行するブランチ。設定されていない場合、デフォルトは master です。 |
| プロジェクト/カタログ | Catalog | いいえ | ドライバーが表示するテーブルを単一のプロジェクトに制限します。/MyOrg/MyProject などの完全なプロジェクトパスを設定します。このプロパティを設定すると、一部のアプリケーションでテーブルの一覧表示に関する問題を解決できる場合があります。 |
| 認証方式 | AuthMethod | いいえ | 接続に使用する認証方式。指定可能な値:Token(デフォルト)、OauthFlow、または ClientCredentials。OAuth ベースの認証方式の使用方法については、OAuth を使用して認証するを参照してください。 |
| OAuth クライアントID | OauthClientId | いいえ | Foundry に登録され、有効化されているサードパーティアプリケーションのクライアントID。AuthMethod が OauthFlow または ClientCredentials に設定されている場合は必須です。代わりに、アプリケーションのユーザー名項目に設定することもできます。 |
| OAuth クライアントシークレット | OauthClientSecret | いいえ | Foundry に登録され、有効化されているサードパーティアプリケーションのクライアントシークレット。AuthMethod が ClientCredentials に設定されている場合は必須です。代わりに、アプリケーションのパスワード項目に設定することもできます。 |
| プロキシホスト | ProxyHost | いいえ | Foundry へのアクセスに必要な場合に指定するプロキシホスト。先頭に http を追加せず、myproxy.example.com のように指定します。Windows では、プロキシが Windows のデフォルトプロキシとして設定されている場合、ドライバーが自動的にそのプロキシを使用するため、このパラメーターを使用する必要がない場合があります。 |
| プロキシポート | ProxyPort | いいえ | プロキシポート。プロキシホストが設定されている場合は必須です。 |
| プロキシユーザー名 | ProxyUsername | いいえ | プロキシで認証が必要な場合に指定するプロキシユーザー名。HTTP 基本認証のみがサポートされています。 |
| プロキシパスワード | ProxyPassword | いいえ | プロキシパスワード。プロキシユーザー名が設定されている場合は必須です。 |
| プロキシの自動検出 | EnableProxyAutoDetect | いいえ | オペレーティングシステムで設定されているプロキシを、ドライバーが自動的に読み込むかどうか(プロキシが設定されている場合)。指定可能な値:true(デフォルト)または false。資格情報が必要な場合は、引き続き手動で指定する必要があります。自動検出を無効にして直接接続を使用するには、false に設定します。 |
| SSL トラストストアのパス | TrustStorePath | いいえ | .pem ファイル形式のカスタム SSL 証明書トラストストアへのパス。Foundry の証明書がオペレーティングシステムのデフォルトのトラストストアに存在しない場合にのみ必須です。 |
| SQL 方言 | Dialect | いいえ | 接続で使用する SQL 方言。指定可能な値:ODBC(デフォルト)、ANSI、または SPARK。 |
| UTC タイムスタンプ | ODBC UtcTimestamps / JDBC 該当なし | いいえ | タイムスタンプを UTC とローカルタイムゾーンのどちらで返すか。指定可能な値:true または false(デフォルト)。BI ツールを使用してレポートを公開する場合、この設定はローカルの DSN にのみ適用され、公開後は異なる場合があります。JDBC のタイムスタンプは常に UTC で返されるため、この設定は ODBC のタイムスタンプにのみ適用されます。 |
次のテーブルは、Foundry のデータ型が ODBC および JDBC のデータ型にどのようにマッピングされるかを示しています。
| Foundry のデータ型 | ODBC のデータ型 | JDBC のデータ型 |
|---|---|---|
| 配列 | JSON にエンコードされ、文字列(SQL_WVARCHAR)として返されます。 | ODBC と同じ |
| バイナリ | 先頭に 0x を付けた16進数の文字列(SQL_WVARCHAR)としてエンコードされます。 | byte[] |
| ブール値 | SQL_BIT | boolean |
| Byte | SQL_TINYINT | byte |
| 日付 | SQL_DATE | java.sql.Date |
| Decimal | SQL_DECIMAL | java.math.BigDecimal |
| Double | SQL_DOUBLE | double |
| Float | SQL_DOUBLE | float |
| Integer | SQL_INTEGER | int |
| Long | SQL_BIGINT | long |
| マップ | JSON にエンコードされ、文字列(SQL_WVARCHAR)として返されます。 | ODBC と同じ |
| Short | SQL_SMALLINT | short |
| 文字列 | SQL_WVARCHAR。文字列列の最大長パラメーターは、StringColumnLength プロパティで設定できます。 | java.lang.String |
| 構造体 | JSON にエンコードされ、文字列(SQL_WVARCHAR)として返されます。 | ODBC と同じ |
| タイムスタンプ | SQL_TIMESTAMP。デフォルトでは、時刻はシステムのローカルタイムゾーンに変換されます。これは UtcTimestamps プロパティで変更できます。 | UTC タイムゾーンの java.sql.Timestamp。UtcTimestamps プロパティは影響しません。 |
次のテーブルは、利用可能な SQL 方言の SQL 構文および機能の一部を示しています(設定パラメーターの Dialect パラメーターを参照してください)。
| Spark(推奨) | ANSI、ODBC | |
|---|---|---|
| 識別子(列名、テーブル名)を引用符で囲む | バッククォート:SELECT * FROM `/Space/Project/...` | 二重引用符:SELECT * FROM "/Space/Project/..." |
| 文字列リテラルを引用符で囲む | 一重引用符または二重引用符:WHERE column = 'value' OR column = "value" | 一重引用符:WHERE column = 'value' |
| 日付リテラル | SELECT DATE 'yyyy-mm-dd' | Spark と同じ |
| 現在の日付 | SELECT CURRENT_DATE | Spark と同じ |
| その他の参考資料 | Spark SQL ガイド:SQL リファレンス ↗ | サポートされている関数:ODBC リファレンス ↗ |
SQL クエリでは、パスまたは RID でデータセットを参照できます。SQL 構文は、接続に設定された方言によって異なります(設定パラメーターを参照)。
-- 基本的な SELECT
SELECT * FROM `/Path/To/Dataset`
-- WHERE 句で絞り込む
SELECT * FROM `/Path/To/Dataset`
WHERE years < 13 AND category = 'Z';
-- JOIN を使用する
SELECT *
FROM `/Path/To/Dataset_A` a
JOIN `/Path/To/Dataset_B` b
ON a.id = b.fk_id;
-- 基本的な SELECT
SELECT * FROM "/Path/To/Dataset";
-- WHERE 句で絞り込む
SELECT * FROM "/Path/To/Dataset"
WHERE years < 13 AND category = 'Z';
-- JOIN を使用する
SELECT *
FROM "/Path/To/Dataset_A" a
JOIN "/Path/To/Dataset_B" b
ON a.id = b.fk_id;
データセット識別子の使用方法の詳細については、ガイド:データセットの RID またはファイルパスを特定するを参照してください。
単一の Foundry アカウントに紐づく認証トークンを手動で生成する方法に加えて、ODBC および JDBC ドライバーは、追加の認証オプションとして OAuth 2.0 フローをサポートしています。
可能な場合は、トークンの生成よりも、これらの OAuth ベースのオプションを使用することを推奨します。セキュリティが高く、個人ユーザーのトークンを共有せずに、埋め込み接続文字列を共同で使用できるためです。
ODBC ドライバーは、Windows 上で実行される場合、自動の OAuth ログインおよび認可フローをサポートします。このフローは、コンピューターにインストールされたデスクトップアプリケーションでのみサポートされ、Web ブラウザーを通じてアクセスするアプリケーションではサポートされません。
このフローを設定するには、次の手順に沿って進めます。
http://127.0.0.1/foundrydriver/oauthredirect に設定します。AuthMethod = OauthFlowOauthClientId = <YOUR_CLIENT_ID>OauthClientId の代わりにアプリケーションのユーザー名項目にクライアント ID を設定して、アプリ内で資格情報を設定できるようにすることもできます。この場合も AuthMethod の設定は必要です。次にクライアントアプリケーションでドライバーを使用すると、ブラウザーで Foundry へのログインを求められます。その後は、ドライバーを使用するたびにログインする必要はありませんが、ときどき再度ログインを求められる場合があります。
個人ユーザーに関連付けられていないワークフロー(ダッシュボードのデータをスケジュールに従って更新する場合など)には、OAuth クライアント資格情報グラントタイプを持つサードパーティアプリケーションを活用した、OAuth ベースのサービスユーザーを推奨します。ドライバーは、有効期間の長いクライアント ID とシークレットのペアを使用して Foundry に認証します。このペアは、手動で作成したサービスアカウントと生成したトークンよりも管理が容易です。
サービスユーザーの OAuth を設定するには、次の手順に沿って進めます。
AuthMethod = ClientCredentialsOauthClientId = <YOUR_CLIENT_ID>OauthClientSecret = <YOUR_CLIENT_SECRET>OauthClientId と OauthClientSecret の代わりにアプリケーションのユーザー名項目とパスワード項目にクライアント ID とクライアントシークレットを設定して、アプリ内で資格情報を設定できるようにすることもできます。この場合も AuthMethod の設定は必要です。これで、ドライバーは OAuth アプリのサービスユーザーとして Foundry に接続します。
アプリケーション開発者は、独自の OAuth クライアントを実行してサードパーティアプリケーションとの OAuth ログインフローを管理するアプリケーションに、ODBC および JDBC ドライバーを統合できます。このオプションでは、Foundry での認証にユーザーをリダイレクトする処理や、ユーザーが認証と認可を完了した後の認可レスポンスの処理など、ログインフローを完全に制御できます。Foundry ユーザーに代わってアクセストークンを取得するには、Foundry 用の OAuth2 クライアントを作成するドキュメントを参照してください。
アプリケーションがユーザーに代わってアクセストークンを取得したら、標準のパスワードプロパティを通じてドライバーに渡すことができます。
Pwd / JDBC Password = <ACCESS_TOKEN_OBTAINED_FROM_TOKEN_ENDPOINT>問題のトラブルシューティングのためにドライバーのログ記録を有効にする必要がある場合は、次の手順に沿って進めます。管理者権限が必要になる場合があります。
My Documents\Foundry Driver logs など、ログを保存するフォルダーを作成します。クライアントアプリケーションを再起動し、トラブルシューティングの対象となる操作を実行します。選択したフォルダーにログが表示されるはずです。Palantir またはほかのサポートチームのサポートが必要な場合は、このフォルダーを zip ファイルに圧縮して共有できます。
トラブルシューティングが完了したら、ODBC データソースツールに戻り、ログレベルを OFF に設定してログ記録を無効にします。パフォーマンスを向上させるため、この手順を推奨します。
JDBC ドライバーは、Java アプリケーションがクラスパス上に提供する SLF4J ロガーを検出します。具体的には、アプリケーションで org.slf4j.impl.StaticLoggerBinder クラスと org.slf4j.impl.StaticMDCBinder クラスの実装を提供する必要があります。slf4j-simple(バージョン 1.X)をプロジェクトの依存関係に追加することで、デフォルトの実装を使用できます。
SLF4J ロガーを設定していない場合、ドライバーが初めて読み込まれたときに、次のメッセージが出力されます。
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
SLF4J: Failed to load class "org.slf4j.impl.StaticMDCBinder".
SLF4J: Defaulting to no-operation MDCAdapter implementation.
SLF4J: See http://www.slf4j.org/codes.html#no_static_mdc_binder for further details.
foundry.ini 設定ファイルを使用して JDBC ドライバーを設定するJDBC ドライバーは、接続文字列に加えて設定ファイルでも設定できます。設定ファイルを使用するには、JDBC の .jar ファイルがあるディレクトリと同じディレクトリに foundry.ini という名前のファイルを作成します。
.ini ファイルは、low-priority と high-priority の2つのセクションに分かれています。low-priority セクションで指定したプロパティは、接続文字列のプロパティよりも優先度が低くなります。つまり、low-priority セクションと接続文字列に同じプロパティが指定されている場合、接続文字列の値が使用されます。一方、high-priority セクションで指定したプロパティは、接続プロパティよりも優先されます。これは、開発用マシンからサーバーにレポートを公開し、開発用のプロパティよりもサーバーのプロパティを優先する必要がある場合に役立ちます。
foundry.ini ファイルの例:
[high-priority]
proxyHost=myproxy.abc
proxyPort=1234
[low-priority]
branch=production-branch
JDBC ドライバーがデフォルトでサポートする Java バージョンは、最大で Java 15 です。Java 16 以降でドライバーを使用するには、アプリケーション内で Java ランタイムの --add-opens オプションを java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED に設定します。
Copied!1java --add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED -jar your_application.jar
場合によっては、_JAVA_OPTIONS 環境変数でオプションを指定する方が便利です。この環境変数は、一部の Java 環境で自動的に検出され、適用されます。Unix ベースのシステムでは、export コマンドを使用して設定できます。
export _JAVA_OPTIONS="--add-opens=java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED"