注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

Foundry データセット用 ODBC および JDBC ドライバー

Foundry データセット用の ODBC および JDBC ドライバーは、クライアントアプリケーション(BI ツールや ETL ツールなど)からデータセットにアクセスするための、読み取り専用の SQL ベースのインターフェースを提供します。ユーザーは Foundry 内のプロジェクトやデータセットを探索し、SQL クエリを実行して表形式のデータにアクセスできます。ドライバーはサーバー側で Foundry SQL Server を利用して、SQL クエリを処理および実行します。

JDBC と ODBC のどちらを使うべきですか?

クライアントアプリケーションが両方のプロトコルをサポートしている場合は、ODBC よりも JDBC の使用を推奨します。JDBC ドライバーはインストールと設定が容易で、データの読み込みのパフォーマンスも優れています。

Foundry SQL Server

ドライバーは Foundry SQL Server を使用して、Foundry データセットに対する SQL クエリを処理および実行します。アーキテクチャやクエリのパフォーマンスを改善する方法について、詳しくは Foundry SQL Server のアーキテクチャのドキュメントを参照してください。

システム要件

ODBC

オペレーティングシステム要件
Windows

ODBC ドライバーは現在、Windows のみに対応しています。

JDBC

オペレーティングシステム要件
Windows
  • 最小 Java バージョン: Java 11
  • 最大 Java バージョン: Java 15
macOS
Linux

Java 16以降は、追加の設定を行うことでサポートされます。詳細については、Java 16以降で JDBC ドライバーを使用するを参照してください。

セットアップガイド

ODBC

パート1. ODBC ドライバーをインストールする

ダウンロード:ODBC ドライバーの手順に従って、ODBC ドライバーのインストーラーを実行します。

パート2. データソース名(DSN)の設定を行う

クライアントアプリケーション内でドライバーを使用するには、まず Foundry 環境のデータソース名(DSN)の設定を行います。

  1. 開始メニューで ODBC を検索し、ODBC データソースツールを開きます。64ビットバージョンを選択します。
  2. ユーザー DSN タブまたはシステム DSN タブで、追加… をクリックします。
  3. ドライバーの一覧から FoundrySqlDriver を選択します。
  4. 次の必須パラメーターを入力します。
    1. データソース名: マシン上のデータソースの名前です。
    2. サーバー: Foundry 環境の URL です。例:https://<SUBDOMAIN>.palantirfoundry.com。
    3. トークン: Foundry 内の設定ページで生成されるセキュリティトークンです。トークンの取得手順については、ユーザー生成トークンのドキュメントを参照してください。その他の認証オプションについては、OAuth を使用して認証するガイドを参照してください。
  5. テスト… をクリックして接続が成功することを確認し、OK をクリックして DSN の設定を保存します。

追加の設定パラメーターと接続 URL を作成する手順については、設定パラメーターを参照してください。

パート3. クライアントアプリケーション内で DSN を設定する

DSN を作成したので、ODBC ソースをサポートするクライアントアプリケーションから参照できます。ODBC ソースに関するクライアントアプリケーションのドキュメントを参照してください。以下は、Foundry とともによく使用されるアプリケーションのセットアップガイドです。

(任意)パート4:SQL クエリを実行する

クライアントアプリケーションがサポートしている場合は、Foundry データセットから行を返す SQL クエリをテストします。

Copied!
1 SELECT * FROM "/Path/To/Dataset" LIMIT 10

クライアントアプリケーションによっては、代わりにプロジェクトの一覧を見てデータセットを選択し、データにアクセスできる場合があります。

JDBC

パート1:JDBC ドライバーをインストールする

ダウンロード:JDBC ドライバーページから JDBC ドライバー(.jar ファイル)をダウンロードします。ダウンロードしたら、クライアントアプリケーションの JDBC 接続設定に関するドキュメントで指定されている適切な場所にファイルを配置します。

パート2: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 を指定します。

(任意)パート3:SQL クエリを実行する

クライアントアプリケーションがサポートしている場合は、Foundry データセットから行を返す SQL クエリをテストします。

Copied!
1 SELECT * FROM "/Path/To/Dataset" LIMIT 10

クライアントアプリケーションによっては、代わりにプロジェクトの一覧を見てデータセットを選択し、データにアクセスできる場合があります。

リファレンス

設定パラメーター

利用可能な設定パラメーターは ODBC と JDBC で共通です。各ドライバーは、クライアントアプリケーション内で接続文字列を使用する方法、またはクライアントアプリケーションの外部で設定する方法のいずれかで設定できます。

接続文字列を使用する場合クライアントアプリケーションの外部で設定する場合
ODBCDriver=FoundrySqlDriver;BaseUrl=<FOUNDRY_HOSTNAME>;Pwd=<TOKEN>;OptionalParamOne=ABC;OptionalParamTwo=XYZWindows の ODBC データソースツールを使用して DSN を設定します。パート2. データソース名(DSN)の設定を行うを参照してください。
JDBCjdbc:foundrysql://<FOUNDRY_HOSTNAME>?Password=<TOKEN>&OptionalParamOne=ABC&OptionalParamTwo=XYZfoundry.ini config ファイルを使用します。foundry.ini 設定ファイルを使用して JDBC ドライバーを設定するを参照してください。

パラメーターリファレンス

パラメーター接続文字列のキー必須説明
Foundry URLODBC 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 クライアントIDOauthClientIdいいえ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_BITboolean
ByteSQL_TINYINTbyte
日付SQL_DATEjava.sql.Date
DecimalSQL_DECIMALjava.math.BigDecimal
DoubleSQL_DOUBLEdouble
FloatSQL_DOUBLEfloat
IntegerSQL_INTEGERint
LongSQL_BIGINTlong
マップJSON にエンコードされ、文字列(SQL_WVARCHAR)として返されます。ODBC と同じ
ShortSQL_SMALLINTshort
文字列SQL_WVARCHAR。文字列列の最大長パラメーターは、StringColumnLength プロパティで設定できます。java.lang.String
構造体JSON にエンコードされ、文字列(SQL_WVARCHAR)として返されます。ODBC と同じ
タイムスタンプSQL_TIMESTAMP。デフォルトでは、時刻はシステムのローカルタイムゾーンに変換されます。これは UtcTimestamps プロパティで変更できます。UTC タイムゾーンの java.sql.Timestamp。UtcTimestamps プロパティは影響しません。

SQL 方言

次のテーブルは、利用可能な 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_DATESpark と同じ
その他の参考資料Spark SQL ガイド:SQL リファレンス ↗サポートされている関数:ODBC リファレンス ↗

使用ガイド

SQL を使用して Foundry データセットをクエリする

SQL クエリでは、パスまたは RID でデータセットを参照できます。SQL 構文は、接続に設定された方言によって異なります(設定パラメーターを参照)。

SPARK 方言

-- 基本的な 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;

ODBC & ANSI 方言

-- 基本的な 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 またはファイルパスを特定するを参照してください。

OAuth を使用して認証する

単一の Foundry アカウントに紐づく認証トークンを手動で生成する方法に加えて、ODBC および JDBC ドライバーは、追加の認証オプションとして OAuth 2.0 フローをサポートしています。

  • 個人ユーザー: ドライバーがブラウザーでログインプロンプトを開き、Foundry に認証できるようにします。
  • サービスユーザー:ドライバーは、Foundry に登録されたサードパーティアプリケーションにアタッチされたサービスユーザーとして Foundry に接続します。
  • 外部アプリケーション(開発者向け):サードパーティアプリケーションが Foundry の OAuth システムと連携し、ユーザーに代わってトークンを取得します。

可能な場合は、トークンの生成よりも、これらの OAuth ベースのオプションを使用することを推奨します。セキュリティが高く、個人ユーザーのトークンを共有せずに、埋め込み接続文字列を共同で使用できるためです。

個人ユーザー(Windows 上の ODBC のみ)

ODBC ドライバーは、Windows 上で実行される場合、自動の OAuth ログインおよび認可フローをサポートします。このフローは、コンピューターにインストールされたデスクトップアプリケーションでのみサポートされ、Web ブラウザーを通じてアクセスするアプリケーションではサポートされません。

このフローを設定するには、次の手順に沿って進めます。

  1. (Foundry 管理者が実施) Foundry にサードパーティアプリケーションを登録し、次の設定オプションを指定します。
    1. クライアントのタイプ: ほとんどの場合、パブリッククライアントを推奨します。ユースケースで必要な場合は、機密クライアントもサポートされます。
    2. 認可グラントのタイプ: 認可コードグラントを有効にし、リダイレクト URL を http://127.0.0.1/foundrydriver/oauthredirect に設定します。
    3. アプリケーションが登録済みかつ有効であることを確認します。
    4. アプリケーションの詳細画面からアプリケーションのクライアント ID をコピーし、自分のマシンで ODBC 接続を設定するユーザーに共有します。
  2. Foundry 管理者からクライアント ID を受け取ったら、次の ODBC 接続パラメーターを設定します。
    1. AuthMethod = OauthFlow
    2. OauthClientId = <YOUR_CLIENT_ID>
      または、OauthClientId の代わりにアプリケーションのユーザー名項目にクライアント ID を設定して、アプリ内で資格情報を設定できるようにすることもできます。この場合も AuthMethod の設定は必要です。
  3. (任意)Windows の ODBC 管理者アプリでこれらの設定を行う場合は、テストを選択してログインプロンプトを表示し、ログインが機能することを確認できます。

次にクライアントアプリケーションでドライバーを使用すると、ブラウザーで Foundry へのログインを求められます。その後は、ドライバーを使用するたびにログインする必要はありませんが、ときどき再度ログインを求められる場合があります。

サービスユーザー

個人ユーザーに関連付けられていないワークフロー(ダッシュボードのデータをスケジュールに従って更新する場合など)には、OAuth クライアント資格情報グラントタイプを持つサードパーティアプリケーションを活用した、OAuth ベースのサービスユーザーを推奨します。ドライバーは、有効期間の長いクライアント ID とシークレットのペアを使用して Foundry に認証します。このペアは、手動で作成したサービスアカウントと生成したトークンよりも管理が容易です。

サービスユーザーの OAuth を設定するには、次の手順に沿って進めます。

  1. (Foundry 管理者が実施) Foundry にサードパーティアプリケーションを登録します。
    1. クライアントのタイプ: 機密クライアントを選択します。
    2. 認可グラントのタイプ: クライアント資格情報グラントを有効にし、クライアント ID とクライアントシークレットのペアを安全な場所に必ず保管してください。
    3. アプリケーションが登録済みかつ有効であることを確認します。
    4. 生成されたサービスユーザーに、ODBC または JDBC ドライバー経由でアクセスするすべてのデータセットへのアクセス権が付与されていることを確認します。アプリケーション用に生成されたサービスユーザーは、クライアント資格情報グラントの詳細パネルに表示されます。
  2. ドライバーを設定する際に、次の設定パラメーターを設定します。
    1. AuthMethod = ClientCredentials
    2. OauthClientId = <YOUR_CLIENT_ID>
    3. OauthClientSecret = <YOUR_CLIENT_SECRET>
      または、OauthClientId と OauthClientSecret の代わりにアプリケーションのユーザー名項目とパスワード項目にクライアント ID とクライアントシークレットを設定して、アプリ内で資格情報を設定できるようにすることもできます。この場合も AuthMethod の設定は必要です。

これで、ドライバーは OAuth アプリのサービスユーザーとして Foundry に接続します。

外部アプリケーション(開発者向け)

アプリケーション開発者は、独自の OAuth クライアントを実行してサードパーティアプリケーションとの OAuth ログインフローを管理するアプリケーションに、ODBC および JDBC ドライバーを統合できます。このオプションでは、Foundry での認証にユーザーをリダイレクトする処理や、ユーザーが認証と認可を完了した後の認可レスポンスの処理など、ログインフローを完全に制御できます。Foundry ユーザーに代わってアクセストークンを取得するには、Foundry 用の OAuth2 クライアントを作成するドキュメントを参照してください。

アプリケーションがユーザーに代わってアクセストークンを取得したら、標準のパスワードプロパティを通じてドライバーに渡すことができます。

  • ODBC Pwd / JDBC Password = <ACCESS_TOKEN_OBTAINED_FROM_TOKEN_ENDPOINT>

ODBC ドライバーでログ記録を有効にする

問題のトラブルシューティングのためにドライバーのログ記録を有効にする必要がある場合は、次の手順に沿って進めます。管理者権限が必要になる場合があります。

  1. My Documents\Foundry Driver logs など、ログを保存するフォルダーを作成します。
  2. Windows の ODBC データソースツールを開きます。Windows の検索バーで「ODBC」を検索すると見つかります。64ビット版を選択します。
  3. システム DSN タブを開きます。FoundrySql ソースを選択し、設定を選択します。ログ記録の設定は Foundry ドライバーを使用するすべてのデータソースに適用されるため、どの Foundry データソースを選択してもかまいません。
  4. 設定ウィンドウでログ記録オプションを選択します。
  5. ログレベルを DEBUG に設定します。ログのパスを、先ほど作成したフォルダーに設定します。
  6. OK を選択して設定を保存します。

クライアントアプリケーションを再起動し、トラブルシューティングの対象となる操作を実行します。選択したフォルダーにログが表示されるはずです。Palantir またはほかのサポートチームのサポートが必要な場合は、このフォルダーを zip ファイルに圧縮して共有できます。

トラブルシューティングが完了したら、ODBC データソースツールに戻り、ログレベルを OFF に設定してログ記録を無効にします。パフォーマンスを向上させるため、この手順を推奨します。

JDBC ドライバーでログ記録を有効にする

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

Java 16 以降で JDBC ドライバーを使用する

JDBC ドライバーがデフォルトでサポートする Java バージョンは、最大で Java 15 です。Java 16 以降でドライバーを使用するには、アプリケーション内で Java ランタイムの --add-opens オプションを java.base/java.nio=org.apache.arrow.memory.core,ALL-UNNAMED に設定します。

例:Java コマンド

Copied!
1 java --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"