PostgreSQL での横串検索ーの実行
プレビュー
この機能はパブリックプレビュー段階です。
この記事では、Databricks によって管理されていない PostgreSQL データに対してフェデレーション クエリを実行するためにレイクハウスフェデレーションをセットアップする方法について説明します。 レイクハウスフェデレーションの詳細については、「 レイクハウスフェデレーションとは」を参照してください。
レイクハウスフェデレーションを使用して PostgreSQL データベースでクエリを実行するに接続するには、Databricks Unity Catalog メタストアに以下を作成する必要があります。
PostgreSQL データベースでクエリーを実行するへの接続。
Unity Catalog の PostgreSQL データベースで Run クエリー をミラーリングし、Unity Catalog のクエリー構文ツールとデータガバナンス ツールを使用してデータベースへの Databricks ユーザー アクセスを管理できるようにする外部 カタログ 。
始める前に
ワークスペースの要件:
ワークスペースで Unity Catalogが有効になっています。
コンピュート 要件:
Databricks Runtime クラスターまたは SQLウェアハウスからターゲット データベース システムへのネットワーク接続。レイクハウスフェデレーションのネットワークに関する推奨事項を参照してください。
Databricks クラスターでは、Databricks Runtime 13.3 LTS 以上と共有またはシングルユーザー アクセス モードを使用する必要があります。
SQLウェアハウスは Pro またはサーバレスである必要があります。
必要な権限:
接続を作成するには、メタストア管理者であるか、ワークスペースにアタッチされている Unity Catalog メタストアに対する
CREATE CONNECTION
権限を持つユーザーである必要があります。外部カタログを作成するには、メタストアに対する
CREATE CATALOG
権限を持ち、接続の所有者であるか、接続に対するCREATE FOREIGN CATALOG
権限を持っている必要があります。
追加のアクセス許可要件は、以降の各タスクベースのセクションで指定されています。
接続 を作成する
接続では、外部データベース システムにアクセスするためのパスと資格情報を指定します。 接続を作成するには、カタログ エクスプローラーを使用するか、Databricks ノートブックまたは Databricks SQL クエリー エディターで CREATE CONNECTION
SQL コマンドを使用できます。
必要な権限: メタストア管理者または CREATE CONNECTION
権限を持つユーザー。
Databricks ワークスペースで、[ カタログ] をクリックします 。
左側のウィンドウで、[ 外部データ ] メニューを展開し、[ 接続] を選択します。
[ 接続の作成] をクリックします。
わかりやすい 接続名を入力します。
[ 接続の種類 ] として [PostgreSQL] を選択します。
PostgreSQL インスタンスの次の接続プロパティを入力します。
ホスト: たとえば、
postgres-demo.lb123.us-west-2.rds.amazonaws.com
ポート: たとえば、
5432
ユーザー: たとえば、
postgres_user
パスワード: たとえば、
password123
(オプション)[ 接続のテスト ] をクリックして、動作することを確認します。
(オプション)コメントを追加します。
[作成]をクリックします。
ノートブックまたは Databricks SQL クエリー エディターで次のコマンドを実行します。
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
資格情報などの機密性の高い値には、プレーンテキスト文字列の代わりに Databricks シークレット を使用することをお勧めします。 例えば:
CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
シークレットの設定に関する情報については、「 シークレット管理」を参照してください。
外部カタログ の作成
外部カタログは、外部データ システム内のデータベースをミラーリングするため、Databricks と Unity カタログを使用して、そのデータベース内のデータへのアクセスを管理できます。 外部カタログを作成するには、すでに定義されている DATA への接続を使用します。
外部カタログを作成するには、カタログ エクスプローラーを使用するか、Databricks ノートブックまたは Databricks SQL クエリー エディターで CREATE FOREIGN CATALOG
SQL コマンドを使用できます。
必要なアクセス許可: メタストアに対する CREATE CATALOG
アクセス許可と、接続の所有権または接続に対する CREATE FOREIGN CATALOG
特権。
Databricks ワークスペースで、[ カタログ] をクリックします 。
[ カタログの作成] ボタンをクリックします。
[新しいカタログの作成] ダイアログで、カタログの名前を入力し、[種類] の [外部 ] を選択します。
Unity Catalog カタログとしてミラーリングするデータベースへのアクセスを提供する 接続 を選択します。
カタログとしてミラーリングする データベース の名前を入力します。
[作成]をクリックします。
ノートブックまたは Databricks SQL エディターで次の SQL コマンドを実行します。 括弧内の項目はオプションです。 プレースホルダー値を置き換えます。
<catalog-name>
: Databricksのカタログの名前。<connection-name>
: データソース、パス、およびアクセス資格情報を指定する 接続オブジェクト 。<database-name>
: Databricks でカタログとしてミラー化するデータベースの名前。
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');
サポートされているプッシュダウン
次のプッシュダウンは、すべてのコンピュートでサポートされています。
フィルター
予測
極限
関数: 部分的、フィルター式のみ。 (文字列関数、数学関数、データ、時刻、タイムスタンプ関数、およびエイリアス、キャスト、並べ替え順序などの他の関数)
次のプッシュダウンは、Databricks Runtime 13.3 LTS 以降および SQL ウェアハウスでサポートされています。
集計関数 MIN、MAX、COUNT、SUM、AVG、VAR_POP、VAR_SAMP、STDDEV_POP、STDDEV_SAMP、GREATEST、LEAST、COVAR_POP、COVAR_SAMP、CORR、REGR_INTERCEPT、REGR_R2、REGR_SLOPE、REGR_SXY
次のBoolean関数: =、<、<、=>、>=、<=>
次の数学関数 (ANSI が無効になっている場合はサポートされません): +、-、*、%、/
その他の演算子 |そして~
制限付きで使用する場合の並べ替え
次のプッシュダウンはサポートされていません。
結合
Windows の機能
データ型マッピング
PostgreSQL から Spark に読み込むと、データ型は次のようにマップされます。
PostgreSQL 型 |
Spark タイプ |
---|---|
numeric |
DecimalType |
int2 |
ShortType |
int4 (signedではない場合) |
IntegerType |
int8, oid, xid, int4 (signedの場合) |
LongType |
float4 |
FloatType |
double precision, float8 |
DoubleType |
char |
CharType |
name, varchar, tid |
VarcharType |
bpchar, character varying, json, money, point, super, text |
StringType |
bytea, geometry, varbyte |
BinaryType |
bit, bool |
BooleanType |
date |
DateType |
tabstime, time, time with time zone, timetz, time without time zone, timestamp with time zone, timestamp, timestamptz, timestamp without time zone* |
TimestampType/TimestampNTZType |
Postgresql array type** |
ArrayType |
*Postgresqlから読み取る場合、Postgresql Timestamp
preferTimestampNTZ = false
されている場合、Spark TimestampType
にマップされます(デフォルト)。Postgresql Timestamp
は、 preferTimestampNTZ = true
の場合、 TimestampNTZType
にマップされます。
**サポートされる配列型は限られています。