OneLake REST のカタログ統合を構成する¶
このトピックの手順に従って、OneLake REST API エンドポイントのカタログ統合を作成します。これは、Microsoft Fabricのテーブルを操作するために使用できる OneLake テーブル APIs のエンドポイントです。このエンドポイントの詳細については、Microsoft Fabricドキュメント内の Iceberg用 OneLake テーブル APIs 入門 をご参照ください。
このカタログ統合により、Snowflakeを使用してIcebergメタデータを持つ OneLake テーブルを読み取ることができます。
前提条件¶
始める前に、Fabricのワークスペース用にワークスペース ID を、Fabricのレイクハウス用にデータアイテム ID を見つける必要があります。OneLake REST のカタログ統合を作成する場合は、後からワークスペース ID およびデータアイテム ID を指定します。
ワークスペース ID (
<workspaceID>)を見つけるには、Fabricサイトの URL を参照してワークスペース内のアイテムを探します。詳細については、Microsoft Fabricドキュメント内の ` ワークスペース ID を特定する <https://learn.microsoft.com/ja-jp/fabric/admin/portal-workspace#identify-your-workspace-id>`_ をご参照ください。ワークスペース ID をテキストエディターにコピーします。データアイテム ID を見つけるには、 URL 内の(
<dataItemID>), open your lakehouse, and then refer to the value after `` レイクハウス `` 。詳細については、Microsoft Fabricドキュメントの ` レイクハウスのソース構成 <https://learn.microsoft.com/ja-jp/fabric/data-factory/connector-lakehouse-copy-activity#source>`_ にある箇条書きの「接続」をご参照ください。データアイテム ID をテキストエディターにコピーします。
Fabricワークスペースでは、レイクハウスなど、データアイテムにIcebergテーブルがあることを確認してください。
ステップ1:OneLake のアクセス許可を構成する¶
OneLake のアクセス許可を構成するには、Microsoft Azureでアプリケーション登録を作成し、アプリケーション登録にuser_impersonation権限を追加して、アプリケーション登録用の新しいクライアントシークレットを作成します。
Azureで、アプリケーション登録を作成します。
詳細については、Microsoft Entraドキュメント内の ` アプリケーションをMicrosoft Entra ID に登録する <https://learn.microsoft.com/ja-jp/entra/identity-platform/quickstart-register-app>`_ をご参照ください。
アプリケーション登録に、user_impersonation権限を追加します。
開始するには、Microsoft Graphドキュメント内の Microsoft Entra管理センターを使用して、組織で使用する APIs を見つける にある最初の4つのステップに従います。
重要
ステップで説明されているように、 APIs my organization uses タブに切り替えないでください。代わりに、 Microsoft APIs タブに切り替えて Azure Storage を選択してから user_impersonation 権限を追加します。
アプリケーション登録用に新しいクライアントシークレットを作成し、シークレットをテキストエディターにコピーします。
指示については、Microsoft Entraドキュメント内の ` 新しいクライアントシークレットを作成する <https://learn.microsoft.com/ja-jp/entra/identity-platform/howto-create-service-principal-portal#option-3-create-a-new-client-secret>`_ をご参照ください。このシークレットは、カタログ統合を作成するときに指定します。
重要
シークレットをテキストエディターにコピーすることを忘れないでください。後で取得することができないからです。
アプリケーション登録の Overview ページから Display name 、 Application (client) ID および Directory (tenant) ID をテキストエディターにコピーします。
カタログ統合と外部ボリュームを作成するときに、これらの値を指定します。
ステップ2:アプリケーション登録にFabricワークスペースへのアクセス権を付与する¶
このステップでは、アプリケーション登録にFabricのワークスペースへのアクセスを与えます。
Microsoft Fabric へナビゲートしてサインインします。
Microsoft Fabricワークスペースを開きます。
Manage access を選択します。
+ Add people or groups を選択します。
Enter name or email フィールドに、アプリケーション登録の名前を貼り付けます。
この名前は OneLake のアクセス許可を構成した ときにコピーした Display name です。
ドロップダウンメニューから、アプリが必要なFabricアイテムを作成できるようにする Contributor アクセスまたはそれ以上の権限を選択します。
Add を選択します。
ステップ3:Snowflakeでカタログ統合を作成する¶
CREATE CATALOG INTEGRATION (Apache Iceberg™ REST) コマンドを使用して、REST API エンドポイントのカタログ統合を作成します。
例:
CREATE OR REPLACE CATALOG INTEGRATION my_onelake_catalog_int
CATALOG_SOURCE = ICEBERG_REST
TABLE_FORMAT = ICEBERG
REST_CONFIG = (
CATALOG_URI = 'https://onelake.table.fabric.microsoft.com/iceberg'
CATALOG_NAME = '<fabric_data_item_scope>'
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_TOKEN_URI = '<azure_active_directory_token_endpoint>'
OAUTH_CLIENT_ID = '<entra_application_client_id>'
OAUTH_CLIENT_SECRET = '<entra_application_client_secret>'
OAUTH_ALLOWED_SCOPES = ('https://storage.azure.com/.default')
)
ENABLED = TRUE;
条件:
https://onelake.table.fabric.microsoft.com/icebergは OneLake テーブルのエンドポイントでベースとなる URL です。<fabric_data_item_scope>is the Fabric data item scope, in the form<workspaceID>/<dataItemID>, such as12345678-abcd-1abc-1a11-111111ab1111/11111111-abcd-1111-1ab1-1111a1a1ab91. To find your<workspaceID>and<dataItemID>、 前提条件 をご参照ください。<azure_active_directory_token_endpoint_>is your Azure Active Directory OAuth 2.0 token endpoint URL, in the form ofhttps://login.microsoftonline.com/<entra_tenant_id>/oauth2/v2.0/token. For ``<entra_tenant_id>``Entra tenant ID を指定します。これは、 OneLake のアクセス許可を構成したときにコピーしたIDです。<entra_application_client_id>はEntraアプリケーションクライアント ID です。これは、11111111-aabb-1a11-abc1-ab11111a11a1など OneLake のアクセス許可を構成したときにコピーしたIDです。<entra_application_client_secret>はアプリケーションのクライアントシークレットです。これは、 OneLake のアクセス許可を構成したときにコピーしたものです。https://storage.azure.com/.defaultは、ストレージトークンのオーディエンスです。
ステップ4:外部ボリュームの構成¶
このステップでは、Azure OneLake URL およびEntraテナント ID でAzureの外部ボリュームを構成します。
CREATE EXTERNAL VOLUME コマンドを使用して外部ボリュームを作成します。
例:
CREATE OR REPLACE EXTERNAL VOLUME my_onelake_extvol STORAGE_LOCATIONS = ( ( NAME = 'my_onelake_extvol' STORAGE_PROVIDER = 'AZURE' STORAGE_BASE_URL = '<azure_onelake_url>' AZURE_TENANT_ID='<entra_tenant_id>' ) ) ALLOW_WRITES = FALSE;
条件:
<azure_onelake_url>is your Azure OneLake URL, in the form ofazure://onelake.dfs.fabric.microsoft.com/<workspaceID>/<dataItemID>, such asazure://onelake.dfs.fabric.microsoft.com/12345678-abcd-1abc-1a11-111111ab1111/11111111-abcd-1111-1ab1-1111a1a1ab91. To find your<workspaceID>and<dataItemID>、 前提条件 をご参照ください。<entra_tenant_id>is your Entra tenant ID, such as,11111111-aabb-1a11-abc1-ab11111a11a1。OneLake のアクセス許可を構成したときにEntraテナント ID をコピーしました。
Microsoftの許可リクエストページへの URL を取得するには、 DESCRIBE EXTERNAL VOLUME コマンドを使用します。以前に作成した外部ボリュームの名前を指定します。
DESC EXTERNAL VOLUME my_onelake_extvol;
次のプロパティの値を記録します。
プロパティ
説明
AZURE_CONSENT_URLMicrosoftのアクセス許可リクエストページへの URL。
AZURE_MULTI_TENANT_APP_NAMEアカウント用に作成されたSnowflakeクライアントアプリケーションの名前。このセクションの後半のステップでは、このアプリケーションに許可されたストレージの場所でアクセストークンを取得するための権限を付与します。
これらの値は次のステップで使用します。
ウェブブラウザーで、Microsoftの許可リクエストページ(
AZURE_CONSENT_URL)に移動します。Accept を選択します。このアクションは、Snowflakeアカウント用に作成されたAzureサービスプリンシパルが、テナント内の指定したリソースでアクセストークンを取得できるようにします。アクセストークンの取得が成功するのは、サービスプリンシパルにストレージアカウントレベルで適切な権限を付与した場合のみです(次のステップを参照)。
Fabricで許可されたストレージの場所でアクセストークンを取得するために、マルチテナントアプリケーションの権限を付与します。
Microsoft Fabric へナビゲートしてサインインします。
Microsoft Fabricワークスペースを開きます。
Manage access を選択します。
+ Add people or groups を選択します。
Enter name or email フィールドに AZURE_MULTI_TENANT_APP_NAME 用に記録した値を貼り付けます。
ドロップダウンメニューから、アプリが必要なFabricアイテムを作成できるようにする Contributor アクセスまたはそれ以上の権限を選択します。
Add を選択します。
詳細については、Microsoft Fabricドキュメント内の Microsoft Fabricの REST エンドポイント用Snowflakeカタログ統合と外部ボリュームコードの例 をご参照ください。
次のステップ¶
OneLake REST と外部ボリュームのカタログ統合を構成した後、 CREATE DATABASE(カタログリンク) コマンドを使用してカタログリンクのデータベースを作成し、Snowflakeの OneLake からテーブルを読み取ります。
カタログリンクデータベースを作成する際には、作成したカタログ統合と外部ボリュームを指定します。
例:
CREATE OR REPLACE DATABASE my_linked_db
LINKED_CATALOG = (
CATALOG = 'my_onelake_catalog_int'
)
EXTERNAL_VOLUME = 'my_onelake_extvol';
SELECT SYSTEM$CATALOG_LINK_STATUS('IRC_CATALOG_LINKED');
SELECT * FROM my_linked_db."dbo"."sentiment";
注釈
Snowflakeは、OneLake のテーブルに対する読み取り操作のみをサポートしています。