Brongegevenssetkolommen toewijzen aan doelgegevenssetkolommen

Notitie

Dit artikel is van toepassing op versie 1 van Data Factory.

Kolomtoewijzing kan worden gebruikt om op te geven hoe kolommen die zijn opgegeven in de structuur van de brontabel worden toegewezen aan kolommen die zijn opgegeven in de 'structuur' van de sinktabel. De eigenschap columnMapping is beschikbaar in de sectie typeProperties van het Copy-activiteit.

Kolomtoewijzing ondersteunt de volgende scenario's:

  • Alle kolommen in de structuur van de brongegevensset worden toegewezen aan alle kolommen in de sinkgegevenssetstructuur.
  • Een subset van de kolommen in de structuur van de brongegevensset wordt toegewezen aan alle kolommen in de sinkgegevenssetstructuur.

Hier volgen foutvoorwaarden die resulteren in een uitzondering:

  • Minder kolommen of meer kolommen in de 'structuur' van de sinktabel dan opgegeven in de toewijzing.
  • Dubbele toewijzing.
  • SQL queryresultaat heeft geen kolomnaam die is opgegeven in de toewijzing.

Notitie

De volgende voorbeelden zijn bedoeld voor Azure SQL en Azure Blob, maar zijn van toepassing op elk gegevensarchief dat rechthoekige gegevenssets ondersteunt. Pas gegevensset- en gekoppelde servicedefinities in voorbeelden aan om te verwijzen naar gegevens in de relevante gegevensbron.

Voorbeeld 1: kolomtoewijzing van Azure SQL naar Azure-blob

In dit voorbeeld heeft de invoertabel een structuur en verwijst deze naar een SQL tabel in Azure SQL Database.

{
    "name": "AzureSQLInput",
    "properties": {
        "structure": 
         [
           { "name": "userid"},
           { "name": "name"},
           { "name": "group"}
         ],
        "type": "AzureSqlTable",
        "linkedServiceName": "AzureSqlLinkedService",
        "typeProperties": {
            "tableName": "MyTable"
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        },
        "external": true,
        "policy": {
            "externalData": {
                "retryInterval": "00:01:00",
                "retryTimeout": "00:10:00",
                "maximumRetry": 3
            }
        }
    }
}

In dit voorbeeld heeft de uitvoertabel een structuur en verwijst deze naar een blob in een Azure Blob-opslag.

{
    "name": "AzureBlobOutput",
    "properties":
    {
         "structure": 
          [
                { "name": "myuserid"},
                { "name": "myname" },
                { "name": "mygroup"}
          ],
        "type": "AzureBlob",
        "linkedServiceName": "StorageLinkedService",
        "typeProperties": {
            "folderPath": "mycontainer/myfolder",
            "fileName":"myfile.csv",
            "format":
            {
                "type": "TextFormat",
                "columnDelimiter": ","
            }
        },
        "availability":
        {
            "frequency": "Hour",
            "interval": 1
        }
    }
}

De volgende JSON definieert een kopieeractiviteit in een pijplijn. De kolommen van de bron die zijn toegewezen aan kolommen in sink (columnMappings) met behulp van de eigenschap Vertalen.

{
    "name": "CopyActivity",
    "description": "description", 
    "type": "Copy",
    "inputs":  [ { "name": "AzureSQLInput"  } ],
    "outputs":  [ { "name": "AzureBlobOutput" } ],
    "typeProperties":    {
        "source":
        {
            "type": "SqlSource"
        },
        "sink":
        {
            "type": "BlobSink"
        },
        "translator": 
        {
            "type": "TabularTranslator",
            "ColumnMappings": "UserId: MyUserId, Group: MyGroup, Name: MyName"
        }
    },
   "scheduler": {
          "frequency": "Hour",
          "interval": 1
        }
}

Kolomtoewijzingsstroom:

Column mapping flow

Voorbeeld 2: kolomtoewijzing met SQL query van Azure SQL naar Azure-blob

In dit voorbeeld wordt een SQL query gebruikt om gegevens uit Azure SQL op te halen in plaats van gewoon de tabelnaam en de kolomnamen op te geven in de sectie Structuur.

{
    "name": "CopyActivity",
    "description": "description", 
    "type": "CopyActivity",
    "inputs":  [ { "name": " AzureSQLInput"  } ],
    "outputs":  [ { "name": " AzureBlobOutput" } ],
    "typeProperties":
    {
        "source":
        {
            "type": "SqlSource",
            "SqlReaderQuery": "$$Text.Format('SELECT * FROM MyTable WHERE StartDateTime = \\'{0:yyyyMMdd-HH}\\'', WindowStart)"
        },
        "sink":
        {
            "type": "BlobSink"
        },
        "Translator": 
        {
            "type": "TabularTranslator",
            "ColumnMappings": "UserId: MyUserId, Group: MyGroup,Name: MyName"
        }
    },
    "scheduler": {
          "frequency": "Hour",
          "interval": 1
        }
}

In dit geval worden de queryresultaten eerst toegewezen aan kolommen die zijn opgegeven in 'structuur' van de bron. Vervolgens worden de kolommen van de bron 'structuur' toegewezen aan kolommen in sink 'structuur' met regels die zijn opgegeven in columnMappings. Stel dat de query 5 kolommen retourneert, twee meer kolommen dan die zijn opgegeven in de 'structuur' van de bron.

Kolomtoewijzingsstroom

Column mapping flow-2

Volgende stappen

Zie het artikel voor een zelfstudie over het gebruik van kopieeractiviteit: