![](/img/trans.png)
[英]How to query a document property from CosmosDb dataset in Azure Data Factory
[英]Populate Azure Data Factory dataset from query
無法通過谷歌,msdn(和其他微軟)文檔或SO找到答案。
在Azure Data Factory中,您可以使用管道中的復制活動從數據集中獲取數據。 管道定義包括查詢。 我在文檔中看到的所有查詢都是簡單的單表查詢,沒有連接。 在這種情況下,數據集被定義為數據庫中具有“TableName”=“mytable”的表。 另外,可以從存儲過程中檢索數據,可能允許更復雜的sql。
有沒有辦法在管道中定義更復雜的查詢,該管道包括連接和/或轉換邏輯,這些邏輯改變來自查詢而不是存儲過程的數據或管道。 我知道您可以在數據集中指定字段,但不知道如何繞過“tablename”屬性。
如果有辦法,該方法會是什么?
輸入是本地sql server。 輸出是azure sql數據庫。
為清晰起見更新。
是的,sqlReaderQuery可能比示例中提供的要復雜得多,並且它不必僅使用數據集中的表名。
在我的一個管道中,我有一個TableName為“dbo.tbl_Build”的數據集,但是我的sqlReaderQuery查看了該數據庫中的幾個表。 這是一個嚴重截斷的例子:
將BuildErrorNodes作為(選擇infoNode.BuildId,...)作為來自dbo.tbl_BuildInformation2的MessageValue作為infoNode內部聯接dbo.tbl_BuildInformationType作為infoType on(infoNode.PartitionId = infoType),BuildInfo as ...
在數據集中列出單個表名有點令人困惑,然后在查詢中使用多個表,但它工作得很好。
有一種方法可以使用Data Factory將數據從內部部署SQL移動到Azure SQL。 您可以使用“ 復制活動” ,針對您的案例檢查此代碼示例,特別是指向ADF活動源的GitHub鏈接 。 基本上你需要創建副本的活動,這將有SqlSource和SqlSink套TypeProperties是這樣的:
<!-- language: lang-json -->
"typeProperties": {
"source": {
"type": "SqlSource",
"SqlReaderQuery": "select * from [Source]"
},
"sink": {
"type": "SqlSink",
"WriteBatchSize": 1000000,
"WriteBatchTimeout": "00:05:00"
}
},
另外請注意 - 您不僅可以使用表或視圖中的選擇,還可以使用[表值函數]。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.