Kopiera data från MongoDB med Azure Data Factory eller Synapse Analytics (äldre)
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 kopieringsaktiviteten i en Azure Data Factory- eller Synapse Analytics-pipeline för att kopiera data från en MongoDB-databas. Den bygger på översiktsartikeln för kopieringsaktivitet som visar en allmän översikt över kopieringsaktiviteten.
Viktigt!
Tjänsten har släppt en ny MongoDB-anslutningsapp som ger bättre inbyggt MongoDB-stöd jämfört med den här ODBC-baserade implementeringen. Mer information finns i artikeln om MongoDB-anslutningsprogram .
Funktioner som stöds
Du kan kopiera data från MongoDB-databasen till valfritt mottagardatalager som stöds. En lista över datalager som stöds som källor/mottagare av kopieringsaktiviteten finns i tabellen Datalager som stöds.
Mer specifikt stöder den här MongoDB-anslutningsappen:
- MongoDB-versionerna 2.4, 2.6, 3.0, 3.2, 3.4 och 3.6.
- Kopiera data med grundläggande eller anonym autentisering.
Förutsättningar
Om ditt datalager finns i ett lokalt nätverk, ett virtuellt Azure-nätverk eller Amazon Virtual Private Cloud måste du konfigurera en lokalt installerad integrationskörning för att ansluta till det.
Om ditt datalager är en hanterad molndatatjänst kan du använda Azure Integration Runtime. Om åtkomsten är begränsad till IP-adresser som är godkända i brandväggsreglerna kan du lägga till Azure Integration Runtime-IP-adresser i listan över tillåtna.
Du kan också använda funktionen för integrering av hanterade virtuella nätverk i Azure Data Factory för att få åtkomst till det lokala nätverket utan att installera och konfigurera en lokalt installerad integrationskörning.
Mer information om de nätverkssäkerhetsmekanismer och alternativ som stöds av Data Factory finns i Strategier för dataåtkomst.
Integration Runtime har en inbyggd MongoDB-drivrutin. Därför behöver du inte installera någon drivrutin manuellt när du kopierar data från MongoDB.
Komma 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 MongoDB med hjälp av användargränssnittet
Använd följande steg för att skapa en länkad tjänst till 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 Mongo och välj MongoDB-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 används för att definiera Data Factory-entiteter som är specifika för MongoDB-anslutningsappen.
Länkade tjänstegenskaper
Följande egenskaper stöds för den länkade MongoDB-tjänsten:
Property | Beskrivning | Obligatoriskt |
---|---|---|
type | Typegenskapen måste anges till: MongoDb | Ja |
server | IP-adress eller värdnamn för MongoDB-servern. | Ja |
port | TCP-port som MongoDB-servern använder för att lyssna efter klientanslutningar. | Nej (standard är 27017) |
databaseName | Namnet på den MongoDB-databas som du vill komma åt. | Ja |
authenticationType | Typ av autentisering som används för att ansluta till MongoDB-databasen. Tillåtna värden är: Grundläggande och Anonym. |
Ja |
användarnamn | Användarkonto för att få åtkomst till MongoDB. | Ja (om grundläggande autentisering används). |
password | Lösenordet för användaren. Markera det här fältet som en SecureString för att lagra det på ett säkert sätt eller referera till en hemlighet som lagras i Azure Key Vault. | Ja (om grundläggande autentisering används). |
authSource | Namnet på den MongoDB-databas som du vill använda för att kontrollera dina autentiseringsuppgifter för autentisering. | Nej. För grundläggande autentisering är standard att använda administratörskontot och databasen som anges med egenskapen databaseName. |
enableSsl | Anger om anslutningarna till servern krypteras med hjälp av TLS. Standardvärdet är "false". | Nej |
allowSelfSignedServerCert | Anger om självsignerade certifikat ska tillåtas från servern. Standardvärdet är "false". | Nej |
connectVia | Integration Runtime som ska användas för att ansluta till datalagret. Läs mer i avsnittet Förutsättningar . Om den inte anges använder den standardkörningen för Azure-integrering. | Nej |
Exempel:
{
"name": "MongoDBLinkedService",
"properties": {
"type": "MongoDb",
"typeProperties": {
"server": "<server name>",
"databaseName": "<database name>",
"authenticationType": "Basic",
"username": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"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 MongoDB-datauppsättning:
Property | Beskrivning | Obligatoriskt |
---|---|---|
type | Datamängdens typegenskap måste anges till: MongoDbCollection | Ja |
collectionName | Namnet på samlingen i MongoDB-databasen. | Ja |
Exempel:
{
"name": "MongoDbDataset",
"properties": {
"type": "MongoDbCollection",
"linkedServiceName": {
"referenceName": "<MongoDB linked service name>",
"type": "LinkedServiceReference"
},
"typeProperties": {
"collectionName": "<Collection name>"
}
}
}
Kopiera egenskaper för aktivitet
En fullständig lista över avsnitt och egenskaper som är tillgängliga för att definiera aktiviteter finns i artikeln Pipelines . Det här avsnittet innehåller en lista över egenskaper som stöds av MongoDB-källan.
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: MongoDbSource | Ja |
query | Använd den anpassade SQL-92-frågan för att läsa data. Till exempel: välj * från MyTable. | Nej (om "collectionName" i datamängden har angetts) |
Exempel:
"activities":[
{
"name": "CopyFromMongoDB",
"type": "Copy",
"inputs": [
{
"referenceName": "<MongoDB input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "MongoDbSource",
"query": "SELECT * FROM MyTable"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Dricks
När du anger SQL-frågan bör du vara uppmärksam på DateTime-formatet. Till exempel: SELECT * FROM Account WHERE LastModifiedDate >= '2018-06-01' AND LastModifiedDate < '2018-06-02'
eller för att använda parameter SELECT * FROM Account WHERE LastModifiedDate >= '@{formatDateTime(pipeline().parameters.StartTime,'yyyy-MM-dd HH:mm:ss')}' AND LastModifiedDate < '@{formatDateTime(pipeline().parameters.EndTime,'yyyy-MM-dd HH:mm:ss')}'
Schema efter Data Factory
Azure Data Factory-tjänsten härleder schema från en MongoDB-samling med hjälp av de senaste 100 dokumenten i samlingen. Om dessa 100 dokument inte innehåller fullständigt schema kan vissa kolumner ignoreras under kopieringsåtgärden.
Datatypsmappning för MongoDB
När du kopierar data från MongoDB används följande mappningar från MongoDB-datatyper till mellanliggande datatyper som används inom tjänsten internt. Se Schema- och datatypmappningar för att lära dig mer om hur kopieringsaktivitet mappar källschemat och datatypen till mottagaren.
MongoDB-datatyp | Datatyp för interimstjänst |
---|---|
Binära | Byte[] |
Booleskt | Booleskt |
Date | Datum/tid |
NumberDouble | Dubbel |
NumberInt | Int32 |
NumberLong | Int64 |
ObjectID | String |
String | String |
UUID | GUID |
Objekt | Omnormaliseras till platta kolumner med "_" som kapslad avgränsare |
Kommentar
Mer information om stöd för matriser med hjälp av virtuella tabeller finns i avsnittet Stöd för komplexa typer med hjälp av virtuella tabeller .
För närvarande stöds inte följande MongoDB-datatyper: DBPointer, JavaScript, Max/Min-nyckel, Reguljärt uttryck, Symbol, Tidsstämpel, Odefinierat.
Stöd för komplexa typer med hjälp av virtuella tabeller
Tjänsten använder en inbyggd ODBC-drivrutin för att ansluta till och kopiera data från mongoDB-databasen. För komplexa typer som matriser eller objekt med olika typer i dokumenten normaliserar drivrutinen data till motsvarande virtuella tabeller. Mer specifikt, om en tabell innehåller sådana kolumner, genererar drivrutinen följande virtuella tabeller:
- En bastabell som innehåller samma data som den verkliga tabellen förutom de komplexa kolumnerna. Bastabellen använder samma namn som den verkliga tabellen som den representerar.
- En virtuell tabell för varje komplex typkolumn, som expanderar kapslade data. De virtuella tabellerna namnges med namnet på den verkliga tabellen, en avgränsare "_" och namnet på matrisen eller objektet.
Virtuella tabeller refererar till data i den verkliga tabellen, vilket gör det möjligt för drivrutinen att komma åt de normaliserade data. Du kan komma åt innehållet i MongoDB-matriser genom att fråga och ansluta till de virtuella tabellerna.
Exempel
Exempeltabell här är till exempel en MongoDB-tabell som har en kolumn med en matris med objekt i varje cell – Fakturor och en kolumn med en matris med skalära typer – Klassificeringar.
_id | Kundnamn | Fakturor | Servicenivå | Bedömningar |
---|---|---|---|---|
1111 | ABC | [{invoice_id:"123", item:"toaster", price:"456", discount:"0.2"}, {invoice_id:"124", item:"oven", price: "1235", discount: "0.2"}] | Silver | [5,6] |
2222 | XYZ | [{invoice_id:"135", item:"fridge", price: "12543", rabatt: "0.0"}] | Guld | [1,2] |
Drivrutinen skulle generera flera virtuella tabeller för att representera den här enskilda tabellen. Den första virtuella tabellen är bastabellen med namnet "ExampleTable", som visas i exemplet. Bastabellen innehåller alla data i den ursprungliga tabellen, men data från matriserna har utelämnats och expanderats i de virtuella tabellerna.
_id | Kundnamn | Servicenivå |
---|---|---|
1111 | ABC | Silver |
2222 | XYZ | Guld |
Följande tabeller visar de virtuella tabeller som representerar de ursprungliga matriserna i exemplet. Dessa tabeller innehåller följande:
- En referens tillbaka till den ursprungliga primärnyckelkolumnen som motsvarar raden i den ursprungliga matrisen (via kolumnen _id)
- En indikation på positionen för data i den ursprungliga matrisen
- Expanderade data för varje element i matrisen
Tabell "ExampleTable_Invoices":
_id | ExampleTable_Invoices_dim1_idx | invoice_id | sak | price | Discount |
---|---|---|---|---|---|
1111 | 0 | 123 | brödrost | 456 | 0.2 |
1111 | 1 | 124 | ugn | 1235 | 0.2 |
2222 | 0 | 135 | kylskåp | 12543 | 0,0 |
Tabell "ExampleTable_Ratings":
_id | ExampleTable_Ratings_dim1_idx | ExampleTable_Ratings |
---|---|---|
1111 | 0 | 5 |
1111 | 1 | 6 |
2222 | 0 | 1 |
2222 | 1 | 2 |
Relaterat innehåll
En lista över datalager som stöds som källor och mottagare av kopieringsaktiviteten finns i datalager som stöds.