注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Foundry Datasets のための ODBC および JDBC ドライバーは、クライアントアプリケーション(BI ツールや ETL ツールなど)からデータセットにアクセスするための読み取り専用の SQL ベースのインターフェースを提供します。ユーザーは Foundry でプロジェクトとデータセットを探索し、SQL クエリを実行して表形式のデータにアクセスできます。ドライバーはサーバー側で SQL クエリを処理し実行するために Foundry SQL Server を利用します。
クライアントアプリケーションが両方のプロトコルをサポートしている場合、JDBC の使用を ODBC よりも推奨します。JDBC ドライバーはインストールや設定が簡単で、データのローディングがより高性能です。
ドライバーは、Foundry データセットに対する SQL クエリを処理し実行するために Foundry SQL Server に依存しています。アーキテクチャやクエリパフォーマンスの向上方法について詳しく知るために、Foundry SQL Server のアーキテクチャ の文書を参照してください。
オペレーティングシステム | 要件 |
---|---|
Windows |
|
現在、ODBC ドライバーは Windows のみと互換性があります。
オペレーティングシステム | 要件 |
---|---|
Windows |
|
macOS | |
Linux |
Java 16+ は追加の設定でサポートされます。詳細は下の ガイド を参照してください。
ダウンロード: ODBC ドライバー に記載の指示に従って、ODBC ドライバーのインストーラーを実行します。
ドライバーをクライアントアプリケーション内で使用するには、まず Foundry 環境のデータソース名(DSN)設定を設定します。
https://<SUBDOMAIN>.palantirfoundry.com
。接続 URL の作成方法や追加の設定パラメーターについては、設定パラメーター を参照してください。
DSN を作成したので、ODBC ソースをサポートするクライアントアプリケーションから参照できます。ODBC ソースについてのクライアントアプリケーションの文書を参照してください。以下に、Foundry で一般的に使用されるアプリケーションのセットアップガイドをいくつか示します:
クライアントアプリケーションがサポートしている場合、Foundry データセットから行を返す SQL クエリをテストします:
-- データセットから最初の10件のデータを選択する
SELECT * FROM "/Path/To/Dataset" LIMIT 10
クライアントアプリケーションでは、プロジェクトを閲覧し、データにアクセスするためのデータセットを選択できるかもしれません。
ダウンロード: JDBC ドライバー ページから JDBC ドライバー (.jar ファイル) をダウンロードします。ダウンロードしたら、クライアントアプリケーションのドキュメンテーションで指定されている場所にファイルを配置して、JDBC 接続の設定を行います。
JDBC 接続文字列の形式は次のとおりです:
jdbc:foundrysql://<FOUNDRY_HOSTNAME>?Password=<TOKEN>
上記のコードは、Foundryデータベースに接続するためのJDBC (Java Database Connectivity) 接続文字列です。
<FOUNDRY_HOSTNAME>
はデータベースのホスト名を指定します。ここには、データベースがホストされているサーバーのホスト名を入力します。<TOKEN>
はデータベースへの接続に必要なパスワードを指定します。この部分には、あなたが持っている特定のデータベースへのアクセス権を証明するためのトークンを入力します。この形式の接続文字列は、Javaでデータベースに接続するための標準的な方法です。
FOUNDRY_HOSTNAME
はユーザーのFoundry環境のホスト名(subdomain.palantirfoundry.com
など)です。TOKEN
はFoundry内の設定ページから生成されるセキュリティトークンです。トークンの取得方法については、ユーザー生成トークンのドキュメンテーションを参照してください。追加の認証オプションについては、OAuthを使用して認証するガイドを確認してください。オプションのパラメーターは、接続文字列に&OptionalParam=<VALUE>
を追加することで指定できます。利用可能なパラメーターの全リストについては、設定パラメーターを参照してください。
JDBCクライアントがドライバークラスを明示的に指定する必要がある場合は、com.palantir.foundry.sql.jdbc.FoundryJdbcDriver
を指定してください。
クライアントアプリケーションがサポートしている場合は、Foundryデータセットから行を返すSQLクエリをテストします:
-- 以下のクエリでは、指定されたデータセットから最初の10件のデータを取得します。
SELECT * 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 config ファイルを使用して JDBC ドライバーを設定しますを参照してください。 |
パラメーター | 接続文字列キー | 必須 | 説明 |
---|---|---|---|
Foundry URL | ODBC BaseUrl / JDBC N/A | はい | Foundry URL, 例えば https://<SUBDOMAIN>.palantirfoundry.com |
Auth Token | ODBC Pwd / JDBC Password | はい | 認証トークン Foundry UIを使用して生成 または OAuth認証フローを通じて取得。 |
データセットブランチ | Branch | いいえ | クエリされるデータセットのブランチ。設定されていない場合、これはデフォルトで master になります。 |
プロジェクト/カタログ | Catalog | いいえ | ドライバーが表示するテーブルを単一のプロジェクトに制限します。完全なプロジェクトパス、例えば /MyOrg/MyProject に設定します。このプロパティを設定すると、一部のアプリケーションでテーブル閲覧問題を解決できます。 |
Auth Method | AuthMethod | いいえ | 接続に使用する認証方法。許可される値:Token (デフォルト)、OauthFlow 、または ClientCredentials 。OAuthベースの認証方法の使用についてのガイダンスは、OAuthを使用して認証するを参照してください。 |
OAuth Client ID | OauthClientId | いいえ | Foundryに登録され、有効化されたサードパーティアプリケーションのクライアントID。AuthMethod がOauthFlow またはClientCredentials に設定されている場合、必須です。 |
OAuth Client Secret | OauthClientSecret | いいえ | Foundryに登録され、有効化されたサードパーティアプリケーションのクライアントシークレット。AuthMethod がClientCredentials に設定されている場合、必須です。 |
Proxy host | ProxyHost | いいえ | Foundryにアクセスするために必要なプロキシホスト。myproxy.example.com のように指定する必要がありますが、http を先頭に追加する必要はありません。Windowsでは、ドライバーはデフォルトのWindowsプロキシとして設定されているプロキシを自動的に使用するため、このパラメーターを使用する必要はないかもしれません。 |
Proxy port | ProxyPort | いいえ | プロキシポート。プロキシホストが設定されている場合、必須です。 |
Proxy username | ProxyUsername | いいえ | プロキシが認証を必要とする場合のプロキシユーザー名。HTTP基本認証のみがサポートされています。 |
Proxy password | ProxyPassword | いいえ | プロキシパスワード。プロキシユーザー名が設定されている場合、必須です。 |
Proxy auto-detect | EnableProxyAutoDetect | いいえ | ドライバーが設定されたオペレーティングシステムのプロキシを自動的にロードするかどうか(設定されている場合)。許可される値:true (デフォルト)または false 。資格情報が必要な場合、それらはまだ手動で指定する必要があります。直接接続を使用するためには false に設定します。 |
SSL trust store path | TrustStorePath | いいえ | .pem ファイル形式のカスタムSSL証明書トラストストアへのパス。Foundry証明書がデフォルトのオペレーティングシステムトラストストアに存在しない場合のみ必要です。 |
SQL方言 | Dialect | いいえ | 接続で使用されるSQL方言。許可される値:ODBC (デフォルト)、ANSI 、または SPARK 。 |
UTC Timestamps | ODBC UtcTimestamps / JDBC N/A | いいえ | タイムスタンプがUTCまたはローカルタイムゾーンで返されるべきかどうか。許可される値:true または false (デフォルト)。BIツールを使用し、レポートを公開するとき、この設定はローカルDSNにのみ適用され、公開後に異なる場合があります。この設定はOBDCタイムスタンプにのみ適用され、JDBCタイムスタンプは常にUTCとして返されます。 |
次の表は、Foundryの型がODBCとJDBCの型にどのようにマッピングされるかを示しています。
Foundry型 | ODBC型 | JDBC型 |
---|---|---|
配列 | JSONにエンコードされ、文字列(SQL_WVARCHAR )として返されます。 | ODBCと同じ |
バイナリ | 0x に続く16進数の文字列(SQL_WVARCHAR )としてエンコードされます。 | byte[] |
ブーリアン | SQL_BIT | boolean |
バイト | SQL_TINYINT | byte |
日付 | SQL_DATE | java.sql.Date |
小数 | SQL_DECIMAL | java.math.BigDecimal |
ダブル | SQL_DOUBLE | double |
浮動小数点数 | SQL_DOUBLE | float |
整数 | SQL_INTEGER | int |
ロング | SQL_BIGINT | long |
マップ | JSONにエンコードされ、文字列(SQL_WVARCHAR )として返されます。 | ODBCと同じ |
ショート | SQL_SMALLINT | short |
文字列 | SQL_WVARCHAR . 最大文字列行長パラメーターは StringColumnLength プロパティを介して設定できます。 | java.lang.String |
構造体 | JSONにエンコードされ、文字列(SQL_WVARCHAR )として返されます。 | ODBCと同じ |
タイムスタンプ | SQL_TIMESTAMP . デフォルトでは、時間はシステムのローカルタイムゾーンに変換されます。これは UtcTimestamps プロパティを介して変更できます。 | UTCタイムゾーンの java.sql.Timestamp 。UtcTimestamps プロパティは影響を与えません。 |
次の表は、利用可能なSQL方言(設定パラメーターのDialect
パラメーター参照)の一部のSQL構文と機能を概説しています。
Spark(推奨) | ANSI, ODBC | |
---|---|---|
識別子(行名、テーブル名)の引用 | バックティック:SELECT * FROM `/Namespace/Project/...` | ダブルクォート:SELECT * FROM "/Namespace/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';
-- yearsが13未満で、カテゴリが'Z'のデータを選択します
-- JOIN の使用
SELECT *
FROM `/Path/To/Dataset_A` a
JOIN `/Path/To/Dataset_B` b
ON a.id = b.fk_id;
-- データセットAとBを結合し、それぞれのidと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ログインおよび承認フローをサポートしています。以下の手順に従って、このフローを設定してください。
http://127.0.0.1/foundrydriver/oauthredirect
に設定します。AuthMethod
= OauthFlow
OauthClientId
= <YOUR_CLIENT_ID>
次に、クライアントアプリケーションでドライバーを使用すると、ブラウザでFoundryにログインするように求められます。その後、ドライバーを使用するたびにログインする必要はありませんが、たまに再度プロンプトされることがあります。
個々のユーザーに関連付けられていないワークフロー(ダッシュボードのデータをスケジュールに従って更新するなど)については、OAuth Client Credentials付与タイプを持つサードパーティアプリケーションを利用したOAuthベースのサービスユーザーをお勧めします。ドライバーは、手動で作成された生成トークンを持つサービスアカウントよりも管理しやすい長寿命のクライアントID/シークレットペアでFoundryに認証します。
サービスユーザーのOAuthを設定するには、以下の手順に従ってください。
AuthMethod
= ClientCredentials
OauthClientId
= <YOUR_CLIENT_ID>
OauthClientSecret
= <YOUR_CLIENT_SECRET>
これで、ドライバーはOAuthアプリのサービスユーザーとしてFoundryに接続します。
アプリケーション開発者は、ODBCおよびJDBCドライバーを、自分のOAuthクライアントを実行してサードパーティアプリケーションとのOAuthログインフローを管理するアプリケーションに統合できます。このオプションにより、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: "org.slf4j.impl.StaticLoggerBinder" クラスのロードに失敗しました。
SLF4J: Defaulting to no-operation (NOP) logger implementation // SLF4J: 操作なし(NOP)ロガー実装にデフォルト設定されます。
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. // SLF4J: 詳細は http://www.slf4j.org/codes.html#StaticLoggerBinder を参照してください。
SLF4J: Failed to load class "org.slf4j.impl.StaticMDCBinder". // SLF4J: "org.slf4j.impl.StaticMDCBinder" クラスのロードに失敗しました。
SLF4J: Defaulting to no-operation MDCAdapter implementation. // SLF4J: 操作なし MDCAdapter 実装にデフォルト設定されます。
SLF4J: See http://www.slf4j.org/codes.html#no_static_mdc_binder for further details. // SLF4J: 詳細は http://www.slf4j.org/codes.html#no_static_mdc_binder を参照してください。
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 バージョン 15 をサポートしています。Java バージョン 16 以降でドライバを使用するには、アプリケーション内の --add-opens
Java ランタイムオプションを java.base/java.nio=ALL-UNNAMED
に設定してください。
Copied!1 2 3 4 5
// java --add-opens=オプションはJavaモジュールの特定のパッケージを開くために使用されます。 // java.base/java.nioはJavaの基本モジュールで、java.nioパッケージを開きます。 // ALL-UNNAMEDは開いたパッケージをすべての無名モジュールに利用可能にします。 // -jarオプションはjarファイルを実行します。ここではyour_application.jarというjarファイルを実行しています。 java --add-opens=java.base/java.nio=ALL-UNNAMED -jar your_application.jar
場合によっては、オプションを _JAVA_OPTIONS
環境変数で指定する方が便利な場合があります。これは、一部のJava環境で自動的に検出され、適用されます。Unixベースのシステムでは、export
コマンドを使用して設定することができます:
# Javaの環境変数を設定します。このコマンドはjava.baseパッケージ内のjava.nioパッケージを無名モジュールに開放します。
export _JAVA_OPTIONS="--add-opens=java.base/java.nio=ALL-UNNAMED"