簡體   English   中英

從查詢中填充Azure數據工廠數據集

[英]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鏈接 基本上你需要創建副本的活動,這將有SqlSourceSqlSinkTypeProperties是這樣的:

 <!-- 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM