Microsoft Fabricを使用してSnowflake管理の Apache Iceberg™ テーブルをクエリする¶
Microsoft FabricでSnowflake管理のIcebergテーブルを表示するには、標準のSnowflakeデータベースをFabricに接続します。
このトピックでは、標準のSnowflakeデータベースをFabricに接続する手順を説明します。これにより、データベースをFabricと同期します。データベースを接続する場合、既存のデータベースを選択するか、新しいデータベースを作成することができます。その後、Fabricのデータベースで、Snowflake管理のIcebergテーブルを表示できるようになります。
Microsoft OneLake Fabricの詳細については、Microsoft Fabricドキュメント内の Microsoft FabricのOneLake をご参照ください。
前提条件¶
開始する前に、Microsoft FabricおよびSnowflakeに関する次の前提条件を完了してください。
Microsoft Fabric
Microsoft Fabricアカウントを作成します。詳細については、 Microsoft Fabricを始めましょう をご参照ください。
Fabricアカウントでワークスペースを作成します。手順については、Microsoft Fabricドキュメント内の ` ワークスペースを作成する <https://learn.microsoft.com/ja-jp/fabric/fundamentals/create-workspaces>`_ をご参照ください。このワークスペースを使用して、Snowflake管理のIcebergテーブルをクエリします。
注釈
英数字のみを使用してFabricワークスペースに名前を付けることをお勧めします。Fabricワークスペース名に特殊文字やスペースなど英数字以外の文字が含まれている場合は、後にこの ID を指定するためにワークスペースの ID をコピーする必要があります。ワークスペース ID を見つけるには、Fabric UI でワークスペースを開いてから、ブラウザーで URL を参照します。
Fabricワークスペースの管理者である必要があります。
Fabricテナント管理者は、 Enable Snowflake database item (Preview) テナント設定を有効にするか、Fabric容量管理者にこの決定を委任する必要があります。Fabricウェブ UI の管理ポータルでこの設定を有効にできます。管理ポータルにアクセスするには、Microsoft Fabricドキュメント内の ` 管理ポータルにアクセスする方法 <https://learn.microsoft.com/ja-jp/fabric/admin/admin-center#how-to-get-to-the-admin-portal>`_ をご参照ください。この設定は、テナントレベルで有効にする、Fabric容量管理者に委任する、または特定のセキュリティグループに対してのみ有効にすることができます。
Snowflake
ACCOUNTADMIN ロール、またはアカウントで CREATE USER 権限を持つSnowflakeの別のロールにアクセスする必要があります。
ACCOUNTADMIN ロール、または外部ボリュームを作成する権限を持つSnowflakeの別のロールにアクセスする必要があります。
Snowflakeの標準データベースが必要です。手順については、 CREATE DATABASE をご参照ください。このガイドは、
SnowflakeFabricIcebergDBという名前の標準データベースの例を参照しています。注釈
このトピックのステップを完了するには、既存の標準データベースが必要です。トピックには、そのデータベースに権限を付与するためのステップが含まれています。ただし、次の場合にデータベースを作成するオプションがあります。 SnowflakeデータベースをFabricに接続する 。データベースをFabricに接続するときに新しいデータベースを作成する場合は、Snowflakeでデータベースに必要な権限を付与する必要があります。
ステップ1:Microsoft Fabricテナント ID、Snowflake組織名、およびSnowflakeアカウント名を見つける¶
SnowflakeからMicrosoft Fabricに接続するには、Microsoft Fabricテナント ID が必要です。SnowflakeからMicrosoft OneLake に接続するには、Snowflake組織名とSnowflakeアカウント名が必要です。
Microsoft Fabricテナント ID を見つけるには、次のステップに従います:
Microsoft Fabric にナビゲートしてサインインします。
? を選択します。
Help ペインで、 About Fabric を選択します。
Fabric ウィンドウから行う場合は、 Tenant URL の値を確認して、URL の
ctidより後ろの部分をテキストエディターにコピーします。例:
a111a1a1-1111-111a-a11a-1a11a11111a1
Snowflake組織名(
<orgname>), and Snowflake account name (<accountname>)を見つけるには、 アカウントの組織名とアカウント名の検索 をご参照ください。
ステップ2:Snowflakeでロールを作成¶
このステップでは、Snowflakeでロールを作成し、そのロールに標準データベースの使用とデータベース内のテーブルに対する SELECT ステートメントの実行に必要な権限を付与します。後で、このロールをユーザーに付与します。
ACCOUNTADMIN ロールを使用して次のステップを完了します:
Snowsight にサインインします。
Snowsight にワークシートを作成します。詳細については、 Snowsight でワークシートを作成する をご参照ください。
CREATE ROLE コマンドを使用してロールを作成します:
USE ROLE ACCOUNTADMIN; CREATE ROLE IF NOT EXISTS R_ICEBERG_METADATA;
Icebergメタデータロールの権限を標準データベースに付与するには、この例に従って、権限を
SnowflakeFabricIcebergDBデータベースに付与してください:BEGIN LET db STRING := 'SnowflakeFabricIcebergDB'; EXECUTE IMMEDIATE 'GRANT USAGE ON DATABASE ' || db || ' TO ROLE R_ICEBERG_METADATA'; EXECUTE IMMEDIATE 'GRANT USAGE ON ALL SCHEMAS IN DATABASE ' || db || ' TO ROLE R_ICEBERG_METADATA'; EXECUTE IMMEDIATE 'GRANT USAGE ON FUTURE SCHEMAS IN DATABASE ' || db || ' TO ROLE R_ICEBERG_METADATA'; EXECUTE IMMEDIATE 'GRANT SELECT ON ALL ICEBERG TABLES IN DATABASE ' || db || ' TO ROLE R_ICEBERG_METADATA'; EXECUTE IMMEDIATE 'GRANT SELECT ON FUTURE ICEBERG TABLES IN DATABASE ' || db || ' TO ROLE R_ICEBERG_METADATA'; END;
既存のウェアハウスでクエリを実行する権限をロールに付与するには、この例に従って、ロールに
COMPUTE_WHウェアハウスでクエリを実行する権限を付与してください:GRANT USAGE ON WAREHOUSE COMPUTE_WH TO ROLE R_ICEBERG_METADATA;
ステップ3:Snowflakeでユーザーを作成¶
このステップでは、Snowflakeでユーザーを作成し、先ほど作成したロールでユーザーに付与します。この付与により、ユーザーは標準データベースを使用できます。後で、Microsoft FabricでSnowflake接続を作成するときに、このユーザーの認証情報を指定します。
以前にSnowflakeでユーザーを作成したことがある場合は、このステップをスキップできます。
デフォルトとして作成したロールを持つユーザーを作成するには、 CREATE USER コマンドを使用します:
USE ROLE ACCOUNTADMIN; CREATE USER IF NOT EXISTS SVC_FABRIC_ICEBERG_METADATA TYPE = LEGACY_SERVICE LOGIN_NAME = 'SVC_FABRIC_ICEBERG_METADATA' DISPLAY_NAME = 'Service - Fabric Iceberg Metadata' PASSWORD = '<strong_password>' MUST_CHANGE_PASSWORD = FALSE DEFAULT_ROLE = R_ICEBERG_METADATA;
作成したロールをユーザーに付与します:
GRANT ROLE R_ICEBERG_METADATA TO USER SVC_FABRIC_ICEBERG_METADATA;
ステップ4:Microsoft FabricでSnowflake接続を作成¶
このステップでは、Microsoft FabricでSnowflake接続を作成します。これにより、Snowflakeの標準データベースをMicrosoft Fabricに接続できます。
重要
Microsoft Fabricに次の条件を満たす既存のSnowflake接続がすでに構成されている場合は、このステップをスキップできます:
正しいSnowflakeのユーザー名とパスワードの認証情報を使用します。
Snowflakeで必要なウェアハウスにアクセスできます。
Microsoft Fabric へナビゲートしてサインインします。
Settings アイコンを選択します。
Settings で、 Manage connections and gateways を選択します。
+ New を選択します。
New connection ダイアログ内でSnowflake接続を作成します。
Cloud を選択します。
Connection name には、接続名を入力します。
Connection type には、 Snowflake を選択します。
Server には、Snowflakeアカウントの識別子を入力します。
https://<orgname>-<accountname>.snowflakecomputing.com
条件:
<orgname>is the name of your Snowflake organization and<accountname>がSnowflakeアカウント名です。これらの名前を見つけるには、 ステップ1:Microsoft Fabricテナント ID、Snowflake組織名、およびSnowflakeアカウント名を見つける をご参照ください。
Warehouse には、
COMPUTE_WHなど、 :ref:` ロールを作成した <label-tables_iceberg_query_using_microsoft_fabric_create_user>` ときに R_ICEBERG_METADATA ロールの使用状況アクセスを付与したSnowflakeのウェアハウスの名前を入力します。Authentication method には、 Snowflake を選択します。
Username には、 Snowflakeで作成した ユーザーの名前を入力します。
Password には、 Snowflakeで作成した ユーザーのパスワードを入力します。
Create を選択します。
注釈
Microsoft FabricでSnowflake接続を作成することの詳細については、Microsoft Fabricドキュメント内の Snowflakeデータベース接続を設定する を参照してください。
接続が作成されたら、接続用の Connection ID をテキストエディターにコピーします。
例:
1111a111-11a1-1111-11a1-11aa1111aaa1。後でSnowflake標準データベースをMicrosoft Fabricに接続するときに、Snowflakeでこの接続IDを指定する必要があります。
ステップ5:Azureマルチテナントアプリケーション名の取得¶
このステップでは、Snowflakeを使用してAzureマルチテナントアプリケーション名を取得します。後で AzureマルチテナンアプリケーションにFabricワークスペースへのアクセスを付与する ときに、このアプリケーション名を指定します。
Snowsight にサインインします。
ナビゲーションメニューで Ingestion » Add Data を選択します。
Add Data ページで、 Microsoft OneLake を選択します。
Fabricのテナント ID を入力し、 Continue を選択します。
Create an item in Microsoft Fabric ダイアログの上部付近にある Multi-tenant app name をテキストエディターにコピーします。
ステップ6:Azureマルチテナントアプリケーションにワークスペースへのアクセスを付与¶
このステップでは、AzureマルチテナントアプリケーションにFabricのワークスペースへのアクセスを許可します。
Microsoft Fabric へナビゲートしてサインインします。
Microsoft Fabricワークスペースを開きます。
ワークスペースを作成するには、 前提条件 をご参照ください。
Manage access を選択します。
+ Add people or groups を選択します。
Enter name or email フィールドに、SnowflakeからコピーしたAzureマルチテナントアプリケーション名を貼り付けます。
Azureマルチテナントのアプリ名を取得するには、 ステップ5:Azureマルチテナントアプリケーション名の取得 をご参照ください。
ドロップダウンメニューで、アプリが必要なFabricアイテムを作成できるようにする Contributor アクセスまたはそれ以上の権限を選択します。
Add を選択します。
右上のエリアで、 Settings と Manage connections and gateways を順に選択します。
右上のエリアで接続 ID を検索します。
Microsoft Fabricで Snowflake接続を作成した 際に、この接続 ID をコピーしました。
Connections タブで接続にカーソルを合わせ、接続用の ... アイコンを選択してから Manage users を選択します。
Search by name or email フィールドで、マルチテナントのアプリケーション名を検索して選択します。
ユーザーに対する適切な権限レベルを選択します。
マルチテナントアプリケーションがSnowflake接続を使用できるようにするには、 Share を選択します。
ステップ7:Snowflake標準データベースをMicrosoft Fabricに接続¶
このステップでは、標準のSnowflakeデータベースをMicrosoft Fabricに接続します。
Snowsight にサインインします。
ナビゲーションメニューで Ingestion » Add Data を選択します。
Add Data ページで、 Microsoft OneLake を選択します。
Fabricテナント ID を入力し、 Continue を選択します。
Fabricテナント ID を見つけるには、 ステップ1:Microsoft Fabricテナント ID、Snowflake組織名、およびSnowflakeアカウント名を見つける をご参照ください。
EntraテナントでSnowflakeアカウントのマルチテナントアプリケーションを使用することに同意するには、 Provide consent を選択します。
以前にこのステップを実行したことがない場合は、同意を求めるプロンプトが表示されます。権限を確認し、同意してから、次のステップに進みます。
Snowflakeアカウントでこのステップがすでに完了している可能性があります。その場合は表示されるポップアップを閉じ、次のステップに進みます。
同意フローを完了できない場合は、Entraテナント管理者にこのステップの完了を依頼してください。
Continue を選択します。
Create an item in Microsoft Fabric ダイアログ内の以下のフィールドに入力します:
Fabric workspace name には、Icebergテーブルを表示するFabric内のワークスペース名を入力します。
接続 ID が正しい形式であることを検証するには、 Snowflake connection ID in Fabric にSnowflake接続 ID を入力します。これは Microsoft Fabricで Snowflake接続を作成した ときにコピーしたIDです。
注釈
Snowflake管理のテーブルを読み取る前に、FabricでSnowflake接続オブジェクトを作成する必要があります。
Snowflake database には、Fabricで表示するSnowflake管理のIcebergテーブルを含むSnowflakeデータベースを選択します。
注釈
新しいSnowflakeデータベースを作成し、Fabricに接続する場合は、 + Create a new database を選択します。
Fabricアイテムとデータベースを作成するには、 Continue を選択します。
Create External Volume ダイアログ内で外部ボリュームを作成し、ボリュームの詳細を精査してから Create Volume を選択します。
FabricアイテムはMicrosoft Fabricで作成され、外部ボリュームはMicrosoft Fabric OneLake で作成されます。
ステップ8:Icebergテーブルを作成する¶
このステップでは、Snowflakeの標準データベースにSnowflake管理のIcebergテーブルを作成します。
Snowsight にサインインします。
Snowsight でワークシートを開きます。
詳細については、 タブでワークシートを開く をご参照ください。
標準データベースに、サンプルのIcebergテーブルを作成します:
CREATE ICEBERG TABLE SnowflakeFabricIcebergDB.PUBLIC.SampleIcebergTable ( id INT, name STRING ) CATALOG = 'SNOWFLAKE';
サンプルIcebergテーブルに、2つの行を挿入します:
INSERT INTO SnowflakeFabricIcebergDB.PUBLIC.SampleIcebergTable VALUES (1, 'Alice'), (2, 'Bob');
ステップ9:FabricでIcebergテーブルを表示¶
Microsoft Fabric へナビゲートしてサインインします。
ワークスペースを開きます。
データベースにちなんで名づけられた新しいSnowflakeデータベースアイテムが表示されます。必要に応じて、ページを更新します。
Snowflakeでテーブルを作成した場合は、データベースアイテムとスキーマを開きます。
Snowflakeで作成したIcebergテーブルが表示されます。Snowflakeでテーブルを更新すると、Microsoft Fabricでテーブルの更新情報を再読み込みできます。
右上隅の SQL analytics endpoint を選択します。
SQL を使用してテーブルと対話することができます。または、他のFabricワークロードを使用して他のFabricデータと一緒にこのテーブルをクエリしてみてください。