Menyalin data ke dan dari penyimpanan Azure Table menggunakan Azure Data Factory atau Synapse Analytics

BERLAKU UNTUK:Azure Data Factory Azure Synapse Analytics

Tip

Cobalah Data Factory di Microsoft Fabric, solusi analitik all-in-one untuk perusahaan. Microsoft Fabric mencakup semuanya mulai dari pergerakan data hingga ilmu data, analitik real time, kecerdasan bisnis, dan pelaporan. Pelajari cara memulai uji coba baru secara gratis!

Artikel ini menguraikan cara menggunakan Salin Aktivitas di alur Azure Data Factory dan Synapse Analytics untuk menyalin data ke dan dari penyimpanan Azure Table. Ini dibangun pada artikel Gambaran umum Salin Aktivitas yang menyajikan gambaran umum Salin Aktivitas.

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Kemampuan yang didukung

Konektor penyimpanan Azure Table ini didukung untuk kemampuan berikut ini:

Kemampuan yang didukung IR Titik akhir privat terkelola
Salin aktivitas (sumber/sink) ① ② ✓ Mengecualikan akun penyimpanan V1
Aktivitas pencarian ① ② ✓ Mengecualikan akun penyimpanan V1

① Runtime integrasi Azure ② Runtime integrasi yang dihost sendiri

Anda juga dapat menyalin data dari penyimpanan data sumber yang didukung ke penyimpanan Tabel. Anda juga dapat menyalin data dari penyimpanan Tabel ke penyimpanan data sink yang didukung. Untuk daftar penyimpanan data yang didukung sebagai sumber atau sink oleh aktivitas salin, lihat tabel Penyimpanan data yang didukung.

Secara khusus, konektor Azure Table ini mendukung penyalinan data dengan menggunakan kunci akun dan autentikasi tanda tangan akses bersama layanan.

Mulai

Untuk melakukan aktivitas Salin dengan alur, Anda dapat menggunakan salah satu alat atau SDK berikut:

Membuat layanan terkait penyimpanan Azure Table menggunakan UI

Gunakan langkah-langkah berikut untuk membuat layanan terkait penyimpanan Azure Table di UI portal Azure.

  1. Telusuri ke tab Kelola di ruang kerja Azure Data Factory atau Synapse Anda dan pilih Layanan Tertaut, lalu klik Baru:

  2. Cari Azure Table dan pilih konektor penyimpanan Azure Table.

    Screenshot of the Azure Table storage connector.

  3. Konfigurasikan detail layanan, uji koneksi, dan buat layanan tertaut baru.

    Screenshot of configuration for an Azure Table storage linked service.

Detail konfigurasi konektor

Bagian berikut memberikan detail tentang properti yang digunakan untuk menentukan entitas khusus untuk penyimpanan Tabel Azure.

Properti layanan tertaut

Menggunakan kunci akun

Anda dapat membuat layanan tertaut Azure Storage dengan menggunakan kunci akun. Ini menyediakan layanan dengan akses global ke Storage. Properti berikut ini didukung.

Properti Deskripsi Wajib
jenis Properti jenis harus disetel ke AzureTableStorage Ya
connectionString Tentukan informasi yang diperlukan untuk menyambungkan ke Storage untuk properti connectionString.
Anda juga dapat meletakkan kunci akun di Azure Key Vault dan mengeluarkanaccountKey konfigurasi dari string koneksi. Lihat sampel berikut dan artikel Menyimpan info masuk di Azure Key Vault untuk detail selengkapnya.
Ya
connectVia Runtime integrasi yang akan digunakan untuk menyambungkan ke penyimpanan data. Anda dapat menggunakan Integration Runtime Azure atau Integration Runtime yang dihost sendiri (jika penyimpanan data Anda berada di jaringan privat). Jika tidak ditentukan, Azure Integration Runtime default akan digunakan. Tidak

Catatan

Jika Anda menggunakan layanan tertaut jenis "AzureStorage", layanan tersebut masih didukung apa adanya, sementara Anda disarankan untuk menggunakan jenis layanan tertaut "AzureTableStorage" baru ini ke depannya.

Contoh:

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Contoh: menyimpan kunci akun di Azure Key Vault

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;",
            "accountKey": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Menggunakan autentikasi tanda tangan akses bersama

Anda juga dapat membuat layanan penyimpanan yang ditautkan dengan menggunakan tanda tangan akses bersama. Ini menyediakan Data Factory dengan akses terbatas/batas waktu ke semua/sumber daya tertentu di penyimpanan.

Tanda tangan akses bersama menyediakan akses yang didelegasikan ke sumber daya di akun penyimpanan Anda. Anda dapat menggunakannya untuk memberikan izin terbatas kepada klien kepada objek di akun penyimpanan Anda untuk waktu yang ditentukan dan dengan sekumpulan izin tertentu. Anda tidak perlu membagikan kunci akses akun Anda. Tanda tangan akses bersama adalah URI yang parameter kuerinya mencakup semua informasi yang diperlukan untuk akses terautentikasi ke sumber daya penyimpanan. Untuk mengakses sumber daya penyimpanan dengan tanda tangan akses bersama, klien hanya perlu meneruskan tanda tangan akses bersama ke konstruktor atau metode yang sesuai. Untuk informasi selengkapnya tentang tanda tangan akses bersama, lihat Tanda tangan akses bersama: Memahami model tanda tangan akses bersama.

Catatan

Data Factory kini mendukung tanda tangan akses bersama layanan dan tanda tangan akses bersama akun. Untuk informasi selengkapnya tentang tanda tangan akses bersama, lihat Berikan akses terbatas ke sumber daya Azure Storage dengan menggunakan tanda tangan akses berbagi (SAS).

Tip

Untuk menghasilkan tanda tangan akses bersama layanan untuk akun penyimpanan Anda, Anda bisa menjalankan perintah PowerShell berikut. Ganti tempat penampung dan beri izin yang diperlukan. $context = New-AzStorageContext -StorageAccountName <accountName> -StorageAccountKey <accountKey> New-AzStorageContainerSASToken -Name <containerName> -Context $context -Permission rwdl -StartTime <startTime> -ExpiryTime <endTime> -FullUri

Untuk menggunakan autentikasi tanda tangan akses bersama, properti berikut ini didukung.

Properti Deskripsi Wajib
jenis Properti jenis harus disetel ke AzureTableStorage Ya
sasUri Tentukan SAS URI dari URI tanda tangan akses bersama ke tabel.
Tandai bidang ini sebagai SecureString untuk menyimpannya dengan aman. Anda juga dapat meletakkan token SAS di Azure Key Vault untuk memanfaatkan rotasi otomatis dan menghapus bagian token. Lihat sampel berikut dan artikel Menyimpan info masuk di Azure Key Vault untuk detail selengkapnya.
Ya
connectVia Runtime integrasi yang akan digunakan untuk menyambungkan ke penyimpanan data. Anda dapat menggunakan Integration Runtime Azure atau Integration Runtime yang dihost sendiri (jika penyimpanan data Anda berada di jaringan privat). Jika tidak ditentukan, Azure Integration Runtime default akan digunakan. Tidak

Catatan

Jika Anda menggunakan layanan tertaut jenis "AzureStorage", layanan tersebut masih didukung apa adanya, sementara Anda disarankan untuk menggunakan jenis layanan tertaut "AzureTableStorage" baru ini ke depannya.

Contoh:

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "sasUri": {
                "type": "SecureString",
                "value": "<SAS URI of the Azure Storage resource e.g. https://<account>.table.core.windows.net/<table>?sv=<storage version>&amp;st=<start time>&amp;se=<expire time>&amp;sr=<resource>&amp;sp=<permissions>&amp;sip=<ip range>&amp;spr=<protocol>&amp;sig=<signature>>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Contoh: menyimpan kunci akun di Azure Key Vault

{
    "name": "AzureTableStorageLinkedService",
    "properties": {
        "type": "AzureTableStorage",
        "typeProperties": {
            "sasUri": {
                "type": "SecureString",
                "value": "<SAS URI of the Azure Storage resource without token e.g. https://<account>.table.core.windows.net/<table>>"
            },
            "sasToken": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Saat Anda membuat URI tanda tangan akses bersama, pertimbangkan poin berikut:

  • Tetapkan izin baca/tulis yang sesuai pada objek berdasarkan cara layanan tertaut (baca, tulis, baca/tulis) digunakan.
  • Set Waktu kedaluwarsa dengan tepat. Pastikan bahwa akses ke objek Storage tidak kedaluwarsa dalam periode aktif alur.
  • URI harus dibuat pada tingkat tabel yang tepat berdasarkan kebutuhan.

Properti himpunan data

Untuk daftar lengkap bagian dan properti yang tersedia untuk menentukan himpunan data, lihat artikel Himpunan Data. Bagian ini menyediakan daftar properti yang didukung oleh himpunan data Tabel Azure.

Untuk menyalin data ke dan dari Tabel Azure, setel properti jenis himpunan data ke TabelAzure. Properti berikut ini didukung.

Properti Deskripsi Wajib
jenis Properti jenis dari himpunan data harus diatur ke TabelAzure. Ya
tableName Nama tabel dalam instans DB penyimpanan Tabel yang dirujuk oleh layanan tertaut. Ya

Contoh:

{
    "name": "AzureTableDataset",
    "properties":
    {
        "type": "AzureTable",
        "typeProperties": {
            "tableName": "MyTable"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Azure Table storage linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Inferensi skema oleh Data Factory

Untuk penyimpanan data bebas skema seperti Azure Table, Data Factory menyimpulkan skema dengan salah satu cara berikut:

  • Jika Anda menentukan pemetaan kolom dalam aktivitas salin, Data Factory menggunakan daftar kolom sisi sumber untuk mengambil data. Dalam hal ini, jika baris tidak berisi nilai untuk kolom, nilai kosong akan disediakan untuk itu.
  • Jika Anda tidak menentukan pemetaan kolom dalam aktivitas salin, Data Factory menyimpulkan skema dengan menggunakan baris pertama dalam data. Dalam hal ini, jika baris pertama tidak berisi skema lengkap (misalnya beberapa kolom memiliki nilai null), beberapa kolom terlewatkan dalam hasil operasi salin.

Properti aktivitas salin

Untuk daftar lengkap bagian dan properti yang tersedia untuk menentukan aktivitas, lihat artikel Alur. Bagian ini menyediakan daftar properti yang didukung oleh sumber dan sink Tabel Azure.

Tabel Azure sebagai jenis sumber

Untuk menyalin data dari Tabel Azure, atur jenis sumber dalam aktivitas salin ke SumberTabelAzure. Properti berikut ini didukung di bagian sumber aktivitas salin.

Properti Deskripsi Wajib
jenis Properti jenis sumber aktivitas salin harus diatur ke SumberTabelAzure. Ya
azureTableSourceQuery Gunakan kueri penyimpanan Tabel kustom untuk membaca data.
Kueri sumber adalah peta langsung dari opsi $filter kueri yang didukung oleh Azure Table Storage, pelajari selengkapnya tentang sintaks dari dokumen ini, dan lihat contoh di bagian contoh azureTableSourceQuery berikut ini.
Tidak
azureTableSourceIgnoreTableNotFound Menunjukkan apakah akan memperbolehkan pengecualian tabel tidak ada.
Nilai yang diizinkan adalah True dan False (default).
Tidak

contoh azureTableSourceQuery

Catatan

Waktu operasi kueri Tabel Azure habis dalam 30 detik seperti yang diberlakukan oleh layanan Tabel Azure. Pelajari cara mengoptimalkan kueri dari artikel Desain untuk mengkueri.

Jika Anda ingin memfilter data terhadap kolom jenis tanggalwaktu, lihat contoh ini:

"azureTableSourceQuery": "LastModifiedTime gt datetime'2017-10-01T00:00:00' and LastModifiedTime le datetime'2017-10-02T00:00:00'"

Jika Anda ingin memfilter data terhadap kolom jenis untai (karakter), lihat contoh ini:

"azureTableSourceQuery": "LastModifiedTime ge '201710010000_0000' and LastModifiedTime le '201710010000_9999'"

Jika Anda menggunakan parameter alur, lemparkan nilai tanggalwaktu ke format yang tepat sesuai dengan sampel sebelumnya.

Tabel Azure sebagai jenis sink

Untuk menyalin data ke Tabel Azure, setel jenis sink dalam aktivitas salin ke SinkTabelAzure. Properti berikut ini didukung di bagian sink aktivitas salin.

Properti Deskripsi Wajib
jenis Properti jenis sink aktivitas salin harus diatur ke SinkTabelAzure. Ya
azureTableDefaultPartitionKeyValue Nilai kunci partisi default yang dapat digunakan oleh sink. Tidak
azureTablePartitionKeyName Tentukan nama kolom yang nilainya digunakan sebagai kunci partisi. Jika tidak ditentukan, AzureTableDefaultPartitionKeyValue digunakan sebagai kunci partisi. Tidak
azureTableRowKeyName Tentukan nama kolom yang nilai kolomnya digunakan sebagai kunci baris. Jika tidak ditentukan, gunakan GUID untuk setiap baris. Tidak
azureTableInsertType Mode untuk menyisipkan data ke dalam Azure Table. Properti ini mengontrol apakah baris yang ada dalam tabel output dengan partisi yang cocok dan tombol baris memiliki nilainya diganti atau digabungkan.

Nilai yang diperbolehkan gabung (default) dan ganti.

Pengaturan ini berlaku di tingkat baris bukan tingkat tabel. Tidak ada opsi yang menghapus baris dalam tabel output yang tidak ada di input. Untuk mempelajari tentang cara kerja pengaturan ini (gabungkan dan ganti), lihat Menyisipkan atau Menggabungkan Entitas dan Menyisipkan atau Mengganti topik Entitas.
Tidak
writeBatchSize Menyisipkan data ke dalam Azure Table saat writeBatchSize atau writeBatchTimeout tercapai.
Nilai yang diperbolehkan adalah bilangan bulat (jumlah baris).
Tidak (defaultnya adalah 10.000)
writeBatchTimeout Menyisipkan data ke dalam Azure Table saat writeBatchSize atau writeBatchTimeout tercapai.
Nilai yang diperbolehkan adalah rentang waktu Contohnya adalah "00:20:00" untuk 20 menit.
Tidak (default adalah 90 detik, batas waktu default klien penyimpanan)
 maxConcurrent Koneksi ions Batas atas koneksi bersamaan yang ditetapkan ke penyimpanan data selama eksekusi aktivitas. Menentukan nilai hanya saat Anda ingin membatasi koneksi bersamaan.  Tanpa

Contoh:

"activities":[
    {
        "name": "CopyToAzureTable",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Azure Table output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "AzureTableSink",
                "azureTablePartitionKeyName": "<column name>",
                "azureTableRowKeyName": "<column name>"
            }
        }
    }
]

azureTablePartitionKeyName

Petakan kolom sumber ke kolom tujuan dengan menggunakan properti "penerjemah" sebelum Anda bisa menggunakan kolom tujuan sebagai azureTablePartitionKeyName.

Dalam contoh berikut, kolom sumber DivisionID dipetakan ke kolom tujuan DivisionID:

"translator": {
    "type": "TabularTranslator",
    "columnMappings": "DivisionID: DivisionID, FirstName: FirstName, LastName: LastName"
}

"DivisionID" ditentukan sebagai kunci partisi.

"sink": {
    "type": "AzureTableSink",
    "azureTablePartitionKeyName": "DivisionID"
}

Pemetaan jenis data untuk Tabel Azure

Saat Anda menyalin data dari dan ke Azure Table, pemetaan berikut ini digunakan dari jenis data Azure Table ke jenis data interim yang digunakan secara internal dalam Data Factory. Untuk mempelajari bagaimana aktivitas salin memetakan skema sumber dan jenis data ke sink, lihat Pemetaan skema dan jenis data.

Saat Anda memindahkan data ke dan dari Tabel Azure, pemetaan berikut yang ditentukan oleh Tabel Azure digunakan dari jenis OData Tabel Azure ke jenis .NET dan sebaliknya.

Jenis data Tabel Azure Jenis data layanan sementara Detail
Edm.Binary byte[] Array byte hingga 64 KB.
Edm.Boolean bool Nilai Boolean.
Edm.DateTime DateTime Nilai 64-bit yang dinyatakan sebagai Waktu Universal Terkoordinasi (UTC). Rentang TanggalWaktu yang didukung dimulai tengah malam, 1 Januari 1601 M (C.E.), UTC. Rentang berakhir 31 Desember 9999.
Edm.Double ganda Nilai titik float 64-bit.
Edm.Guid Guid Pengidentifikasi unik global 128-bit.
Edm.Int32 Int32 bilangan bulat 32-bit.
Edm.Int64 Int64 bilangan bulat 64-bit.
Edm.String String Nilai yang dikodekan UTF-16. Nilai untai (karakter) bisa mencapai 64 KB.

Properti aktivitas pencarian

Untuk mempelajari detail tentang properti, lihat Aktivitas pencarian.

Untuk daftar penyimpanan data yang didukung sebagai sumber dan sink oleh aktivitas salin, lihat Penyimpanan data yang didukung.