チュートリアル: Microsoft Entra ID を使用して外部データを読み込む
この記事では、Microsoft Entra ID パススルーを使用して外部テーブルを作成する方法について説明します。
前提条件
このチュートリアルを完了するには次のリソースが必要です。
- Azure Synapse Analytics ワークスペースと専用 SQL プール
Microsoft Entra ID アカウントにストレージ アカウントへのアクセスを付与する
この例では Microsoft Entra ID アカウント (またはグループ) を使用し、ソース データに対して認証します。
Azure Data Lake Storage (ADLS) Gen2 アカウント上のデータへのアクセスを有効にするには、Microsoft Entra ID アカウント (またはグループ) にソース アカウントへのアクセスを付与する必要があります。 適切なアクセス許可を許可するには、次の手順に従います。
- Azure portal でストレージ アカウントを検索します。
- [データ ストレージ] ->[コンテナー] を選択し、外部テーブルがアクセスする必要のあるソース データが存在するフォルダーに移動します。
- [アクセス制御 (IAM)] を選択します。
- [追加] -> [ロールの割り当ての追加] を選択します。
- 職務権限ロールの一覧の中で、[ストレージ BLOB データ閲覧者] を選択して [次へ] を選択します。
- [ロールの割り当ての追加] ページ内で、[+ メンバーの選択] を選択します。 [メンバーの選択] ペインが右上隅の中に開きます。
- 目的の Microsoft Entra ID アカウントの名前を入力します。 表示されたら目的のアカウントを選び、[選択] を選択します。
- [ロールの割り当ての追加] ページ内で、メンバーの一覧に目的の Microsoft Entra ID アカウントが含まれていることを確認します。 確認したら、[レビューと割り当て] を選択します。
- 確認ページ内で変更を確認して [レビューと割り当て] を選択します。
Microsoft Entra ID アカウントまたはグループがストレージ BLOB データ閲覧者ロールのメンバーになり、ソース フォルダーにアクセスできるようになりました。
COPY INTO を使用してデータを取り込む
COPY INTO
T-SQL ステートメントは、柔軟で高スループットのデータ インジェストをテーブルに提供し、専用 SQL プール テーブルにデータを取り込むための主要な戦略です。 これにより、ユーザーは外部テーブルに必要な追加のデータベース オブジェクトを作成する必要なく、外部の場所からデータを取り込むことができます。
COPY INTO
ステートメントでは CREDENTIAL
引数を使用して、ソース アカウントへの接続に使用する認証方法を指定します。 ただし、Microsoft Entra ID またはパブリック ストレージ アカウントを使用して認証する場合、CREDENTIAL
を指定する必要はありません。 認証のためにワークスペースのマネージド ID を使用して COPY INTO
ステートメントを実行するには、次の T-SQL コマンドを使用します。
COPY INTO <TableName>
FROM 'https://<AccountName>.dfs.core.windows.net/<Container>/<Folder>/ '
WITH
(
[<CopyIntoOptions>]
);
ここで:
<TableName>
: データを取り込むテーブルの名前です。<AccountName>
: ADLS Gen2 のアカウント名です。<Container>
: ソース データが保存されているストレージ アカウント内のコンテナーの名前です<Folder>
: コンテナー内でソース データが保存されているフォルダー (またはサブフォルダーを含むパス) です。 1 つのファイルを直接指す場合は、ファイル名を指定することもできます。<CopyIntoOptions>
:COPY INTO
ステートメントに指定する、その他のオプションのリストです。
完全な構文の詳細を調べるには「COPY INTO (Transact-SQL)」を参照してください。
必要なデータベース オブジェクトを作成する
外部テーブルには、次のオブジェクトを作成する必要があります。
- ソース フォルダーを指す外部データ ソース
- ソース ファイルの形式を定義する外部ファイル形式
- クエリに使用される外部テーブルの定義
これらの手順に従うには、Azure Synapse ワークスペース内で SQL エディターを、または専用 SQL プールに接続されたお好みの SQL クライアントを使用します。 これらの手順を詳しく見てみましょう。
外部データ ソースを作成する
次の手順では、外部データ ソースを作成します。これは、外部テーブルで使用されるソース データが存在する場所を指定します。
外部データ ソースを作成するには、次の T-SQL コマンドを使用します。
CREATE EXTERNAL DATA SOURCE <ExternalDataSourceName>
WITH (
TYPE = HADOOP,
LOCATION = 'abfss://<Container>@<AccountName>.dfs.core.windows.net/<Folder>/
);
ここで:
<ExternalDataSourceName>
: 外部データ ソースに使用する名前です。<AccountName>
: ADLS Gen2 のアカウント名です。<Container>
: ソース データが保存されているストレージ アカウント内のコンテナーの名前です。<Folder>
: コンテナー内でソース データが保存されているフォルダー (またはサブフォルダーを含むパス) です。
外部データ ソースの詳細については「CREATE EXTERNAL DATA SOURCE (Transact-SQL)」を参照してください。
外部ファイル形式を作成する
次の手順では、外部ファイル形式を作成します。 これは、外部テーブルによって参照されるデータの、実際のレイアウトを指定します。
外部ファイル形式を作成するには、次の T-SQL コマンドを使用します。 <FileFormatName>
を、外部ファイル形式で使用する名前と置き換えてください。
CREATE EXTERNAL FILE FORMAT <FileFormatName>
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (
FIELD_TERMINATOR = ',',
STRING_DELIMITER = '"',
FIRST_ROW = 2,
USE_TYPE_DEFAULT = True
)
);
この例ではソース データに従い、必要に応じて FIELD_TERMINATOR
、STRING_DELIMITER
、FIRST_ROW
などのパラメーターを調整します。 形式のオプションの詳細については「CREATE EXTERNAL FILE FORMAT (Transact-SQL)」を参照してください。
外部テーブルを作成する
外部データへ安全にアクセスするためのメタデータを保持するのに必要なオブジェクトを作成したので、次は外部テーブルを作成します。 外部テーブルを作成するには、次の T-SQL コマンドを使用します。
-- Adjust the table name and columns to your desired name and external table schema
CREATE EXTERNAL TABLE <ExternalTableName> (
Col1 INT,
Col2 NVARCHAR(100),
Col4 INT
)
WITH
(
LOCATION = '<Path>',
DATA_SOURCE = <ExternalDataSourceName>,
FILE_FORMAT = <FileFormatName>
);
ここで:
<ExternalTableName>
: 外部テーブルに使用する名前です。<Path>
: 外部データ ソース内で指定された場所に対する、ソース データの相対パスです。<ExternalDataSourceName>
: 作成した外部データ ソースの名前です。<FileFormatName>
: 作成した外部ファイル形式の名前です。
テーブル名とスキーマは、ソース ファイル内の目的のデータの名前およびスキーマに合わせて、確実に調整してください。
この時点で、外部テーブルへのアクセスに必要なすべてのメタデータが作成されています。 外部テーブルをテストするには、次の T-SQL サンプルなどのクエリを使用して作業を検証します。
SELECT TOP 10 Col1, Col2 FROM <ExternalTableName>;
すべてが正しく構成されていれば、このクエリの結果として、ソース データのデータが表示されます。
CREATE EXTERNAL TABLE
の詳細については「CREATE EXTERNAL TABLE (Transact-SQL)」を参照してください。