Teradataで横串検索を実行する

プレビュー

この機能はパブリックプレビュー段階です。

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

レイクハウスフェデレーションを使用して Teradata データベースに接続するには、 Databricks Unity Catalog メタストアに次のものを作成する必要があります。

  • Teradata データベースへの接続。

  • TeradataUnity Catalog Unity Catalogデータベースを にミラーリングする フォーリンカタログDatabricks 。これにより、 クエリ構文とデータガバナンスツールを使用してデータベースへの ユーザーアクセスを管理できます。

始める前に

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

Databricks の要件

ワークスペースの要件:

  • Unity Catalogのワークスペースが有効になっています。

コンピュートの要件:

  • コンピュート・リソースからターゲット・データベース・システムへのネットワーク接続。 「レイクハウスフェデレーションのネットワーキングに関する推奨事項」を参照してください。

  • Databricksコンピュートは、Databricks Runtime 16.1 以降と、共有またはシングル ユーザー アクセス モードを使用する必要があります。

  • SQLウェアハウスは Pro または サーバレスで、2024.55 以上を使用している必要があります。

必要な権限:

  • 接続を作成するには、メタストア管理者か、ワークスペースに接続されているUnity Catalogメタストアの CREATE CONNECTION 権限を持つユーザーである必要があります。

  • フォーリンカタログを作成するには、メタストアに対する CREATE CATALOG 権限を持ち、接続の所有者であるか、接続に対する CREATE FOREIGN CATALOG 権限を持っている必要があります。

追加の権限要件は、以下の各タスクベースのセクションに記載しています。

Teradata の要件

  • ホストサーバーで TLS が有効になっている。 デフォルトでは、 SSLMODEREQUIREです。 詳細については、Teradata のドキュメントの「 TLS を使用して接続をセキュリティで保護 する方法」を参照してください。

Databricks 接続を作成する

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

注:

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

必要な権限:メタストア管理者またはCREATE CONNECTION権限を持つユーザー。

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

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

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

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

  4. [ 接続の種類 ] で [Teradata] を選択します。

  5. (オプション)コメントを追加します。

  6. 次へ」をクリックします。

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

    • ホスト: たとえば、 teradata-demo.teradata.com

    • ポート: たとえば、 1025

    • ユーザー: たとえば、 teradata_user

    • パスワード: たとえば、 password123

  8. [接続の作成]をクリックします。

  9. [カタログの基本] ページで、フォーリンカタログの名前を入力します。フォーリンカタログは、外部データ・システム内のデータベースをミラーリングするため、 Databricks と Unity Catalogを使用して、そのデータベース内のデータへのアクセスをクエリおよび管理できます。

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

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

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

  13. カタログ内のすべてのオブジェクトへのアクセスを管理できる 所有者 を変更します。 テキスト ボックスにプリンシパルの入力を開始し、返された結果でプリンシパルをクリックします。

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

    1. カタログ内のオブジェクトにアクセスできる プリンシパル を指定します。 テキスト ボックスにプリンシパルの入力を開始し、返された結果でプリンシパルをクリックします。

    2. 各プリンシパルに付与する 権限プリセット を選択します。 デフォルトでは、すべてのアカウントユーザーに BROWSE が付与されます。

      • ドロップダウンメニューから「 データ閲覧者 」を選択して、カタログ内のオブジェクトに対する read 権限を付与します。

      • ドロップダウンメニューから「 データエディタ 」を選択して、カタログ内のオブジェクトに対する read 権限と modify 権限を付与します。

      • 付与する権限を手動で選択します。

    3. 付与 をクリックします。

  15. 次へ」をクリックします。

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

  17. (オプション)コメントを追加します。

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

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

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

Databricks では、資格情報などの機密性の高い値には、プレーンテキスト文字列の代わりに 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 コマンドでプレーンテキスト文字列を使用する必要がある場合は、$ などの特殊文字を with \ でエスケープして文字列を切り捨てないようにしてください。 たとえば、 \$のようになります。

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

フォーリンカタログの作成

注:

UI を使用してデータソースへの接続を作成する場合は、フォーリンカタログの作成が含まれているため、この手順をスキップできます。

フォーリンカタログは、外部データシステム内のデータベースをミラーリングするため、DatabricksとUnity Catalogを使用して、そのデータベース内のデータへのアクセスを管理できます。フォーリンカタログを作成するには、すでに定義されているデータソースへの接続を使用します。

フォーリンカタログを作成するには、カタログ エクスプローラー、または 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. Databricks ワークスペースで、カタログアイコン[カタログ]をクリックしてカタログエクスプローラーを開きます。

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

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

  3. 「カタログの作成」のフォーリンカタログの作成手順に従ってください。

ノートブックまたは 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>');

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

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

  • フィルター

  • 予測

  • 上限

  • 集計

  • キャスト

  • contains、startswith、endswith、like

データ型のマッピング

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

テラデータ型

Spark タイプ

バイト、ブロブ

BinaryType

バイトイント、スモールイント、インテュジャー

IntegerType

BigINT

LongType

フロート、倍精度、倍精度

DoubleType

番号(n, m)

DecimalType

数字(*, m), 数字(*), 数字

サポートされていません

バルチャー(N)

StringType

時間、タイムスタンプ

TimestampType