使用 Azure Data Factory 移動資料

已完成

Azure Data Factory 是一種原生服務,可用來擷取資料、轉換資料,並以完全無伺服器的方式跨接收器和存放區進行載入。 從資料整合的觀點來看,這表示您可以將資料從一個資料庫轉移到另一個資料庫,不論每個資料庫的細微差異為何,只要您能夠在每個資料架構之間合理地轉換資料即可。

設定

Azure Cosmos DB for NoSQL 可做為 Azure Data Factory 內的 [連結服務]。 這種類型的連結服務既支援做為資料內嵌的 [來源],也支援作為資料輸出的目標 ([接收器])。 這兩者的組態皆相同。 請確定您已在 Cosmos DB 帳戶上啟用受控識別和角色型存取控制 (RBAC) 權限。 您可以使用 Azure 入口網站或 JSON 物件來設定服務。

{
    "name": "<example-name-of-linked-service>",
    "properties": {
        "type": "CosmosDb",
        "typeProperties": {
            "accountEndpoint": "https://<cosmos-account-name>.documents.azure.com:443/",
            "authenticationType": "ManagedIdentity"
        }
    }
}

從 Azure Cosmos DB 讀取

在 Azure Data Factory 中,從 Azure Cosmos DB for NoSQL 讀取資料時,我們必須將連結的服務設為 [來源]。 此設定會讀入資料。 若要設定此選項,我們必須針對所需讀入的資料建立 SQL 查詢。 例如,我們可以撰寫查詢,例如 SELECT id, categoryId, price, quantity, name FROM products WHERE price > 500,以篩選要從 Azure Cosmos DB for NoSQL 讀入至 Azure Data Factory 進行轉換的容器項目,最後載入目的地資料存放區。

在 Azure Data Factory 中,我們的來源活動具有組態 JSON 物件,可用來設定查詢等屬性:

{
    "source": {
        "type": "CosmosDbSqlApiSource",
        "query": "SELECT id, categoryId, price, quantity, name FROM products WHERE price > 500",
        "preferredRegions": [
            "East US",
            "West US"
        ]        
    }
}

寫入至 Azure Cosmos DB

在 Azure Data Factory 中,當儲存資料至 Azure Cosmos DB for NoSQL 時,我們必須將連結的服務設為 [接收器]。 此設定會載入我們的資料。 若要設定此選項,我們必須設定寫入行為。 例如,可能是插入資料,或是 upsert 資料並覆寫任何有相符的唯一識別碼 ([識別碼] 欄位) 的項目。

我們的 [接收器] 活動也有組態 JSON 物件:

"sink": {
    "type": "CosmosDbSqlApiSink",
    "writeBehavior": "upsert"
}