次の方法で共有


Teradata でフェデレーション クエリを実行する

重要

この機能は、パブリック プレビューにあります。

このページでは、Azure Databricks によって管理されていない Teradata データに対してフェデレーション クエリを実行するように Lakehouse Federation を設定する方法について説明します。 レイクハウスフェデレーションの詳細については、「レイクハウスフェデレーションとは」を参照してください。

Lakehouse Federation を使用して Teradata データベースに接続するには、Azure Databricks Unity カタログ メタストアに次のコードを作成する必要があります。

  • Teradata データベースへの接続
  • Unity カタログのクエリ構文とデータ ガバナンス ツールを使用して、データベースへの Azure Databricks ユーザー アクセスを管理できるように、Unity カタログ内の Teradata データベースをミラーリングする 外部カタログ

開始する前に

開始する前に、このセクションの要件を満たしていることを確認してください。

Databricks の要件

ワークスペースの要件:

  • Unity Catalog を使用できるワークスペース。

コンピューティング要件:

  • コンピューティング リソースからターゲット データベース システムへのネットワーク接続。 「Lakehouse Federation 向けネットワーク推奨事項」を参照してください。
  • Azure Databricks コンピューティングでは、Databricks Runtime 16.1 以降と Standard または Dedicated アクセス モードを使用する必要があります。
  • SQL ウェアハウスはプロまたはサーバーレスである必要があり、2024.50 以降を使用する必要があります。

必要なアクセス許可:

  • 接続を作成するには、メタストア管理者であるか、ワークスペースにアタッチされている Unity カタログメタストアに対する CREATE CONNECTION 権限を持つユーザーである必要があります。
  • 外部カタログを作成するには、メタストアに対する CREATE CATALOG 権限を持ち、接続の所有者であるか、接続に対する CREATE FOREIGN CATALOG 特権を持っている必要があります。

追加のアクセス許可の要件は、次の各タスク ベースのセクションで指定します。

Teradata の要件

Azure Databricks 接続を作成する

接続では、外部データベース システムにアクセスするためのパスと資格情報を指定します。 接続を作成するには、Azure Databricks ノートブックまたは Databricks SQL クエリ エディターでカタログ エクスプローラーまたは CREATE CONNECTION SQL コマンドを使用できます。

手記

Databricks REST API または Databricks CLI を使用して接続を作成することもできます。 POST /api/2.1/unity-catalog/connections および Unity Catalog コマンドを参照してください。

必要な権限: Metastore管理者、またはCREATE CONNECTION特権を持つユーザー。

カタログ エクスプローラー

  1. Azure Databricks ワークスペースで、[ データ] アイコンをクリックします。カタログ

  2. [カタログ] ペインの上部にある 追加またはプラス アイコン[追加] アイコンをクリックし、メニューから [接続の追加] を選択します。

    または、[クイック アクセス] ページで、[外部データ >] ボタンをクリックし、[接続] タブに移動し、[接続の作成] をクリックします。

  3. 接続 のセットアップ ウィザードの [接続の基本] ページで、わかりやすい 接続名入力します。

  4. 接続の種類としてTeradataを選択します。

  5. (省略可能)コメントを追加します。

  6. 次にをクリックします。

  7. [認証] ページで、Teradata インスタンスの次の接続プロパティを入力します。

    • ホスト: たとえば、teradata-demo.teradata.com
    • ポート: たとえば、1025
    • ユーザー: たとえば、teradata_user
    • パスワード: たとえば、password123
  8. [接続の作成] をクリックします。

  9. カタログの基本 ページで、外部カタログの名前を入力します。 外部カタログは、外部データ システム内のデータベースをミラー化して、Azure Databricks と Unity Catalog を使用してそのデータベース内のデータへのアクセスを照会および管理できるようにします。

  10. (オプション) [テスト接続] をクリックして、動作するかを確認します。

  11. カタログを作成 をクリックします。

  12. [Access] ページで、作成したカタログにユーザーがアクセスできるワークスペースを選択します。 [すべてのワークスペースにアクセス権を持たせる] を選択するか、[ワークスペースへの割り当て] をクリックしてワークスペースを選択し、[割り当て] をクリックします。

  13. カタログ内のすべてのオブジェクトへのアクセスを管理できる 所有者 を変更します。 テキスト ボックスに主体を入力し始め、返された結果から主体を選択します。

  14. カタログに関する権限 を付与します。 [許可] をクリックします。

    1. カタログ内のオブジェクトにアクセスできる プリンシパル を指定します。 テキスト ボックスに主体を入力し始め、返された結果から主体を選択します。
    2. 各プリンシパルに付与する 特権プリセット を選択します。 既定では、すべてのアカウント ユーザーに BROWSE が付与されます。
      • ドロップダウン メニューから [データ 閲覧者 を選択して、カタログ内のオブジェクトに対する read 権限を付与します。
      • ドロップダウン メニュー データ エディター を選択して、カタログ内のオブジェクトに対する read 権限と modify 権限を付与します。
      • 付与する特権を手動で選択します。
    3. [許可] をクリックします。
  15. 次にをクリックします。

  16. [メタデータ] ページで、タグのキーと値のペアを指定します。 詳細については、「Unity カタログのセキュリティ保護可能なオブジェクトにタグを適用する」を参照してください。

  17. (省略可能)コメントを追加します。

  18. 保存 をクリックします。

SQL

ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。

CREATE CONNECTION <connection-name> TYPE teradata
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>'
);

Databricks では、資格情報などの機密性の高い値にプレーンテキスト文字列ではなく、azure Databricks シークレット 使用することをお勧めします。 例えば:

CREATE CONNECTION <connection-name> TYPE teradata
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>')
)

ノートブック SQL コマンドでプレーンテキスト文字列を使用する必要がある場合は、$\ などの特殊文字をエスケープして文字列を切り捨てないようにします。 例: \$.

シークレットの設定については、「シークレット管理を参照してください。

外部カタログを作成する

手記

UI を使用してデータ ソースへの接続を作成する場合は、外部カタログの作成が含まれるので、この手順は省略できます。

外部カタログは、外部データ システム内のデータベースをミラー化して、Azure Databricks と Unity Catalog を使用してそのデータベース内のデータへのアクセスを照会および管理できるようにします。 外部カタログを作成するには、既に定義されているデータ ソースへの接続を使用します。

外部カタログを作成するには、Azure Databricks ノートブックまたは SQL クエリ エディターでカタログ エクスプローラーまたは CREATE FOREIGN CATALOG SQL コマンドを使用できます。 Databricks REST API または Databricks CLI を使用してカタログを作成することもできます。 POST /api/2.1/unity-catalog/catalogs および unity Catalog コマンド を参照してください。

必要なアクセス許可:メタストアに対するCREATE CATALOG アクセス許可、および接続の所有権または接続に対する CREATE FOREIGN CATALOG 特権。

カタログ エクスプローラー

  1. Azure Databricks ワークスペースで、[ データ] アイコンをクリックします。カタログ をクリックしてカタログ エクスプローラーを開きます。

  2. [カタログ] ペインの上部にある 追加またはプラス アイコン[追加] アイコンをクリックし、メニューから [カタログの追加] を選択します。

    または、[クイック アクセス] ページで、[カタログ] ボタンをクリックし、[カタログの作成] ボタンをクリックします。

  3. カタログを作成する」で外部カタログを作成する手順に従います。

SQL

ノートブックまたは SQL クエリ エディターで次の SQL コマンドを実行します。 角かっこ内の項目は省略可能です。 プレースホルダー値を次のように置き換えます。

  • <catalog-name>: Azure Databricks のカタログの名前。
  • <connection-name>: データ ソース、パス、アクセス資格情報を指定する接続オブジェクト
  • <database-name>: Azure Databricks でカタログとしてミラーリングするデータベースの名前。
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

サポートされているプッシュダウン

次のプッシュダウンがサポートされています。

  • フィルター
  • 予測
  • 極限
  • 集合体
  • キャスト
  • Contains、Startswith、Endswith、Like

データ型のマッピング

Teradata から Spark に読み取ると、データ型は次のようにマップされます。

Teradata データ型 Spark の種類
Byte、Blob バイナリタイプ
Byteint、Smallint、Integer インテジャータイプ
ビッグイント (BigInt) ロングタイプ (LongType)
Float、Double、Double Precision ダブルタイプ
Number(n, m) デシマルタイプ
Number(, m)、Number()、Number サポートされていない
Varchar(N) 文字列型
時刻、タイムスタンプ TimestampType