使用 Azure Data Factory 或 Synapse Analytics 將資料複製到 Azure 資料總管或從該處複製資料
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用!
本文描述如何使用 Azure Data Factory 和 Synapse Analytics 管線中的複製活動,將資料複製到 Azure 資料總管,或從該處複製資料。 本文係以複製活動概觀一文為基礎,該文提供複製活動的一般概觀。
提示
若要深入了解 Azure 資料總管與服務的整合,請泛讀整合 Azure 資料總管。
支援的功能
下列功能支援此 Azure 資料總管連接器:
支援的功能 | IR |
---|---|
複製活動 (來源/接收) | 4.9 |
對應資料流 (來源/接收) | 5 |
查閱活動 | 4.9 |
① Azure 整合執行階段 ② 自我裝載整合執行階段
您可以將資料從任何支援的來源資料存放區複製到 Azure 資料總管。 您也可以將資料從 Azure 資料總管複製到任何支援的接收資料存放區。 如需複製活動支援作為來源或接收器的資料存放區清單,請參閱支援的資料存放區資料表。
注意
3.14 版和更新版本中支援使用自我裝載整合執行階段,透過內部部署資料存放區將資料複製到 Azure 資料總管或從該處複製資料。
使用 Azure 資料總管連接器,您可以執行下列作業:
- 使用 Microsoft Entra 應用程式權杖驗證搭配服務主體來複製資料。
- 作為來源時,請使用 KQL (Kusto) 查詢擷取資料。
- 作為接收時,請將資料附加至目的地資料表。
開始使用
提示
如需 Azure 資料總管連接器的逐步解說,請參閱將資料複製到 Azure 資料總管/從該處複製資料,以及從資料庫大量複製到 Azure 資料總管。
若要透過管線執行複製活動,您可以使用下列其中一個工具或 SDK:
使用 UI 建立連結至 Azure 資料總管的服務
使用下列步驟,在 Azure 入口網站 UI 中建立連結至 Azure 資料總管的服務。
前往 Azure Data Factory 或 Synapse 工作區的 [管理] 索引標籤,選取 [連結服務],然後按一下 [新增]:
搜尋 [總管],然後選取 [Azure 資料總管 (Kusto) 連接器]。
設定服務詳細資料,測試連線,然後建立新的連結服務。
連接器設定詳細資料
下列各節提供有關屬性的詳細資料,這些屬性會用來定義 Azure 資料總管連接器專屬的實體。
連結服務屬性
Azure 資料總管連接器支援下列驗證類型。 如需詳細資訊,請參閱對應章節:
服務主體驗證
若要使用服務主體驗證,請遵循下列步驟來取得服務主體並授與權限:
向 Microsoft 身分識別平台註冊應用程式。 若要深入了解,請參閱快速入門:向 Microsoft 身分識別平台註冊應用程式。 請記下這些值,以便用於定義連結服務:
- Application ID
- 應用程式金鑰
- 租用戶識別碼
在 Azure 資料總管中,將正確的權限授與服務主體。 如需角色和權限以及管理權限的詳細資訊,請參閱管理 Azure 資料總管資料庫權限。 一般而言,您必須:
- 作為來源,至少將資料庫檢視者角色授與您的資料庫
- 作為接收器,至少將資料庫使用者角色授與您的資料庫
注意
當您使用 UI 來撰寫時,預設會使用您的登入使用者帳戶來列出 Azure 資料總管叢集、資料庫和資料表。 您可以選擇使用服務主體列出物件,方法是按一下重新整理按鈕旁邊的下拉式清單,或者如果您沒有這些作業的權限,請手動輸入名稱。
Azure 資料總管連結服務支援以下屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | type 屬性必須設定為 AzureDataExplorer。 | Yes |
endpoint | Azure 資料總管叢集的端點 URL,格式為 https://<clusterName>.<regionName>.kusto.windows.net 。 |
Yes |
database | 資料庫名稱。 | Yes |
tenant | 指定您的應用程式所在租用戶的資訊 (網域名稱或租用戶識別碼)。 這在 Kusto 連接字串中稱為「授權單位識別碼」。 將滑鼠指標暫留在 Azure 入口網站右上角,即可擷取此識別碼。 | Yes |
servicePrincipalId | 指定應用程式的用戶端識別碼。 這在 Kusto 連接字串中稱為「Microsoft Entra 應用程式用戶端識別碼」。 | Yes |
servicePrincipalKey | 指定應用程式的金鑰。 這在 Kusto 連接字串中稱為「Microsoft Entra 應用程式金鑰」。 將此欄位標記為 SecureString 以將其安全地儲存,或參考 Azure Key Vault 中儲存的安全資料。 | Yes |
connectVia | 用來連線到資料存放區的整合執行階段。 如果您的資料存放區位於私人網路中,則可使用 Azure Integration Runtime 或自我裝載整合執行階段。 若未指定,則會使用預設 Azure Integration Runtime。 | No |
範例:使用服務主體金鑰驗證
{
"name": "AzureDataExplorerLinkedService",
"properties": {
"type": "AzureDataExplorer",
"typeProperties": {
"endpoint": "https://<clusterName>.<regionName>.kusto.windows.net ",
"database": "<database name>",
"tenant": "<tenant name/id e.g. microsoft.onmicrosoft.com>",
"servicePrincipalId": "<service principal id>",
"servicePrincipalKey": {
"type": "SecureString",
"value": "<service principal key>"
}
}
}
}
系統指派的受控身分識別驗證
若要深入了解 Azure 資源受控識別,請參閱 Azure 資源受控識別。
若要使用系統指派的受控識別驗證,請遵循下列步驟來授與權限:
複製與處理站或 Synapse 工作區一起產生的受控識別物件識別碼,藉此擷取受控識別資訊。
在 Azure 資料總管中授與受控識別正確的權限。 如需角色和權限以及管理權限的詳細資訊,請參閱管理 Azure 資料總管資料庫權限。 一般而言,您必須:
- 作為來源,將資料庫檢視者角色授與您的資料庫。
- 作為接收器,將資料庫擷取者和資料庫檢視者角色授與您的資料庫。
注意
當您使用 UI 來撰寫時,系統會使用您的登入使用者帳戶來列出 Azure 資料總管叢集、資料庫和資料表。 如果您沒有這些作業的權限,請手動輸入名稱。
Azure 資料總管連結服務支援以下屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | type 屬性必須設定為 AzureDataExplorer。 | Yes |
endpoint | Azure 資料總管叢集的端點 URL,格式為 https://<clusterName>.<regionName>.kusto.windows.net 。 |
Yes |
database | 資料庫名稱。 | Yes |
connectVia | 用來連線到資料存放區的整合執行階段。 如果您的資料存放區位於私人網路中,則可使用 Azure Integration Runtime 或自我裝載整合執行階段。 若未指定,則會使用預設 Azure Integration Runtime。 | No |
範例:使用系統指派的受控識別驗證
{
"name": "AzureDataExplorerLinkedService",
"properties": {
"type": "AzureDataExplorer",
"typeProperties": {
"endpoint": "https://<clusterName>.<regionName>.kusto.windows.net ",
"database": "<database name>",
}
}
}
使用者指派的受控身分識別驗證
若要深入了解 Azure 資源受控識別,請參閱 Azure 資源受控識別
若要使用使用者指派的受控識別驗證,請依照下列步驟操作:
在 Azure 資料總管中建立一或多個使用者指派的受控識別,並授與權限。 如需角色和權限以及管理權限的詳細資訊,請參閱管理 Azure 資料總管資料庫權限。 一般而言,您必須:
- 作為來源,至少將資料庫檢視者角色授與您的資料庫
- 作為接收器,至少將資料庫擷取者角色授與您的資料庫
將一或多個使用者指派的受控識別指派給 Data Factory 或 Synapse 工作區,並為每個使用者指派的受控識別建立認證。
Azure 資料總管連結服務支援以下屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | type 屬性必須設定為 AzureDataExplorer。 | Yes |
endpoint | Azure 資料總管叢集的端點 URL,格式為 https://<clusterName>.<regionName>.kusto.windows.net 。 |
Yes |
database | 資料庫名稱。 | Yes |
credentials | 將使用者指派的受控身分識別指定為認證物件。 | Yes |
connectVia | 用來連線到資料存放區的整合執行階段。 如果您的資料存放區位於私人網路中,則可使用 Azure Integration Runtime 或自我裝載整合執行階段。 若未指定,則會使用預設 Azure Integration Runtime。 | No |
範例:使用使用者指派的受控識別驗證
{
"name": "AzureDataExplorerLinkedService",
"properties": {
"type": "AzureDataExplorer",
"typeProperties": {
"endpoint": "https://<clusterName>.<regionName>.kusto.windows.net ",
"database": "<database name>",
"credential": {
"referenceName": "credential1",
"type": "CredentialReference"
}
}
}
}
資料集屬性
如需定義資料集的區段和屬性完整清單,請參閱資料集。 本節列出 Azure 資料總管資料集支援的屬性。
若要將資料複製到 Azure 資料總管,請將資料集的 type 屬性設定為 AzureDataExplorerTable。
以下是支援的屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | type 屬性必須設定為 AzureDataExplorerTable。 | Yes |
table | 連結服務所參考的資料表名稱。 | Yes (接收):No (來源) |
資料集屬性範例:
{
"name": "AzureDataExplorerDataset",
"properties": {
"type": "AzureDataExplorerTable",
"typeProperties": {
"table": "<table name>"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<Azure Data Explorer linked service name>",
"type": "LinkedServiceReference"
}
}
}
複製活動屬性
如需可用來定義活動的區段和屬性完整清單,請參閱管線和活動。 本節提供 Azure 資料總管來源和接收器支援的屬性清單。
作為來源的 Azure 資料總管
若要從 Azure 資料總管複製資料,請將複製活動來源中的 type 屬性設定為 AzureDataExplorerSource。 複製活動的 source 區段支援下列屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | 複製活動來源的 type 屬性必須設定為:AzureDataExplorerSource | Yes |
query | KQL 格式中指定的唯讀要求。 使用自訂的 KQL 查詢作為參考。 | Yes |
queryTimeout | 查詢要求逾時之前的等待時間。預設值是 10 分鐘 (00:10:00);允許的最大值為 1 小時 (01:00:00)。 | No |
noTruncation | 指出是否要截斷傳回的結果集。 根據預設,結果會在 500,000 筆記錄或 64 MB 之後截斷。 強烈建議截斷,以確保活動的正確行為。 | No |
注意
根據預設,Azure 資料總管來源的大小限制為 500,000 筆記錄或 64 MB。 若要擷取所有記錄而不截斷,您可以在查詢開頭指定 set notruncation;
。 如需詳細資訊,請參閱查詢限制。
範例:
"activities":[
{
"name": "CopyFromAzureDataExplorer",
"type": "Copy",
"typeProperties": {
"source": {
"type": "AzureDataExplorerSource",
"query": "TestTable1 | take 10",
"queryTimeout": "00:10:00"
},
"sink": {
"type": "<sink type>"
}
},
"inputs": [
{
"referenceName": "<Azure Data Explorer input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
]
}
]
作為接收的 Azure 資料總管
若要將資料複製到 Azure 資料總管,請將複製活動接收中的 type 屬性設定為 AzureDataExplorerSink。 複製活動的 sink 區段支援下列屬性:
屬性 | 描述 | 必要 |
---|---|---|
type | 複製活動接收器的 type 屬性必須設定為:AzureDataExplorerSink。 | Yes |
ingestionMappingName | Kusto 資料表上預先建立的對應名稱。 若要將資料行從來源對應至 Azure 資料總管 (適用於所有支援的來源存放區和格式,包括 CSV/JSON/Avro 格式),您可以使用複製活動資料行對應 (隱含方式依名稱或明確方式如設定一般) 和/或 Azure 資料總管。 | No |
additionalProperties | 一種屬性包,其可以用於指定 Azure 資料總管接收器尚未設定的任何擷取屬性。 具體而言,其可以用於指定擷取標籤。 深入了解 Azure 資料總管資料擷取文件。 | No |
範例:
"activities":[
{
"name": "CopyToAzureDataExplorer",
"type": "Copy",
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "AzureDataExplorerSink",
"ingestionMappingName": "<optional Azure Data Explorer mapping name>",
"additionalProperties": {<additional settings for data ingestion>}
}
},
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Azure Data Explorer output dataset name>",
"type": "DatasetReference"
}
]
}
]
對應資料流程屬性
在對應資料流中轉換資料時,您可以從 Azure 資料總管資料表中讀取並寫入資料。 如需詳細資訊,請參閱對應資料流程中的來源轉換和接收轉換。 您可以選擇使用 Azure 資料總管資料集或內嵌資料集作為來源和接收器類型。
來源轉換
下表列出 Azure 資料庫總管來源所支援的屬性。 您可以在 [來源選項] 索引標籤中編輯這些屬性。
名稱 | 描述 | 必要 | 允許的值 | 資料流程指令碼屬性 |
---|---|---|---|---|
Table | 如果您選取 [資料表] 作為輸入,資料流程會在使用內嵌資料集時,從 Azure 資料總管資料集或來源選項中指定的資料表擷取全部資料。 | No | String | (僅限內嵌資料集) tableName |
查詢 | KQL 格式中指定的唯讀要求。 使用自訂的 KQL 查詢作為參考。 | No | String | query |
Timeout | 查詢要求逾時之前的等待時間。預設值為 '172000' (2 天) | No | 整數 | timeout |
Azure 資料總管來源指令碼範例
當您使用 Azure 資料總管資料集作為來源類型時,相關聯的資料流程指令碼為:
source(allowSchemaDrift: true,
validateSchema: false,
query: 'table | take 10',
format: 'query') ~> AzureDataExplorerSource
如果您使用內嵌資料集,相關聯的資料流程指令碼為:
source(allowSchemaDrift: true,
validateSchema: false,
format: 'query',
query: 'table | take 10',
store: 'azuredataexplorer') ~> AzureDataExplorerSource
接收轉換
下表列出 Azure 資料庫總管接收器所支援的屬性。 您可以在 [設定] 索引標籤中編輯這些屬性。使用內嵌資料集時,您會看到其他設定,其與資料集屬性一節所述的屬性相同。
名稱 | 描述 | 必要 | 允許的值 | 資料流程指令碼屬性 |
---|---|---|---|---|
資料表動作 | 決定在寫入之前,是否要重新建立或移除目的地資料表中的所有資料列。 - 無:不會對資料表執行任何動作。 - 重新建立:將會捨棄並重新建立資料表。 如果要動態建立新的資料表,則為必要。 - 截斷:將會移除目標資料表中的所有資料列。 |
No | true 或 false |
recreate truncate |
前置和後置 SQL 指令碼 | 指定多個 Kusto 控制命令指令碼,這些指令碼將在資料寫入至您的接收器資料庫之前 (前置處理) 和之後 (後置處理) 執行。 | No | String | preSQLs; postSQLs |
Timeout | 查詢要求逾時之前的等待時間。預設值為 '172000' (2 天) | No | 整數 | timeout |
Azure 資料總管接收器指令碼範例
當您使用 Azure 資料總管資料集作為接收器類型時,相關聯的資料流程指令碼為:
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
format: 'table',
preSQLs:['pre SQL scripts'],
postSQLs:['post SQL script'],
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> AzureDataExplorerSink
如果您使用內嵌資料集,相關聯的資料流程指令碼為:
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
format: 'table',
store: 'azuredataexplorer',
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> AzureDataExplorerSink
查閱活動屬性
如需屬性的詳細資訊,請參閱查閱活動。
相關內容
如需複製活動支援其作為來源和接收器的資料存放區清單,請參閱支援的資料存放區。
深入了解如何將資料從 Azure Data Factory 和 Synapse Analytics 複製到 Azure 資料總管。