使用 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"
}