Microsoft SQL Server でフェデレーション クエリを実行する
この記事では、 によって管理されていない データに対してフェデレーション クエリを実行するためにレイクハウスフェデレーションを設定する方法について説明します。SQL ServerDatabricksレイクハウスフェデレーションの詳細については、 「レイクハウスフェデレーションとは何ですか?」を参照してください。 。
レイクハウスフェデレーションを使用して SQL Server データベースに接続するには、Databricks Unity Catalog メタストアに以下を作成する必要があります。
SQL Server データベース への接続 。
SQL Server データベースを Unity Catalog にミラーリングして Unity Catalog クエリー構文とデータガバナンス ツールを使用してデータベースへの Databricks ユーザー アクセスを管理できるようにする フォーリンカタログ 。
レイクハウスフェデレーションは、 SQL Server、 Azure SQL Database、 Azure SQL Managed Instance をサポートしています。
始める前に
ワークスペースの要件:
ワークスペースで Unity Catalogが有効になっています。
コンピュート 要件:
コンピュート・リソースからターゲット・データベース・システムへのネットワーク接続。 「レイクハウスフェデレーションのネットワーキングに関する推奨事項」を参照してください。
Databricks コンピュートは、Databricks Runtime 13.3 LTS 以上、および共有またはシングル ユーザー アクセス モードを使用する必要があります。
SQLウェアハウスはProまたはServerlessで、2023.40以上を使用している必要があります。
必要な権限:
接続を作成するには、メタストア管理者であるか、ワークスペースにアタッチされている Unity Catalog メタストアに対する
CREATE CONNECTION
権限を持つユーザーである必要があります。フォーリンカタログを作成するには、メタストアに対する
CREATE CATALOG
権限を持ち、接続の所有者であるか、接続に対するCREATE FOREIGN CATALOG
権限を持っている必要があります。
追加のアクセス許可要件は、以降の各タスクベースのセクションで指定されています。
OAuthを使用して認証する予定の場合は、 Microsoft Entra ID for Databricksにアプリを登録します。 詳細については、次のセクションを参照してください。
(オプション) Microsoft Entra ID で Databricks のアプリを登録する
OAuthを使用して認証する場合は、 SQL Server接続を作成する前にこの手順に従ってください。 代わりにユーザー名とパスワードを使用して認証する場合は、このセクションをスキップしてください。
Azure ポータルにサインインします。
左側のナビゲーションで、 Microsoft Entra IDをクリックします。
[アプリの登録] をクリックします。
[ 新規登録] をクリックします。 新しいアプリの名前を入力し、リダイレクト URI を
https://<workspace-url>/login/oauth/azure.html
に設定します。「登録」をクリックします。
[要点] ボックスで、アプリケーション (クライアント) ID をコピーして保存します。この値を使用して、アプリケーションを構成します。
「証明書とシークレット」をクリックします。
[クライアント シークレット]タブで、 [新しいクライアント シークレット]をクリックします。
シークレットの説明と有効期限を入力します (デフォルト設定は 180 日です)。
[追加] をクリックします。
クライアントシークレットに生成された値をコピーします。
API 権限をクリックします。
[ 権限を追加] をクリックします。
Azure SQL Databaseを選択し、委任されたアクセス許可の下のuser_impersonationをクリックします。
[ 権限を追加] をクリックします。
接続を作成する
接続では、外部データベース システムにアクセスするためのパスと資格情報を指定します。 接続を作成するには、カタログ エクスプローラーを使用するか、Databricks ノートブックまたは Databricks SQL クエリー エディターで CREATE CONNECTION
SQL コマンドを使用できます。
注:
Databricks REST API または Databricks CLI を使用して接続を作成することもできます。 POST /api/2.1/unity-catalog/connections を参照してください。 および Unity Catalog コマンド。
必要な権限: メタストア管理者または CREATE CONNECTION
権限を持つユーザー。
Databricks ワークスペースで、[ カタログ] をクリックします 。
[ カタログ ] ウィンドウの上部にある [ 追加 ] アイコンをクリックし、メニューから [ 接続の追加 ] を選択します。
または、クイック アクセスページで[外部データ]ボタンをクリックし、 [接続]タブに移動して[接続の作成] をクリックします。
接続のセットアップ ウィザードの 接続の基本 ページで、わかりやすい接続名を入力します。
[ 接続の種類 ] として [SQL サーバー] を選択します。
[OAuth] または [ユーザー名とパスワード (基本認証)] の [認証タイプ] を選択します。
(オプション)コメントを追加します。
「次へ」をクリックします。
[ 認証 ] ページで、SQL Server インスタンスの次の接続プロパティを入力します。 選択した認証方法に固有のプロパティの前には、括弧内の
Auth type
が付きます。ホスト: SQL サーバー。
(基本認証) 港
(基本認証) trustServerCertificate : デフォルトは
false
です。true
に設定すると、トランスポート層はSSL使用してチャンネルを暗号化し、証明書チェーンをバイパスして信頼性を検証します。 信頼検証をバイパスする特別な必要がある場合を除き、これをデフォルト設定のままにしておきます。(基本認証) 利用者
(基本認証) パスワード
(OAuth)承認エンドポイント:
https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize
形式の Azure Entra 承認エンドポイント。(OAuthの)作成したアプリの クライアント ID 。
(OAuthの)作成したクライアントシークレットの クライアントシークレット 。
(OAuthの) OAuth スコープ: 変更せずに次の値を入力します:
https://database.windows.net/.default offline_access
。(OAuthの) [Azure Entra ID でサインイン] をクリックします。 Azure のユーザー名とパスワードを入力します。 [認証] ページにリダイレクトされると、認証コードが UI に入力されます。
[ 接続の作成] をクリックします。
(基本認証) [接続の詳細 ] ページで、次の項目を指定します。
信頼サーバー証明書: デフォルトでは選択されていません。 選択すると、トランスポート層は SSL を使用してチャンネルを暗号化し、証明書チェーンをバイパスして信頼を検証します。 これは、信頼検証をバイパスする特定の必要がない限り、デフォルトのままにします。
アプリケーションの意図: サーバーに接続するときのアプリケーションのワークロードの種類。
「次へ」をクリックします。
[カタログの基本] ページで、フォーリンカタログの名前を入力します。フォーリンカタログは、外部データ・システム内のデータベースをミラーリングするため、 Databricks と Unity Catalogを使用して、そのデータベース内のデータへのアクセスをクエリおよび管理できます。
(オプション)[ 接続のテスト ] をクリックして、動作することを確認します。
[ カタログを作成] をクリックします。
[ アクセス ] ページで、作成したカタログにユーザーがアクセスできるワークスペースを選択します。 [ すべてのワークスペースにアクセス権がある] を選択するか、[ ワークスペースに割り当て] をクリックし、ワークスペースを選択して [ 割り当て] をクリックします。
カタログ内のすべてのオブジェクトへのアクセスを管理できる 所有者 を変更します。 テキスト ボックスにプリンシパルの入力を開始し、返された結果でプリンシパルをクリックします。
カタログに対する 権限を付与 します。 [ 許可] をクリックします。
カタログ内のオブジェクトにアクセスできる プリンシパル を指定します。 テキスト ボックスにプリンシパルの入力を開始し、返された結果でプリンシパルをクリックします。
各プリンシパルに付与する 権限プリセット を選択します。 デフォルトでは、すべてのアカウントユーザーに
BROWSE
が付与されます。ドロップダウンメニューから「 データ閲覧者 」を選択して、カタログ内のオブジェクトに対する
read
権限を付与します。ドロップダウンメニューから「 データエディタ 」を選択して、カタログ内のオブジェクトに対する
read
権限とmodify
権限を付与します。付与する権限を手動で選択します。
付与 をクリックします。
「次へ」をクリックします。
[メタデータ] ページで、タグのキーと値のペアを指定します。詳細については、「 セキュリティ保護可能なオブジェクト Unity Catalog タグを適用する」を参照してください。
(オプション)コメントを追加します。
保存をクリックします。
注:
(OAuth) Azure Entra ID OAuth エンドポイントは、Databricks コントロール プレーン IP からアクセスできる必要があります。 Databricks のクラウドとリージョンを参照してください。
ノートブックまたは Databricks SQL クエリー エディターで次のコマンドを実行します。
CREATE CONNECTION <connection-name> TYPE sqlserver
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>'
);
資格情報などの機密性の高い値には、プレーンテキスト文字列の代わりに Databricks シークレット を使用することをお勧めします。 例えば:
CREATE CONNECTION <connection-name> TYPE sqlserver
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>')
)
シークレットの設定に関する情報については、「 シークレット管理」を参照してください。
フォーリンカタログの作成
注:
UI を使用してデータソースへの接続を作成する場合は、フォーリンカタログの作成が含まれているため、この手順をスキップできます。
フォーリンカタログは、外部データ システム内のデータベースをミラーリングするため、Databricks と Unity Catalogを使用して、そのデータベース内のデータへのアクセスを管理できます。 フォーリンカタログを作成するには、すでに定義されている DATA への接続を使用します。
フォーリンカタログを作成するには、カタログ エクスプローラー、または 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
特権。
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 ウェアハウス コンピュートではサポートされています。
集計
次のBoolean演算子: =、<、<=、>、>=、<=>
次の数学関数 (ANSI が無効になっている場合はサポートされません): +、-、*、%、/
その他の演算子: ^、|、~
制限付きで使用する場合の並べ替え
次のプッシュダウンはサポートされていません。
結合
Windows の機能
データ型マッピング
SQL Server から Spark に読み取る場合、データ型は次のようにマップされます。
SQL Server の種類 |
Spark タイプ |
---|---|
bigint (unsigned), decimal, money, numeric, smallmoney |
DecimalType |
smallint、tinyint |
ShortType |
int |
IntegerType |
bigint (signed) |
LongType |
real |
FloatType |
float |
DoubleType |
char, nchar, uniqueidentifier |
CharType |
Nvarchar, varchar |
VarcharType |
text, xml |
StringType |
binary, geography, geometry, image, timestamp, udt, varbinary |
BinaryType |
bit |
BooleanType |
date |
DateType |
datetime, datetime, smalldatetime, time |
TimestampType/TimestampNTZType |
*SQL Server から読み取る場合、SQL Server datetimes
preferTimestampNTZ = false
(デフォルト) の場合、Spark TimestampType
にマップされます。SQL Server datetimes
は、 preferTimestampNTZ = true
の場合、 TimestampNTZType
にマップされます。