メインコンテンツまでスキップ

Snowflakeで横串検索を実行する(基本認証)

このページでは、Databricks によって管理されていない Snowflake データに対してフェデレーション クエリを実行するためのレイクハウスフェデレーションの設定方法について説明します。レイクハウスフェデレーションの詳細については、外部データベースおよびカタログへの接続を参照してください。

レイクハウスフェデレーションを使用してSnowflakeデータベースに接続するには、 Databricks Unity Catalogメタストアに次のものを作成する必要があります (2023 年 11 月 8 日以降に作成されたワークスペースには、すでにUnity Catalogメタストア プロビジョニングが自動的に作成されています)。

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

このページでは、基本認証 (ユーザー名/パスワード) を使用して、Snowflake データに対してフェデレーション クエリを実行する方法について説明します。その他の認証方法については、次のページを参照してください。

クエリ フェデレーションまたはカタログ フェデレーションを使用して、Snowflake でフェデレーション クエリを実行できます。

クエリ フェデレーションでは、 JDBC Unity Catalogクエリを外部データベースにプッシュします。 これは、ETL パイプラインでのオンデマンド レポートや概念実証作業に最適です。

カタログ フェデレーションでは、 Unity Catalogクエリがファイル ストレージに対して直接実行されます。 このアプローチは、コードを調整せずに段階的に移行する場合や、Unity Catalog に登録されたデータと並行して Snowflake の一部のデータを維持する必要がある組織向けの長期的なハイブリッド モデルとして役立ちます。「Snowflake カタログ フェデレーションの有効化」を参照してください。

要件​

ワークスペースの要件:

  • Unity Catalogのワークスペースが有効になっています。2023年11月8日以降に作成されたワークスペースは、自動メタストアプロビジョニングを含め、自動的にUnity Catalogが有効になります。自動有効化よりも前に作成され、Unity Catalog がまだ有効になっていないワークスペースの場合を除き、メタストアを手動で作成する必要はありません。Unity Catalog の概要を参照してください。

コンピュートの要件:

  • コンピュート・リソースからターゲット・データベース・システムへのネットワーク接続。 レイクハウスフェデレーションのネットワーキングに関する推奨事項を参照してください。
  • Databricks コンピュートは、 Databricks Runtime 13.3 LTS 以上、 および標準 または 専用 アクセスモードを使用する必要があります。
  • SQLウェアハウスはProまたはServerlessで、2023.40以上を使用している必要があります。

必要な権限:

  • 接続を作成するには、メタストア管理者であるか、ワークスペースにアタッチされた Unity Catalog メタストアに対するCREATE CONNECTION権限を持つユーザーである必要があります。Unity Catalogが自動的に有効になったワークスペースでは、ワークスペース管理者は無事にCREATE CONNECTION権限を持ちます。
  • フォーリンカタログを作成するには、メタストアに対するCREATE CATALOG権限があり、接続の所有者であるか、接続に対するCREATE FOREIGN CATALOG権限を持っている必要があります。 Unity Catalogに対して自動的に有効になったワークスペースでは、ワークスペース管理者は無事にCREATE CATALOG権限を持っています。

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

Microsoft Entra ID を構成する​

Snowflakeドキュメントの 外部 OAuth の Microsoft Entra ID の構成 に従ってください。

接続を作成する​

接続では、外部データベースシステムにアクセスするためのパスと認証情報を指定します。接続を作成するには、カタログエクスプローラーを使用するか、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. [ 接続タイプ ] で [Snowflake ] を選択します。

  5. [Auth type ] で、ドロップダウンメニューから [Username and password (Basic authentication)] を選択します。

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

  7. 次へ をクリックします。

  8. Snowflake ウェアハウスの次の認証と接続の詳細を入力します。選択した認証方法に固有のプロパティの前には、括弧内の Auth type が付きます。

    • ホスト : たとえば、 snowflake-demo.east-us-2.azure.snowflakecomputing.com
    • ポート : たとえば、 443
    • ユーザー : たとえば、 snowflake-user
    • パスワード : たとえば、 password123
  9. 次へ をクリックします。

  10. [接続の詳細 ] ページで、次の項目を指定します。

    • ウェアハウスSnowflake : たとえば、 my-snowflake-warehouse
    • (オプション) プロキシホスト : Snowflakeへの接続に使用されるプロキシのホスト。また、[ プロキシを使用する ] を選択し、[ プロキシ ポート ] を指定する必要もあります。
    • (オプション) プロキシを使用 : プロキシサーバーを使用してSnowflakeに接続するかどうか。
    • (オプション) プロキシポート : Snowflakeへの接続に使用されるプロキシのポート。また、[ プロキシの使用 ] を選択し、[ プロキシ ホスト ] を指定する必要もあります。
    • (オプション) Snowflakeロール : 接続後のセッションに使用するデフォルトのセキュリティロール。
  11. 次へ をクリックします。

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

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

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

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

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

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

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

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

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

  18. 次へ をクリックします。

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

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

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

詳細接続オプション​

Snowflake接続は、限定的なエグレスまたはプライベートな接続環境向けに以下の高度なオプションをサポートしています。

  • disableOCSPChecks``true に設定して、Snowflake JDBC ドライバーで Online Certificate Status Protocol (OCSP) 証明書失効チェックを無効にします。OCSP チェックを無効にすると、証明書失効チェックがスキップされます。
重要

可能な限り、Snowflake OCSPレスポンダーへのアウトバウンドトラフィックを許可してください。disableOCSPChecksを設定しないままにするか、falseに設定してください。制限付きエグレスまたはプライベート接続設定でこのトラフィックが許可されない場合にのみ、trueに設定してください。

このオプションは Catalog Explorer には表示されません。SQL を使用して接続を作成する際に設定できます。

SQL
CREATE CONNECTION <connection-name> TYPE snowflake
OPTIONS (
<connection-options>,
disableOCSPChecks 'true'
);

既存の接続には、ALTER CONNECTIONを使用します。

大文字と小文字を区別するデータベース識別子​

フォーリンカタログのdatabaseフィールドは、Snowflake データベース識別子にマップされます。 Snowflake データベース識別子が大文字と小文字を区別しない場合は、フォーリンカタログ<database-name>で使用する大文字と小文字が保持されます。 ただし、Snowflake データベース識別子が大文字と小文字を区別する場合は、大文字と小文字を保持するためにフォーリンカタログ<database-name>を二重引用符で囲む必要があります。

例えば:

  • database は次のように変換されます。 DATABASE

  • "database" は次のように変換されます。 database

  • "database""" は次のように変換されます。 database"

    二重引用符をエスケープするには、別の二重引用符を使用します。

  • "database"" 二重引用符が正しくエスケープされないため、エラーが発生します。

詳細については、Snowflake ドキュメントの 「識別子の要件 」を参照してください。

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

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

  • フィルター
  • 予測
  • 上限
  • offset
  • テーブルのJOIN
  • 集計 (Average、Corr、CovPopulation、CovSample、Count、Max、Min、StddevPop、StddevSamp、Sum、VariancePop、VarianceSamp)
  • 関数(文字列関数、数学関数、日付・時刻・タイムスタンプ関数、およびAlias、Cast、SortOrderなどのその他の雑多な関数)
  • Window関数(DenseRank、Rank、RowNumber)
  • 分別
  • Top-N(ソートと制限を単一の操作に組み合わせたもの)は、Databricks Runtime 17.3以降でサポートされています。

データ型マッピング​

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

Snowflake タイプ

Spark タイプ

decimal、number、 numeric

DecimalType

bigint、byteint、int、integer、smallint、 tinyint

IntegerType

float、float4、 float8

FloatType

double、double precision、 real

DoubleType

char、character、string、text、time、 varchar

StringType

binary

BinaryType

boolean

BooleanType

date

DateType

datetime、timestamp、timestamp_ltz、timestamp_ntz、 timestamp_tz

TimestampType

Snowflake タイプ

Spark タイプ

decimal、number、 numeric

DecimalType

bigint、byteint、int、integer、smallint、 tinyint

IntegerType

float、float4、 float8

FloatType

double、double precision、 real

DoubleType

char、character、string、text、time、 varchar

StringType

binary

BinaryType

boolean

BooleanType

date

DateType

datetime、timestamp、timestamp_ltz、timestamp_ntz、 timestamp_tz

TimestampType