Memetakan kolom himpunan data sumber ke kolom himpunan data tujuan

Catatan

Artikel ini berlaku untuk Data Factory versi 1.

Pemetaan kolom dapat digunakan untuk menentukan bagaimana kolom yang ditentukan dalam "struktur" tabel sumber dipetakan ke kolom yang ditentukan dalam "struktur" tabel sink. Properti columnMapping tersedia di bagian typeProperties dari aktivitas Salin.

Pemetaan kolom mendukung skenario berikut:

  • Semua kolom dalam struktur himpunan data sumber dipetakan ke semua kolom dalam struktur himpunan data sink.
  • Subset kolom dalam struktur himpunan data sumber dipetakan ke semua kolom dalam struktur himpunan data sink.

Berikut adalah kondisi kesalahan yang mengakibatkan pengecualian:

  • Kolom lebih sedikit atau lebih banyak dalam "struktur" tabel sink daripada yang ditentukan dalam pemetaan.
  • Pemetaan duplikat.
  • Hasil kueri SQL tidak memiliki nama kolom yang ditentukan dalam pemetaan.

Catatan

Sampel berikut adalah untuk Azure SQL dan Azure Blob, tetapi berlaku untuk setiap penyimpanan data yang mendukung himpunan data persegi panjang. Sesuaikan himpunan data dan definisi layanan tertaut dalam contoh untuk diarahkan ke data di sumber data yang relevan.

Contoh 1 – pemetaan kolom dari Azure SQL ke blob Azure

Dalam contoh ini, tabel input memiliki struktur dan mengarah ke tabel SQL di 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
            }
        }
    }
}

Dalam contoh ini, tabel input memiliki struktur dan mengarah ke blob di Azure SQL Database.

{
    "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
        }
    }
}

JSON berikut menentukan aktivitas salinan dalam saluran. Kolom dari sumber dipetakan ke kolom di sink (columnMappings) dengan menggunakan properti Penerjemah.

{
    "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
        }
}

Alur pemetaan kolom:

Column mapping flow

Sampel 2 - pemetaan kolom dengan kueri SQL dari Azure SQL ke blob Azure

Dalam contoh ini, kueri SQL digunakan untuk mengekstrak data dari Azure SQL, bukan hanya menentukan nama tabel dan nama kolom di bagian "struktur".

{
    "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
        }
}

Dalam hal ini, hasil kueri dipetakan terlebih dahulu ke kolom yang ditentukan dalam "struktur" sumber. Selanjutnya, kolom dari "struktur" sumber dipetakan ke kolom dalam "struktur" sink dengan aturan yang ditentukan dalam columnMappings. Misalkan kueri menampilkan 5 kolom, dua kolom lebih banyak daripada yang ditentukan dalam "struktur" sumber.

Alur pemetaan kolom

Column mapping flow-2

Langkah berikutnya

Lihat artikel untuk tutorial tentang cara menggunakan Aktivitas Salin: