Kopiera data till eller från Azure Cosmos DB för MongoDB med hjälp av Azure Data Factory eller Synapse Analytics
GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics
Dricks
Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!
Den här artikeln beskriver hur du använder kopieringsaktivitet i Azure Data Factory- och Synapse Analytics-pipelines för att kopiera data från och till Azure Cosmos DB för MongoDB. Artikeln bygger på kopieringsaktivitet, som visar en allmän översikt över kopieringsaktivitet.
Kommentar
Den här anslutningsappen stöder endast kopiering av data till/från Azure Cosmos DB för MongoDB. För Azure Cosmos DB för NoSQL, se Azure Cosmos DB för NoSQL-anslutningsappen. Andra API-typer stöds inte för närvarande.
Funktioner som stöds
Den här Azure Cosmos DB for MongoDB-anslutningsappen stöds för följande funktioner:
Funktioner som stöds | IR | Hanterad privat slutpunkt |
---|---|---|
Kopieringsaktivitet (källa/mottagare) | (1) (2) | ✓ |
(1) Azure Integration Runtime (2) Lokalt installerad integrationskörning
Du kan kopiera data från Azure Cosmos DB för MongoDB till valfritt mottagardatalager som stöds eller kopiera data från alla källdatalager som stöds till Azure Cosmos DB för MongoDB. En lista över datalager som kopieringsaktivitet stöder som källor och mottagare finns i Datalager och format som stöds.
Du kan använda Azure Cosmos DB för MongoDB-anslutningsappen för att:
- Kopiera data från och till Azure Cosmos DB för MongoDB.
- Skriv till Azure Cosmos DB som insert eller upsert.
- Importera och exportera JSON-dokument som de är, eller kopiera data från eller till en tabelldatauppsättning. Exempel är en SQL-databas och en CSV-fil. Information om hur du kopierar dokument som de är till eller från JSON-filer eller till eller från en annan Azure Cosmos DB-samling finns i Importera eller exportera JSON-dokument.
Kom igång
Om du vill utföra kopieringsaktiviteten med en pipeline kan du använda något av följande verktyg eller SDK:er:
- Verktyget Kopiera data
- Azure-portalen
- The .NET SDK
- The Python SDK
- Azure PowerShell
- REST-API:et
- Azure Resource Manager-mallen
Skapa en länkad tjänst till Azure Cosmos DB för MongoDB med hjälp av användargränssnittet
Använd följande steg för att skapa en länkad tjänst till Azure Cosmos DB för MongoDB i Användargränssnittet för Azure-portalen.
Bläddra till fliken Hantera i Din Azure Data Factory- eller Synapse-arbetsyta och välj Länkade tjänster och klicka sedan på Ny:
Sök efter Azure Cosmos DB efter MongoDB och välj anslutningsappen.
Konfigurera tjänstinformationen, testa anslutningen och skapa den nya länkade tjänsten.
Konfigurationsinformation för anslutningsprogram
Följande avsnitt innehåller information om egenskaper som du kan använda för att definiera Data Factory-entiteter som är specifika för Azure Cosmos DB för MongoDB.
Länkade tjänstegenskaper
Följande egenskaper stöds för den länkade tjänsten Azure Cosmos DB for MongoDB:
Property | Beskrivning | Obligatoriskt |
---|---|---|
type | Typegenskapen måste vara inställd på CosmosDbMongoDbApi. | Ja |
connectionString | Ange niska veze för Azure Cosmos DB för MongoDB. Du hittar den i Azure-portalen –> ditt Azure Cosmos DB-blad –> primära eller sekundära niska veze. För 3.2-serverversionen är mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.documents.azure.com:10255/?ssl=true&replicaSet=globaldb strängmönstret . För 3,6+ serverversioner är mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.mongo.cosmos.azure.com:10255/?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@<cosmosdb-name>@ strängmönstret .Du kan också placera ett lösenord i Azure Key Vault och hämta konfigurationen password från niska veze. Mer information finns i Lagra autentiseringsuppgifter i Azure Key Vault. |
Ja |
database | Namnet på den databas som du vill komma åt. | Ja |
isServerVersionAbove32 | Ange om serverversionen är över 3.2. Tillåtna värden är true och false (standard). Detta avgör vilken drivrutin som ska användas i tjänsten. | Ja |
connectVia | Integration Runtime som ska användas för att ansluta till datalagret. Du kan använda Azure Integration Runtime eller en lokalt installerad integrationskörning (om ditt datalager finns i ett privat nätverk). Om den här egenskapen inte har angetts används standardkörningen för Azure Integration Runtime. | Nej |
Exempel
{
"name": "CosmosDbMongoDBAPILinkedService",
"properties": {
"type": "CosmosDbMongoDbApi",
"typeProperties": {
"connectionString": "mongodb://<cosmosdb-name>:<password>@<cosmosdb-name>.documents.azure.com:10255/?ssl=true&replicaSet=globaldb",
"database": "myDatabase",
"isServerVersionAbove32": "false"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Egenskaper för datauppsättning
En fullständig lista över avsnitt och egenskaper som är tillgängliga för att definiera datauppsättningar finns i Datauppsättningar och länkade tjänster. Följande egenskaper stöds för Azure Cosmos DB för MongoDB-datauppsättning:
Property | Beskrivning | Obligatoriskt |
---|---|---|
type | Datamängdens typegenskap måste anges till CosmosDbMongoDbApiCollection. | Ja |
collectionName | Namnet på Azure Cosmos DB-samlingen. | Ja |
Exempel
{
"name": "CosmosDbMongoDBAPIDataset",
"properties": {
"type": "CosmosDbMongoDbApiCollection",
"typeProperties": {
"collectionName": "<collection name>"
},
"schema": [],
"linkedServiceName":{
"referenceName": "<Azure Cosmos DB for MongoDB linked service name>",
"type": "LinkedServiceReference"
}
}
}
Egenskaper för kopieringsaktivitet
Det här avsnittet innehåller en lista över egenskaper som stöd för Azure Cosmos DB for MongoDB-källa och mottagare.
En fullständig lista över avsnitt och egenskaper som är tillgängliga för att definiera aktiviteter finns i Pipelines.
Azure Cosmos DB för MongoDB som källa
Följande egenskaper stöds i avsnittet Kopieringsaktivitetskälla:
Property | Beskrivning | Obligatoriskt |
---|---|---|
type | Typegenskapen för kopieringsaktivitetskällan måste anges till CosmosDbMongoDbApiSource. | Ja |
filter | Anger markeringsfilter med hjälp av frågeoperatorer. Om du vill returnera alla dokument i en samling utelämnar du den här parametern eller skickar ett tomt dokument ({}). | Nej |
cursorMethods.project | Anger fälten som ska returneras i dokumenten för projektion. Om du vill returnera alla fält i matchande dokument utelämnar du den här parametern. | Nej |
cursorMethods.sort | Anger i vilken ordning frågan returnerar matchande dokument. Se cursor.sort(). | Nej |
cursorMethods.limit | Anger det maximala antalet dokument som servern returnerar. Se cursor.limit(). | Nej |
cursorMethods.skip | Anger antalet dokument som ska hoppa över och varifrån MongoDB börjar returnera resultat. Se cursor.skip(). | Nej |
batchSize | Anger hur många dokument som ska returneras i varje batch av svaret från MongoDB-instansen. I de flesta fall påverkar det inte användaren eller programmet att ändra batchstorleken. Azure Cosmos DB begränsar varje batch får inte överstiga 40 MB, vilket är summan av batchStorleken för antalet dokument, så minska det här värdet om dokumentstorleken är stor. | Nej (standardvärdet är 100) |
Dricks
ADF stöder användning av BSON-dokument i strikt läge. Kontrollera att filterfrågan är i strikt läge i stället för Shell-läge. Mer beskrivning finns i MongoDB-handboken.
Exempel
"activities":[
{
"name": "CopyFromCosmosDBMongoDBAPI",
"type": "Copy",
"inputs": [
{
"referenceName": "<Azure Cosmos DB for MongoDB input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "CosmosDbMongoDbApiSource",
"filter": "{datetimeData: {$gte: ISODate(\"2018-12-11T00:00:00.000Z\"),$lt: ISODate(\"2018-12-12T00:00:00.000Z\")}, _id: ObjectId(\"5acd7c3d0000000000000000\") }",
"cursorMethods": {
"project": "{ _id : 1, name : 1, age: 1, datetimeData: 1 }",
"sort": "{ age : 1 }",
"skip": 3,
"limit": 3
}
},
"sink": {
"type": "<sink type>"
}
}
}
]
Azure Cosmos DB för MongoDB som mottagare
Följande egenskaper stöds i avsnittet Kopieringsaktivitetsmottagare:
Property | Beskrivning | Obligatoriskt |
---|---|---|
type | Typegenskapen för kopieringsaktivitetsmottagaren måste anges till CosmosDbMongoDbApiSink. | Ja |
writeBehavior | Beskriver hur du skriver data till Azure Cosmos DB. Tillåtna värden: infoga och upsert. Upserts beteende är att ersätta dokumentet om ett dokument med samma _id redan finns. Annars infogar du dokumentet.Obs! Tjänsten genererar automatiskt ett _id för ett dokument om ett _id inte har angetts i det ursprungliga dokumentet eller efter kolumnmappning. Det innebär att du måste se till att ditt dokument har ett ID för att upsert ska fungera som förväntat. |
Nej (standardvärdet är insert) |
writeBatchSize | Egenskapen writeBatchSize styr storleken på dokument som ska skrivas i varje batch. Du kan prova att öka värdet för writeBatchSize för att förbättra prestanda och minska värdet om dokumentstorleken är stor. | Nej (standardvärdet är 10 000) |
writeBatchTimeout | Väntetiden för att batchinfogningsåtgärden ska slutföras innan tidsgränsen uppnås. Det tillåtna värdet är tidsintervall. | Nej (standardvärdet är 00:30:00 –30 minuter) |
Dricks
Om du vill importera JSON-dokument som de är läser du avsnittet Importera eller exportera JSON-dokument . Om du vill kopiera från tabellformade data läser du Schemamappning.
Exempel
"activities":[
{
"name": "CopyToCosmosDBMongoDBAPI",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Document DB output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "CosmosDbMongoDbApiSink",
"writeBehavior": "upsert"
}
}
}
]
Importera och exportera JSON-dokument
Du kan använda den här Azure Cosmos DB-anslutningsappen för att enkelt:
- Kopiera dokument mellan två Azure Cosmos DB-samlingar som de är.
- Importera JSON-dokument från olika källor till Azure Cosmos DB, inklusive från MongoDB, Azure Blob Storage, Azure Data Lake Store och andra filbaserade butiker som tjänsten stöder.
- Exportera JSON-dokument från en Azure Cosmos DB-samling till olika filbaserade arkiv.
Så här skapar du en schemaagnostisk kopia:
- När du använder verktyget Kopiera data väljer du alternativet Exportera som är till JSON-filer eller Azure Cosmos DB-samling .
- När du använder aktivitetsredigering väljer du JSON-format med motsvarande filarkiv för källa eller mottagare.
Schemamappning
Information om hur du kopierar data från Azure Cosmos DB för MongoDB till tabellmottagare eller omvänd finns i schemamappning.
Specifikt för att skriva till Azure Cosmos DB, för att se till att du fyller i Azure Cosmos DB med rätt objekt-ID från dina källdata, till exempel om du har en "id"-kolumn i SQL-databastabellen och vill använda värdet för det som dokument-ID i MongoDB för insert/upsert, måste du ange rätt schemamappning enligt MongoDB strikt lägesdefinition (_id.$oid
) som följande:
Efter kopieringsaktiviteten genereras under BSON ObjectId i mottagare:
{
"_id": ObjectId("592e07800000000000000000")
}
Relaterat innehåll
En lista över datalager som kopieringsaktivitet stöder som källor och mottagare finns i datalager som stöds.