共用方式為


教學課程:使用Microsoft Entra ID 載入外部數據

本文說明如何使用 Microsoft Entra ID 傳遞建立外部數據表。

必要條件

完成本教學課程需要下列資源:

  • Azure Synapse Analytics 工作區和專用 SQL 集區

將記憶體帳戶的存取權授與Microsoft專案標識符帳戶

此範例會使用Microsoft Entra ID 帳戶(或群組)向源數據進行驗證。

若要啟用 Azure Data Lake Storage (ADLS) Gen2 帳戶上數據的存取權,您必須提供來源帳戶的 Microsoft Entra ID 帳戶(或群組)存取權。 若要授與適當的許可權,請遵循下列步驟:

  1. 在 Azure 入口網站 中,尋找您的記憶體帳戶。
  2. 選取 [資料記憶體 -> 容器],然後流覽至外部數據表需要存取之源數據的資料夾。
  3. 選取 [存取控制 (IAM)]。
  4. 選取 [新增 -> 新增角色指派]。
  5. 在作業函式角色清單中,選取 [記憶體 Blob 數據讀取器 ],然後選取 [ 下一步]。 如果需要寫入許可權,請選取 [ 記憶體 Blob 數據參與者]。
  6. 在 [ 新增角色指派 ] 頁面中,選取 [ + 選取成員]。 [選取成員] 窗格隨即在右側角落開啟。
  7. 輸入所需Microsoft Entra ID 帳戶的名稱。 顯示時,挑選您想要的帳戶,然後選擇 [ 選取]。
  8. 在 [ 新增角色指派 ] 頁面中,確定 [成員] 列表包含您所需的Microsoft Entra ID 帳戶。 驗證之後,選取 [ 檢閱 + 指派]。
  9. 在確認頁面中,檢閱變更,然後選取 [ 檢閱 + 指派]。

Microsoft Entra ID 帳戶或群組現在是記憶體 Blob 數據讀取器角色的成員,而且可以存取源資料夾。

使用 COPY INTO 內嵌數據

COPY INTO T-SQL 語句提供彈性、高輸送量的數據擷取至數據表,是將數據內嵌到專用 SQL 集區數據表的主要策略。 它可讓使用者從外部位置擷取數據,而不需要建立外部數據表所需的任何額外的資料庫物件。

語句 COPY INTOCREDENTIAL 使用 自變數來指定用來連線到來源帳戶的驗證方法。 不過,使用 Microsoft Entra ID 或公用記憶體帳戶進行驗證時, CREDENTIAL 不需要指定 。 若要使用 Entra 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> 是儲存在您容器內源資料的資料夾 (或路徑) 。 如果直接指向單一檔案,您也可以提供檔名。
  • <CopyIntoOptions> 是您想要提供給 COPY INTO 語句的任何其他選項清單。

若要深入瞭解並探索完整的語法,請參閱 COPY INTO (Transact-SQL)。

使用外部數據表查詢 ADLS Gen2 上的資料

外部數據表可讓使用者查詢來自 Azure Data Lake Storage (ADLS) Gen2 帳戶的數據,而不需要先內嵌數據。 使用者可以建立指向 ADLS Gen2 容器上檔案的外部數據表,並查詢它就像一般用戶數據表一樣。

下列步驟描述使用 Entra ID 驗證,在 ADLS Gen2 上建立指向數據的新外部數據表的程式。

建立必要的資料庫物件

外部資料表需要建立下列物件:

  1. 指向源資料夾的外部資料來源
  2. 定義來源檔案格式的外部檔案格式
  3. 用於查詢的外部資料表定義

若要遵循這些步驟,您必須使用 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_TERMINATORSTRING_DELIMITERFIRST_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>
);

其中:

請務必將數據表名稱和架構調整為所需的名稱和來源檔案中數據的架構。

查詢外部數據表

此時,會建立存取外部數據表所需的所有元數據。 若要測試外部數據表,請使用下列 T-SQL 範例之類的查詢來驗證您的工作:

SELECT TOP 10 Col1, Col2 FROM <ExternalTableName>;

如果一切都已正確設定,您應該會看到源數據中的數據,因為此查詢的結果。

如需 的詳細資訊 CREATE EXTERNAL TABLE,請參閱 CREATE EXTERNAL TABLE (Transact-SQL)