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:

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.

  1. 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:

  2. Sök efter Mongo och välj MongoDB-anslutningsappen.

    Skärmbild av MongoDB-anslutningsappen.

  3. Konfigurera tjänstinformationen, testa anslutningen och skapa den nya länkade tjänsten.

    Skärmbild av konfiguration av länkad tjänst för MongoDB.

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

En lista över datalager som stöds som källor och mottagare av kopieringsaktiviteten finns i datalager som stöds.