Menyalin dan mentransformasi data di Azure Synapse Analytics menggunakan Azure Data Factory atau alur Synapse

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 Aktivitas Salin di Azure Data Factory atau alur Synapse untuk menyalin data dari dan ke Azure Synapse Analytics, dan menggunakan Aliran Data untuk mentransformasi data di Azure Data Lake Storage Gen2. Untuk mempelajari tentang Azure Data Factory, baca artikel pengantar.

Kemampuan yang didukung

Konektor Azure Synapse Analytics ini didukung untuk kemampuan berikut:

Kemampuan yang didukung IR Titik akhir privat terkelola
Salin aktivitas (sumber/sink) (1) (2)
Memetakan aliran data (sumber/sink) (1)
Aktivitas pencarian (1) (2)
Aktivitas GetMetadata (1) (2)
Aktivitas skrip (1) (2)
Aktivitas prosedur tersimpan (1) (2)

① Runtime integrasi Azure ② Runtime integrasi yang dihost sendiri

Untuk aktivitas Salin, konektor Azure Synapse Analytics ini mendukung fungsi-fungsi ini:

  • Salin data dengan menggunakan autentikasi SQL dan autentikasi token Aplikasi Microsoft Entra dengan perwakilan layanan atau identitas terkelola untuk sumber daya Azure.
  • Sebagai sumber, ambil data dengan menggunakan kueri SQL atau prosedur tersimpan. Anda juga dapat memilih untuk menyalin secara paralel dari sumber Azure Synapse Analytics, lihat bagian Menyalin secara paralel dari Azure Synapse Analytics untuk detailnya.
  • Sebagai sink, muat data menggunakan pernyataan COPY atau PolyBase atau sisipan massal. Kami merekomendasikan pernyataan COPY atau PolyBase untuk performa penyalinan yang lebih baik. Konektor juga mendukung pembuatan tabel tujuan secara otomatis dengan DISTRIBUTION = ROUND_ROBIN jika tidak ada berdasarkan skema sumber.

Penting

Jika Anda menyalin data menggunakan Azure Integration Runtime, konfigurasikan aturan firewall tingkat server sehingga layanan Azure dapat mengakses server SQL logis. Jika Anda menyalin data dengan menggunakan Runtime integrasi yang dihost sendiri, konfigurasikan firewall untuk memungkinkan rentang IP yang sesuai. Rentang ini mencakup IP komputer yang digunakan untuk menyambungkan ke Azure Synapse Analytics.

Memulai

Tip

Untuk mencapai kinerja terbaik, gunakan PolyBase atau pernyataan COPY untuk memuat data ke Azure Synapse Analytics. Bagian Gunakan PolyBase untuk memuat data ke dalam Azure Synapse Analytics dan Gunakan pernyataan COPY untuk memuat data ke Azure Synapse Analytics memiliki detail. Untuk penelusuran dengan kasus penggunaan, lihat Memuat 1 TB ke Azure Synapse Analytics di bawah 15 menit dengan Azure Data Factory.

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

Buat layanan tertaut Azure Synapse Analytics menggunakan UI

Gunakan langkah-langkah berikut untuk membuat layanan terkait Azure Synapse Analytics 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 Synapse dan pilih konektor Azure Synapse Analytics.

    Tangkapan layar konektor Azure Synapse Analytics.

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

    Screenshot konfigurasi untuk layanan tertaut Azure Synapse Analytics.

Detail konfigurasi konektor

Bagian berikut ini menyediakan detail tentang properti yang menentukan entitas Data Factory dan alur Synapse khusus untuk konektor Azure Synapse Analytics.

Properti layanan tertaut

Properti generik ini didukung untuk layanan tertaut Azure Synapse Analytics:

Properti Deskripsi Wajib
jenis Properti type harus diatur ke AzureSqlDW. Ya
connectionString Tentukan informasi yang diperlukan untuk menyambungkan ke instans Azure Synapse Analytics untuk properti connectionString.
Tandai bidang ini sebagai SecureString untuk menyimpannya dengan aman. Anda juga dapat memasukkan kata sandi/kunci perwakilan layanan di Azure Key Vault, dan jika itu adalah autentikasi SQL, tarik konfigurasi password keluar dari string koneksi. Lihat contoh JSON di bawah tabel dan artikel Menyimpan kredensial di Azure Key Vault dengan detail selengkapnya.
Ya
azureCloudType Untuk autentikasi perwakilan layanan, tentukan jenis lingkungan cloud Azure tempat aplikasi Microsoft Entra Anda didaftarkan.
Nilai yang diizinkan adalah AzurePublic, AzureChina, AzureUsGovernment, dan AzureGermany. Secara default, pabrik data atau lingkungan cloud alur Synapse digunakan.
No
connectVia Runtime integrasi yang akan digunakan untuk menyambungkan ke penyimpanan data. Anda dapat menggunakan Integration Runtime Azure atau Runtime integrasi yang dihost sendiri (jika penyimpanan data Anda berada di jaringan privat). Jika tidak ditentukan, Azure Integration Runtime default akan digunakan. No

Untuk jenis autentikasi yang berbeda, lihat setiap bagian berikut tentang properti, prasyarat dan sampel JSON spesifik:

Tip

Saat membuat layanan tertaut untuk kumpulan SQL tanpa server di Azure Synapse dari portal Azure:

  1. Untuk Metode Pemilihan Akun, pilih Masuk secara manual.
  2. Tempelkan nama domain yang sepenuhnya memenuhi syarat dari titik akhir tanpa server. Anda dapat menemukan ini di halaman Gambaran Umum portal Azure untuk ruang kerja Synapse Anda, di properti di bawah Titik akhir SQL Tanpa Server. Contohnya,myserver-ondemand.sql-azuresynapse.net.
  3. Untuk Nama database, berikan nama database di kumpulan SQL tanpa server.

Tip

Jika Anda menemui kesalahan dengan kode kesalahan "UserErrorFailedToConnectToSqlServer" dan pesan seperti "Batas sesi untuk database adalah XXX dan telah tercapai.", tambahkan Pooling=false ke string koneksi Anda dan coba lagi.

Autentikasi SQL

Untuk menggunakan jenis autentikasi seperti autentikasi SQL, tentukan properti generik yang dijelaskan di bagian sebelumnya.

Contoh layanan tertaut yang menggunakan autentikasi SQL

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Kata sandi di Azure Key Vault:

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30",
            "password": {
                "type": "AzureKeyVaultSecret",
                "store": {
                    "referenceName": "<Azure Key Vault linked service name>",
                    "type": "LinkedServiceReference"
                },
                "secretName": "<secretName>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Autentikasi perwakilan layanan

Untuk menggunakan autentikasi perwakilan layanan, selain properti generik yang dijelaskan di bagian sebelumnya, tentukan properti berikut ini:

Properti Deskripsi Wajib diisi
servicePrincipalId Menentukan ID klien aplikasi. Ya
servicePrincipalKey Tentukan kunci aplikasi. Tandai bidang ini sebagai SecureString untuk menyimpannya dengan aman, atau mereferensikan rahasia yang disimpan di Azure Key Vault. Ya
penyewa Tentukan informasi penyewa (nama domain atau ID penyewa) tempat aplikasi Anda berada. Anda bisa mengambilnya dengan mengarahkan mouse ke sudut kanan atas portal Microsoft Azure. Ya

Anda juga harus mengikuti langkah-langkah di bawah:

  1. Buat aplikasi Microsoft Entra dari portal Azure. Catat nama aplikasi dan nilai berikut yang menentukan layanan tertaut:

    • ID aplikasi
    • Kunci Aplikasi
    • ID Penyewa
  2. Provisikan administrator Microsoft Entra untuk server Anda di portal Azure jika Anda belum melakukannya. Administrator Microsoft Entra dapat menjadi pengguna Microsoft Entra atau grup Microsoft Entra. Jika Anda memberi grup dengan identitas terkelola peran admin, lompati langkah 3 dan 4. Administrator akan memiliki akses penuh ke database.

  3. Buat pengguna database mandiri untuk perwakilan layanan. Koneksi ke gudang data dari atau tempat Anda ingin menyalin data dengan menggunakan alat seperti SSMS, dengan identitas Microsoft Entra yang memiliki setidaknya izin UBAH PENGGUNA APA PUN. Jalankan T-SQL berikut:

    CREATE USER [your_application_name] FROM EXTERNAL PROVIDER;
    
  4. Berikan izin yang diperlukan perwakilan layanan seperti yang biasa Anda lakukan untuk pengguna SQL atau orang lain. Jalankan kode berikut, atau lihat opsi lainnya di sini. Jika Anda ingin menggunakan PolyBase untuk memuat data, pelajari izin database yang diperlukan.

    EXEC sp_addrolemember db_owner, [your application name];
    
  5. Konfigurasikan layanan tertaut Azure Synapse Analytics di Azure Data Factory atau ruang kerja Synapse.

Contoh layanan tertaut yang menggunakan autentikasi perwakilan layanan

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;Connection Timeout=30",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "type": "SecureString",
                "value": "<service principal key>"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Identitas terkelola yang ditetapkan sistem untuk autentikasi sumber daya Azure

Pabrik data atau ruang kerja Synapse dapat dikaitkan dengan identitas terkelola yang ditetapkan sistem untuk sumber daya Azure yang mewakili sumber daya. Anda dapat menggunakan identitas terkelola ini untuk autentikasi Azure Synapse Analytics. Sumber daya yang ditunjuk dapat mengakses dan menyalin data dari atau ke gudang data Anda menggunakan identitas ini.

Untuk menggunakan autentikasi identitas terkelola yang ditetapkan sistem, tentukan properti generik yang dijelaskan di bagian sebelumnya, dan ikuti langkah-langkah ini.

  1. Provisikan administrator Microsoft Entra untuk server Anda di portal Azure jika Anda belum melakukannya. Administrator Microsoft Entra dapat menjadi pengguna Microsoft Entra atau grup Microsoft Entra. Jika Anda memberi grup dengan identitas terkelola yang ditetapkan sistem sebagai peran admin, lewati langkah 3 dan 4. Administrator akan memiliki akses penuh ke database.

  2. Buat pengguna database mandiri untuk identitas terkelola yang ditetapkan sistem. Koneksi ke gudang data dari atau tempat Anda ingin menyalin data dengan menggunakan alat seperti SSMS, dengan identitas Microsoft Entra yang memiliki setidaknya izin UBAH PENGGUNA APA PUN. Jalankan T-SQL berikut.

    CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;
    
  3. Berikan izin yang diperlukan identitas terkelola yang ditetapkan sistem seperti yang biasa Anda lakukan untuk pengguna SQL dan lainnya. Jalankan kode berikut, atau lihat opsi lainnya di sini. Jika Anda ingin menggunakan PolyBase untuk memuat data, pelajari izin database yang diperlukan.

    EXEC sp_addrolemember db_owner, [your_resource_name];
    
  4. Konfigurasikan layanan tertaut Azure Synapse Analytics.

Contoh:

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;Connection Timeout=30"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Autentikasi identitas terkelola yang ditetapkan pengguna

Pabrik data atau ruang kerja Synapse dapat dikaitkan dengan identitas terkelola yang ditetapkan pengguna yang mewakili sumber daya. Anda dapat menggunakan identitas terkelola ini untuk autentikasi Azure Synapse Analytics. Sumber daya yang ditunjuk dapat mengakses dan menyalin data dari atau ke gudang data Anda menggunakan identitas ini.

Untuk menggunakan autentikasi identitas terkelola yang ditetapkan pengguna, selain properti generik yang dijelaskan di bagian sebelumnya, tentukan properti berikut ini:

Properti Deskripsi Wajib diisi
informasi masuk Tentukan identitas terkelola yang ditetapkan pengguna sebagai objek kredensial. Ya

Anda juga harus mengikuti langkah-langkah di bawah:

  1. Provisikan administrator Microsoft Entra untuk server Anda di portal Azure jika Anda belum melakukannya. Administrator Microsoft Entra dapat menjadi pengguna Microsoft Entra atau grup Microsoft Entra. Jika Anda memberikan peran admin dengan identitas terkelola yang ditetapkan pengguna kepada grup, lewati langkah 3. Administrator akan memiliki akses penuh ke database.

  2. Buat pengguna database mandiri untuk identitas terkelola yang ditetapkan pengguna. Koneksi ke gudang data dari atau tempat Anda ingin menyalin data dengan menggunakan alat seperti SSMS, dengan identitas Microsoft Entra yang memiliki setidaknya izin UBAH PENGGUNA APA PUN. Jalankan T-SQL berikut.

    CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;
    
  3. Buat satu atau beberapa identitas terkelola yang ditetapkan pengguna dan berikan izin yang diperlukan identitas terkelola yang ditetapkan pengguna seperti yang biasa Anda lakukan untuk pengguna SQL dan lainnya. Jalankan kode berikut, atau lihat opsi lainnya di sini. Jika Anda ingin menggunakan PolyBase untuk memuat data, pelajari izin database yang diperlukan.

    EXEC sp_addrolemember db_owner, [your_resource_name];
    
  4. Tetapkan satu atau beberapa identitas terkelola yang ditetapkan pengguna ke pabrik data Anda dan buat info masuk untuk setiap identitas terkelola yang ditetapkan pengguna.

  5. Konfigurasikan layanan tertaut Azure Synapse Analytics.

Contoh:

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;Connection Timeout=30",
            "credential": {
                "referenceName": "credential1",
                "type": "CredentialReference"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Properti himpunan data

Untuk daftar lengkap bagian dan properti yang tersedia untuk menentukan himpunan data, lihat artikel Himpunan Data.

Properti berikut ini didukung untuk himpunan data Azure Synapse Analytics:

Properti Deskripsi Wajib
jenis Properti type himpunan data harus diatur ke AzureSqlDWTable. Ya
skema Nama skema. Tidak untuk sumber, Ya untuk sink
tabel Nama tabel/tampilan. Tidak untuk sumber, Ya untuk sink
tableName Nama tabel/tampilan dengan skema. Properti ini didukung untuk kompatibilitas mundur. Untuk beban kerja baru, gunakan schema dan table. Tidak untuk sumber, Ya untuk sink

Contoh properti himpunan data

{
    "name": "AzureSQLDWDataset",
    "properties":
    {
        "type": "AzureSqlDWTable",
        "linkedServiceName": {
            "referenceName": "<Azure Synapse Analytics linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "typeProperties": {
            "schema": "<schema_name>",
            "table": "<table_name>"
        }
    }
}

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 Azure Synapse Analytics.

Azure Synapse Analytics sebagai sumber

Tip

Untuk memuat data dari Azure Synapse Analytics secara efisien dengan menggunakan pemartisian data, pelajari selengkapnya dari Penyalinan paralel dari Azure Synapse Analytics.

Untuk menyalin data dari Azure Synapse Analytics, atur properti type di sumber Aktivitas Salin ke SqlDWSource. Properti berikut ini didukung di bagian sumber Aktivitas Penyalinan:

Properti Deskripsi Wajib
jenis Properti type dari sumber Aktivitas Salin harus diatur ke SqlDWSource. Ya
sqlReaderQuery Gunakan kueri SQL kustom untuk membaca data. Contoh: select * from MyTable. No
sqlReaderStoredProcedureName Nama prosedur tersimpan yang membaca data dari tabel sumber. Pernyataan SQL terakhir harus merupakan pernyataan SELECT dalam prosedur tersimpan. No
storedProcedureParameters Parameter untuk prosedur tersimpan.
Nilai yang diizinkan adalah pasangan nama atau nilai. Nama dan casing parameter harus sesuai dengan nama dan casing parameter prosedur yang disimpan.
No
isolationLevel Menentukan perilaku penguncian transaksi untuk sumber SQL. Nilai yang diperbolehkan adalah: ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Rekam jepret. Jika tidak ditentukan, tingkat isolasi default database digunakan. Untuk informasi selengkapnya, lihat system.data.isolationlevel. No
partitionOptions Menentukan opsi pemartisian data yang digunakan untuk memuat data dari Azure Synapse Analytics.
Nilai yang diizinkan adalah: Tidak ada (default), PhysicalPartitionsOfTable, dan DynamicRange.
Ketika opsi partisi diaktifkan (yaitu, bukan None), tingkat paralelisme untuk memuat data secara bersamaan dari Azure Synapse Analytics dikendalikan oleh pengaturan parallelCopies pada aktivitas salin.
No
partitionSettings Tentukan grup pengaturan untuk pemartisian data.
Terapkan saat opsi partisi bukan None.
No
Di bawah partitionSettings:
partitionColumnName Tentukan nama kolom sumber dalam bilangan bulat atau jenis tanggal/waktu (int, smallint, bigint, date, smalldatetime, datetime, datetime2, atau datetimeoffset) yang akan digunakan oleh partisi rentang untuk salinan paralel. Jika tidak ditentukan, indeks atau kunci primer tabel terdeteksi secara otomatis dan digunakan sebagai kolom partisi.
Terapkan saat opsi partisi adalah DynamicRange. Jika Anda menggunakan kueri untuk mengambil data sumber, kaitkan ?AdfDynamicRangePartitionCondition di klausul WHERE. Misalnya, lihat bagian Penyalinan paralel dari database SQL.
No
partitionUpperBound Nilai maksimum kolom partisi untuk pemisahan rentang partisi. Nilai ini digunakan untuk menentukan langkah partisi, bukan untuk memfilter baris dalam tabel. Semua baris dalam tabel atau hasil kueri akan dipartisi dan disalin. Jika tidak ditentukan, aktivitas salin secara otomatis mendeteksi nilai.
Terapkan saat opsi partisi adalah DynamicRange. Misalnya, lihat bagian Penyalinan paralel dari database SQL.
No
partitionLowerBound Nilai minimum kolom partisi untuk pemisahan rentang partisi. Nilai ini digunakan untuk menentukan langkah partisi, bukan untuk memfilter baris dalam tabel. Semua baris dalam tabel atau hasil kueri akan dipartisi dan disalin. Jika tidak ditentukan, aktivitas salin secara otomatis mendeteksi nilai.
Terapkan saat opsi partisi adalah DynamicRange. Misalnya, lihat bagian Penyalinan paralel dari database SQL.
No

Perhatikan poin berikut:

  • Saat menggunakan prosedur tersimpan di sumber untuk mengambil data, perhatikan apakah prosedur tersimpan dirancang sebagai mengembalikan skema yang berbeda ketika nilai parameter yang berbeda diteruskan, Anda mungkin mengalami kegagalan atau melihat hasil yang tidak terduga saat mengimpor skema dari antarmuka pengguna atau saat menyalin data ke database SQL dengan pembuatan tabel otomatis.

Contoh: menggunakan kueri SQL

"activities":[
    {
        "name": "CopyFromAzureSQLDW",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure Synapse Analytics input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlDWSource",
                "sqlReaderQuery": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Contoh: menggunakan prosedur tersimpan

"activities":[
    {
        "name": "CopyFromAzureSQLDW",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure Synapse Analytics input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlDWSource",
                "sqlReaderStoredProcedureName": "CopyTestSrcStoredProcedureWithParameters",
                "storedProcedureParameters": {
                    "stringData": { "value": "str3" },
                    "identifier": { "value": "$$Text.Format('{0:yyyy}', <datetime parameter>)", "type": "Int"}
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Sampel prosedur tersimpan:

CREATE PROCEDURE CopyTestSrcStoredProcedureWithParameters
(
    @stringData varchar(20),
    @identifier int
)
AS
SET NOCOUNT ON;
BEGIN
    select *
    from dbo.UnitTestSrcTable
    where dbo.UnitTestSrcTable.stringData != stringData
    and dbo.UnitTestSrcTable.identifier != identifier
END
GO

Azure Synapse Analytics sebagai sink

Azure Data Factory dan alur Synapse mendukung tiga cara untuk memuat data ke Azure Synapse Analytics.

Cara tercepat dan paling terukur untuk memuat data adalah melalui pernyataan COPY atau PolyBase.

Untuk menyalin data ke Azure Synapse Analytics, atur jenis sink di Aktivitas Salin ke SqlDWSink. Properti berikut ini didukung di Salin Aktivitas bagian sink:

Properti Deskripsi Wajib
jenis Properti type sink Aktivitas Salin harus diatur ke SqlDWSink. Ya
allowPolyBase Menunjukkan apakah akan menggunakan PolyBase untuk memuat data ke Azure Synapse Analytics. allowCopyCommand dan allowPolyBase tidak bisa keduanya bernilai true.

Lihat Menggunakan PolyBase untuk memuat data ke bagian Azure Synapse Analytics untuk batasan dan detail.

Nilai yang diizinkan adalah True dan False (default).
Tidak.
Terapkan saat menggunakan PolyBase.
polyBaseSettings Grup properti yang dapat ditentukan ketika properti allowPolybase diatur ke true. Tidak.
Terapkan saat menggunakan PolyBase.
allowCopyCommand Menunjukkan apakah akan menggunakan pernyataan COPY untuk memuat data ke Azure Synapse Analytics. allowCopyCommand dan allowPolyBase tidak bisa keduanya bernilai true.

Lihat bagian Menggunakan pernyataan COPY untuk memuat data ke Azure Synapse Analytics untuk batasan dan detail.

Nilai yang diizinkan adalah True dan False (default).
Tidak.
Terapkan saat menggunakan SALIN.
copyCommandSettings Grup properti yang dapat ditentukan ketika properti allowCopyCommand diatur ke TRUE. Tidak.
Terapkan saat menggunakan SALIN.
writeBatchSize Jumlah baris yang akan disisipkan ke dalam tabel SQL per batch.

Nilai yang diizinkan adalah bilangan bulat (jumlah baris). Secara default, layanan secara dinamis menentukan ukuran batch yang sesuai berdasarkan ukuran baris.
Tidak.
Terapkan saat menggunakan penyisipan massal.
writeBatchTimeout Waktu tunggu untuk operasi sisipkan, upsert, dan prosedur tersimpan selesai sebelum waktu habis.
Nilai yang diperbolehkan adalah untuk rentang waktu. Contohnya adalah "00:30:00" untuk 30 menit. Jika tidak ada nilai yang ditentukan, batas waktu default ke "00:30:00".
Tidak.
Terapkan saat menggunakan penyisipan massal.
preCopyScript Menentukan kueri SQL untuk Aktivitas Salin untuk dijalankan sebelum menulis data ke Azure Synapse Analytics di setiap eksekusi. Gunakan properti ini untuk membersihkan data yang telah dimuat sebelumnya. No
tableOption Menentukan apakah akan membuat tabel sink secara otomatis, jika tidak ada, berdasarkan skema sumber. Nilai yang diizinkan adalah: none (default), autoCreate. No
disableMetricsCollection Layanan ini mengumpulkan metrik seperti DWU Azure Synapse Analytics untuk pengoptimalan dan rekomendasi performa penyalinan, yang memperkenalkan akses DB master tambahan. Jika Anda khawatir dengan perilaku ini, tentukan true untuk menonaktifkannya. Tidak (defaultnya adalah false)
 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
WriteBehavior Tentukan perilaku penulisan untuk aktivitas penyalinan untuk memuat data ke Azure SQL Database.
Nilai yang diizinkan adalah Insert dan Upsert. Secara default, layanan menggunakan insert untuk memuat data.
No
upsertSettings Tentukan grup pengaturan untuk perilaku penulisan.
Terapkan saat opsi WriteBehavior adalah Upsert.
No
Di bawah upsertSettings:
kunci Tentukan nama kolom untuk identifikasi baris unik. Salah satu kunci atau serangkaian kunci dapat digunakan. Jika tidak ditentukan, kunci primer digunakan. No
interimSchemaName Tentukan skema sementara untuk membuat tabel sementara. Catatan: pengguna harus memiliki izin untuk membuat dan menghapus tabel. Secara default, tabel interim akan berbagi skema yang sama dengan tabel sink. No

Contoh 1: sink Azure Synapse Analytics

"sink": {
    "type": "SqlDWSink",
    "allowPolyBase": true,
    "polyBaseSettings":
    {
        "rejectType": "percentage",
        "rejectValue": 10.0,
        "rejectSampleValue": 100,
        "useTypeDefault": true
    }
}

Contoh 2: Upsert data

"sink": {
    "type": "SqlDWSink",
    "writeBehavior": "Upsert",
    "upsertSettings": {
        "keys": [
             "<column name>"
        ],
        "interimSchemaName": "<interim schema name>"
    },
}

Penyalinan paralel dari Azure Synapse Analytics

Konektor Azure Synapse Analytics dalam aktivitas salin menyediakan pemartisian data bawaan untuk menyalin data secara paralel. Anda dapat menemukan opsi pemartisian data pada tab Sumber aktivitas salin.

Cuplikan layar opsi partisi

Saat Anda mengaktifkan penyalinan terpartisi, aktivitas salin menjalankan kueri paralel terhadap sumber Azure Synapse Analytics Anda untuk memuat data menurut partisi. Derajat paralel dikendalikan oleh pengaturan parallelCopies pada aktivitas salin. Misalnya, jika Anda mengatur parallelCopies ​​ke empat, layanan secara bersamaan membuat dan menjalankan empat kueri berdasarkan opsi dan pengaturan partisi yang Anda tentukan, dan setiap kueri mengambil sebagian data dari Azure Synapse Analytics Anda.

Sebaiknya Anda mengaktifkan penyalinan paralel dengan pemartisian data terutama ketika memuat data dalam jumlah besar dari Azure Synapse Analytics. Berikut ini adalah konfigurasi yang disarankan untuk skenario yang berbeda. Saat menyalin data ke penyimpanan data berbasis file, disarankan untuk menulis ke folder sebagai beberapa file (hanya tentukan nama folder), dalam hal ini performanya lebih baik daripada menulis ke satu file.

Skenario Pengaturan yang disarankan
Pemuatan penuh dari tabel besar, dengan partisi fisik. Opsi partisi: Partisi fisik tabel.

Selama eksekusi, layanan secara otomatis mendeteksi partisi fisik, dan menyalin data berdasarkan partisi.

Untuk memeriksa apakah tabel Anda memiliki partisi fisik atau tidak, Anda dapat merujuk ke kueri ini.
Pemuatan penuh dari tabel besar, tanpa partisi fisik, sedangkan dengan bilangan bulat atau kolom tanggalwaktu untuk pemartisian data. Opsi partisi: Partisi rentang dinamis.
Kolom partisi (opsional): Menentukan kolom yang digunakan untuk mempartisi data. Jika tidak ditentukan, indeks atau kolom kunci primer digunakan.
Batas atas partisi dan batas bawah partisi (opsional): Menentukan apakah Anda ingin menentukan langkah partisi. Ini bukan untuk memfilter baris dalam tabel, semua baris dalam tabel akan dipartisi dan disalin. Jika tidak ditentukan, aktivitas salin secara otomatis mendeteksi nilai.

Misalnya, jika kolom partisi "ID" Anda memiliki rentang nilai dari 1 hingga 100, dan Anda menetapkan batas bawah sebagai 20 dan batas atas sebagai 80, dengan salinan paralel sebagai 4, layanan mengambil data dengan 4 partisi - ID dalam rentang <=20, [21, 50], [51, 80], dan >=81, masing-masing.
Memuat sejumlah besar data dengan menggunakan kueri kustom, tanpa partisi fisik, sedangkan dengan kolom bilangan bulat atau tanggal/tanggalwaktu untuk pemartisian data. Opsi partisi: Partisi rentang dinamis.
Kueri: SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>.
Kolom partisi: Menentukan kolom yang digunakan untuk mempartisi data.
Batas atas partisi dan batas bawah partisi (opsional): Menentukan apakah Anda ingin menentukan langkah partisi. Ini bukan untuk memfilter baris dalam tabel, semua baris dalam hasil kueri akan dipartisi dan disalin. Jika tidak ditentukan, aktivitas salin secara otomatis mendeteksi nilai.

Selama eksekusi, layanan mengganti ?AdfRangePartitionColumnName dengan nama kolom aktual dan rentang nilai untuk setiap partisi, dan mengirim ke Azure Synapse Analytics.
Misalnya, jika kolom partisi "ID" Anda memiliki rentang nilai dari 1 hingga 100, dan Anda menetapkan batas bawah sebagai 20 dan batas atas sebagai 80, dengan salinan paralel sebagai 4, layanan mengambil data dengan 4 partisi- ID dalam rentang <=20, [21, 50], [51, 80], dan >=81, secara berurutan.

Berikut adalah sampel kueri lainnya untuk skenario yang berbeda:
1. Kueri seluruh tabel:
SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition
2. Kueri dari tabel dengan pemilihan kolom dan filter where-clause tambahan:
SELECT <column_list> FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>
3. Kueri dengan subkueri:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>
4. Kueri dengan partisi dalam subkueri:
SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition) AS T

Praktik terbaik untuk memuat data dengan opsi partisi:

  1. Pilih kolom yang khas sebagai kolom partisi (seperti kunci primer atau kunci unik) untuk menghindari penyimpangan data.
  2. Jika tabel memiliki partisi bawaan, gunakan opsi partisi "Partisi fisik tabel" untuk mendapatkan performa yang lebih baik.
  3. Jika Anda menggunakan Azure Integration Runtime untuk menyalin data, Anda dapat mengatur "Unit Integrasi Data (DIU)" yang lebih besar (>4) untuk menggunakan lebih banyak sumber daya komputasi. Periksa skenario yang berlaku di sana.
  4. "Tingkat paralelisme penyalinan" mengontrol jumlah partisi, mengatur jumlah ini terlalu besar kadang menurunkan kinerja, rekomendasikan mengatur angka ini sebagai (DIU atau jumlah simpul Runtime integrasi yang dihost sendiri) * (2 hingga 4).
  5. Perhatikan bahwa Azure Synapse Analytics dapat menjalankan maksimum 32 kueri sekaligus, pengaturan "Derajat paralelisme salinan" terlalu besar dapat menyebabkan masalah pembatasan Synapse.

Contoh: pemuatan penuh dari tabel besar dengan partisi fisik

"source": {
    "type": "SqlDWSource",
    "partitionOption": "PhysicalPartitionsOfTable"
}

Contoh: kueri dengan partisi rentang dinamis

"source": {
    "type": "SqlDWSource",
    "query": "SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>",
    "partitionOption": "DynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<partition_column_name>",
        "partitionUpperBound": "<upper_value_of_partition_column (optional) to decide the partition stride, not as data filter>",
        "partitionLowerBound": "<lower_value_of_partition_column (optional) to decide the partition stride, not as data filter>"
    }
}

Sampel kueri untuk memeriksa partisi fisik

SELECT DISTINCT s.name AS SchemaName, t.name AS TableName, c.name AS ColumnName, CASE WHEN c.name IS NULL THEN 'no' ELSE 'yes' END AS HasPartition
FROM sys.tables AS t
LEFT JOIN sys.objects AS o ON t.object_id = o.object_id
LEFT JOIN sys.schemas AS s ON o.schema_id = s.schema_id
LEFT JOIN sys.indexes AS i ON t.object_id = i.object_id
LEFT JOIN sys.index_columns AS ic ON ic.partition_ordinal > 0 AND ic.index_id = i.index_id AND ic.object_id = t.object_id
LEFT JOIN sys.columns AS c ON c.object_id = ic.object_id AND c.column_id = ic.column_id
LEFT JOIN sys.types AS y ON c.system_type_id = y.system_type_id
WHERE s.name='[your schema]' AND t.name = '[your table name]'

Jika tabel memiliki partisi fisik, Anda akan melihat "HasPartition" sebagai "ya".

Menggunakan pernyataan COPY untuk memuat data ke Azure Synapse Analytics

Menggunakan pernyataan COPY adalah cara sederhana dan fleksibel untuk memuat data ke Azure Synapse Analytics dengan throughput tinggi. Untuk mempelajari detail selengkapnya, periksa Memuat data secara massal menggunakan pernyataan COPY

  • Jika data sumber Anda ada di Azure Blob atau Azure Data Lake Storage Gen2, dan formatnya kompatibel dengan pernyataan COPY, Anda dapat menggunakan aktivitas penyalinan untuk langsung menjalankan pernyataan COPY agar Azure Synapse Analytics menarik data dari sumber. Untuk detailnya, lihat Salinan langsung menggunakan pernyataan COPY.
  • Jika penyimpanan dan format data sumber Anda awalnya tidak didukung oleh pernyataan COPY, gunakan fitur Penyalinan bertahap menggunakan pernyataan COPY sebagai gantinya. Fitur penyalinan bertahap juga memberi Anda troughput yang lebih baik. Fitur secara otomatis mengonversi data menjadi format yang kompatibel dengan pernyataan COPY, menyimpan data dalam penyimpanan Azure Blob, kemudian memanggil pernyataan COPY untuk memuat data ke Azure Synapse Analytics.

Tip

Saat menggunakan pernyataan COPY dengan Runtime integrasi Azure, Unit Integrasi Data (DIU) yang efektif selalu 2. Menyetel DIU tidak memengaruhi performa, karena memuat data dari penyimpanan didukung oleh mesin Azure Synapse.

Penyalinan langsung menggunakan pernyataan COPY

Pernyataan COPY Azure Synapse Analytics secara langsung mendukung Azure Blob, Azure Data Lake Storage Gen1 dan Azure Data Lake Storage Gen2. Jika data sumber Anda memenuhi kriteria yang dijelaskan di bagian ini, gunakan pernyataan COPY untuk menyalin langsung dari penyimpanan data sumber ke Azure Synapse Analytics. Jika tidak, gunakan Penyalinan bertahap menggunakan pernyataan COPY. layanan memeriksa pengaturan dan gagal menjalankan aktivitas penyalinan jika kriteria tidak terpenuhi.

  1. Layanan tertaut dan format sumber dengan jenis dan metode autentikasi berikut:

    Jenis penyimpanan data sumber yang didukung Format yang didukung Jenis autentikasi sumber yang didukung
    Azure Blob Teks dibatasi Autentikasi kunci akun, autentikasi tanda tangan akses bersama, autentikasi perwakilan layanan, autentikasi identitas terkelola yang ditetapkan sistem
      Parquet Autentikasi kunci akun, autentikasi tanda tangan akses bersama
      ORC Autentikasi kunci akun, autentikasi tanda tangan akses bersama
    Azure Data Lake Storage Gen2 Teks dibatasi
    Parquet
    ORC
    Autentikasi kunci akun, autentikasi perwakilan layanan, autentikasi identitas terkelola yang ditetapkan sistem

    Penting

  2. Pengaturan format adalah sebagai berikut:

    1. Untuk Parquet: compression bisa tanpa kompresi, Snappy, atau GZip.
    2. Untuk ORC: compression bisa tanpa kompresi, zlib, atau Snappy.
    3. Untuk teks yang dibatasi:
      1. rowDelimiter secara eksplisit diatur sebagai karakter tunggal atau "\r\n", nilai default tidak didukung.
      2. nullValue dibiarkan sebagai default atau diatur ke string kosong ("").
      3. encodingName dibiarkan sebagai default atau diatur ke utf-8 atau utf-16.
      4. escapeChar harus sama dengan quoteChar, dan tidak kosong.
      5. skipLineCount dibiarkan sebagai default atau diatur ke 0.
      6. compression bisa tanpa kompresi, atau GZip.
  3. Jika sumber Anda adalah folder, recursive dalam aktivitas penyalinan harus diatur ke benar, dan wildcardFilename harus * atau *.*.

  4. wildcardFolderPath , wildcardFilename (selain *atau *.*), modifiedDateTimeStart, modifiedDateTimeEnd, prefix, enablePartitionDiscovery dan additionalColumns tidak ditentukan.

Pengaturan pernyataan COPY berikut ini didukung di allowCopyCommand dalam aktivitas salin:

Properti Deskripsi Wajib diisi
defaultValues Menentukan nilai default untuk setiap kolom target di Azure Synapse Analytics. Nilai default dalam properti menimpa batasan DEFAULT yang diatur di gudang data, dan kolom identitas tidak dapat memiliki nilai default. No
additionalOptions Opsi tambahan yang akan diteruskan ke pernyataan COPY Azure Synapse Analytics secara langsung dalam klausa "With" dalam pernyataan COPY. Kutip nilai sesuai kebutuhan untuk menyelaraskan dengan persyaratan pernyataan COPY. No
"activities":[
    {
        "name": "CopyFromAzureBlobToSQLDataWarehouseViaCOPY",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "ParquetDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "ParquetSource",
                "storeSettings":{
                    "type": "AzureBlobStorageReadSettings",
                    "recursive": true
                }
            },
            "sink": {
                "type": "SqlDWSink",
                "allowCopyCommand": true,
                "copyCommandSettings": {
                    "defaultValues": [
                        {
                            "columnName": "col_string",
                            "defaultValue": "DefaultStringValue"
                        }
                    ],
                    "additionalOptions": {
                        "MAXERRORS": "10000",
                        "DATEFORMAT": "'ymd'"
                    }
                }
            },
            "enableSkipIncompatibleRow": true
        }
    }
]

Penyalinan bertahap menggunakan pernyataan COPY

Ketika data sumber Anda tidak kompatibel secara asli dengan pernyataan COPY, aktifkan penyalinan data melalui penahapan sementara Azure Blob atau Azure Data Lake Storage Gen2 (bukan Azure Premium Storage). Dalam hal ini, layanan secara otomatis mengonversi data untuk memenuhi persyaratan format data pernyataan COPY. Kemudian layanan memanggil pernyataan COPY untuk memuat data ke Azure Synapse Analytics. Akhirnya, itu membersihkan data sementara Anda dari penyimpanan. Lihat Penyalinan bertahap untuk detail tentang menyalin data dengan menggunakan cara bertahap.

Untuk menggunakan fitur ini, buat layanan tertaut Azure Blob Storage atau layanan tertaut Azure Data Lake Storage Gen2 dengan kunci akun atau autentikasi identitas yang dikelola sistem yang merujuk ke akun penyimpanan Azure sebagai penyimpanan sementara.

Penting

  • Saat Anda menggunakan autentikasi identitas terkelola untuk layanan tertaut penahapan, pelajari konfigurasi yang diperlukan untuk Azure Blob dan Azure Data Lake Storage Gen2. Anda juga perlu memberikan izin ke identitas terkelola ruang kerja Azure Synapse Analytics di akun Azure Blob Storage atau Azure Data Lake Storage Gen2 Anda. Untuk mempelajari cara memberikan izin ini, lihat Memberikan izin ke identitas terkelola ruang kerja.
  • Jika Azure Storage penahapan Anda dikonfigurasi dengan titik akhir layanan VNet, Anda harus menggunakan autentikasi identitas terkelola dengan mengaktifkan "izinkan layanan Microsoft tepercaya" pada akun penyimpanan, lihat Dampak penggunaan Titik Akhir Layanan VNet dengan penyimpanan Azure.

Penting

Jika Azure Storage bertahap Anda dikonfigurasi dengan Titik Akhir Privat Terkelola dan firewall penyimpanan diaktifkan, Anda harus menggunakan autentikasi identitas terkelola dan memberikan izin Pembaca Data Blob Penyimpanan ke Synapse SQL Server untuk memastikannya dapat mengakses file bertahap selama pemuatan pernyataan COPY.

"activities":[
    {
        "name": "CopyFromSQLServerToSQLDataWarehouseViaCOPYstatement",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "SQLServerDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlSource",
            },
            "sink": {
                "type": "SqlDWSink",
                "allowCopyCommand": true
            },
            "stagingSettings": {
                "linkedServiceName": {
                    "referenceName": "MyStagingStorage",
                    "type": "LinkedServiceReference"
                }
            }
        }
    }
]

Menggunakan PolyBase untuk memuat data ke Azure Synapse Analytics

Menggunakan PolyBase adalah cara efisien untuk memuat data dalam jumlah besar ke Azure Synapse Analytics dengan throughput tinggi. Anda dapat melihat keuntungan besar dalam throughput dengan menggunakan PolyBase alih-alih mekanisme BULKINSERT default.

  • Jika data sumber Anda berada di Azure Blob, Azure Data Lake Storage Gen1 atau Azure Data Lake Storage Gen2, dan formatnya kompatibel dengan PolyBase, Anda dapat menggunakan aktivitas salin untuk secara langsung memanggil PolyBase untuk memungkinkan Azure Synapse Analytics menarik data dari sumber. Untuk detailnya, lihat Menyalin langsung dengan menggunakan PolyBase.
  • Jika penyimpanan dan format data sumber Anda awalnya tidak didukung oleh PolyBase, gunakan fitur Penyalinan bertahap menggunakan PolyBase. Fitur penyalinan bertahap juga memberi Anda troughput yang lebih baik. Ini secara otomatis mengonversi data ke format yang kompatibel dengan PolyBase, menyimpan data di penyimpanan Azure Blob, lalu memanggil PolyBase untuk memuat data ke Azure Synapse Analytics.

Tip

Pelajari selengkapnya tentang Praktik terbaik untuk menggunakan PolyBase. Saat menggunakan PolyBase dengan Runtime integrasi Azure, Unit Integrasi Data (DIU) yang efektif untuk penyimpanan langsung atau bertahap ke Synapse selalu 2. Menyetel DIU tidak berdampak pada kinerja, karena memuat data dari penyimpanan didukung oleh mesin Synapse.

Pengaturan PolyBase berikut ini didukung di polyBaseSettings dalam aktivitas salin:

Properti Deskripsi Wajib diisi
rejectValue Menentukan angka atau persentase baris yang bisa ditolak sebelum kueri gagal.

Pelajari selengkapnya tentang opsi penolakan PolyBase di bagian Argumen CREATE EXTERNAL TABLE (Transact-SQL).

Nilai yang diizinkan adalah 0 (default), 1, 2, dll.
No
rejectType Menentukan apakah opsi rejectValue sebagai nilai literal atau persentase.

Nilai yang diizinkan adalah Nilai (default) dan Persentase.
No
rejectSampleValue Menentukan jumlah baris yang akan diambil sebelum PolyBase menghitung ulang persentase baris yang ditolak.

Nilai yang diizinkan adalah 1, 2, dll.
Ya, jika rejectType adalah persentase.
useTypeDefault Menentukan cara menangani nilai yang hilang dalam file teks berbatas saat PolyBase mengambil data dari file teks.

Pelajari selengkapnya tentang properti ini dari bagian Argumen di BUAT FORMAT FILE EKSTERNAL (Transact-SQL).

Nilai yang diizinkan adalah True dan False (default).

No

Penyalinan langsung menggunakan PolyBase

Azure Synapse Analytics PolyBase secara langsung mendukung Azure Blob, Azure Data Lake Storage Gen1, dan Azure Data Lake Storage Gen2. Jika data sumber Anda memenuhi kriteria yang dijelaskan di bagian ini, gunakan PolyBase untuk menyalin secara langsung dari penyimpanan data sumber ke Azure Synapse Analytics. Jika tidak, gunakan Penyalinan bertahap dengan menggunakan PolyBase.

Tip

Untuk menyalin data secara efisien ke Azure Synapse Analytics secara efisien, pelajari selengkapnya dari Azure Data Factory membuatnya lebih mudah dan nyaman untuk mengungkap wawasan dari data saat menggunakan Data Lake Store dengan Azure Synapse Analytics.

Jika persyaratan tidak terpenuhi, layanan memeriksa pengaturan dan secara otomatis kembali ke mekanisme BULKINSERT untuk perpindahan data.

  1. Layanan tertaut sumber adalah dengan jenis dan metode autentikasi berikut:

    Jenis penyimpanan data sumber yang didukung Jenis autentikasi sumber yang didukung
    Azure Blob Autentikasi kunci akun, autentikasi identitas terkelola yang ditetapkan sistem
    Azure Data Lake Storage Gen1 Autentikasi perwakilan layanan
    Azure Data Lake Storage Gen2 Autentikasi kunci akun, autentikasi identitas terkelola yang ditetapkan sistem

    Penting

  2. Format data sumber adalah Parquet, ORC, atauTeks berbatas, dengan konfigurasi berikut:

    1. Jalur folder tidak berisi filter wildcard.
    2. Nama file kosong, atau menunjuk ke satu file. Jika Anda menentukan nama file wildcard dalam aktivitas salin, itu hanya bisa * atau *.*.
    3. rowDelimiter adalah default, \n, \r\n, atau \r.
    4. nullValue dibiarkan sebagai default atau diatur ke string kosong (""), dan treatEmptyAsNull dibiarkan sebagai default atau diatur ke true.
    5. encodingName dibiarkan sebagai default atau diatur ke utf-8.
    6. quoteChar, escapeChar, dan skipLineCount tidak ditentukan. Dukungan PolyBase melewati baris header, yang dapat dikonfigurasi sebagai firstRowAsHeader.
    7. compression bisa tanpa kompresi, GZip, atau Deflate.
  3. Jika sumber Anda adalah folder, recursive di aktivitas salin harus diatur ke true.

  4. wildcardFolderPath , wildcardFilename, modifiedDateTimeStart, modifiedDateTimeEnd, prefix, enablePartitionDiscovery, dan additionalColumns tidak ditentukan.

Catatan

Jika sumber Anda adalah folder, harap diperhatikan bahwa PolyBase mengambil file dari folder dan semua subfoldernya, dan tidak mengambil data dari file yang nama filenya dimulai dengan garis bawah (_) atau titik (.), seperti yang didokumentasikan di sini - argumen LOCATION.

"activities":[
    {
        "name": "CopyFromAzureBlobToSQLDataWarehouseViaPolyBase",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "ParquetDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "ParquetSource",
                "storeSettings":{
                    "type": "AzureBlobStorageReadSettings",
                    "recursive": true
                }
            },
            "sink": {
                "type": "SqlDWSink",
                "allowPolyBase": true
            }
        }
    }
]

Penyalinan bertahap menggunakan PolyBase

Saat data sumber Anda tidak kompatibel secara asli dengan PolyBase, aktifkan penyalinan data melalui penahapan sementara Azure Blob atau Azure Data Lake Storage Gen2 (bukan Azure Premium Storage). Dalam hal ini, layanan secara otomatis mengonversi data untuk memenuhi persyaratan format data PolyBase. Kemudian memanggil PolyBase untuk memuat data ke Azure Synapse Analytics. Akhirnya, itu membersihkan data sementara Anda dari penyimpanan. Lihat Penyalinan bertahap untuk detail tentang menyalin data dengan menggunakan cara bertahap.

Untuk menggunakan fitur ini, buat layanan tertaut Azure Blob Storage atau layanan tertaut Azure Data Lake Storage Gen2 dengan kunci akun atau autentikasi identitas terkelola yang merujuk ke akun penyimpanan Azure sebagai penyimpanan sementara.

Penting

  • Saat Anda menggunakan autentikasi identitas terkelola untuk layanan tertaut penahapan, pelajari konfigurasi yang diperlukan untuk Azure Blob dan Azure Data Lake Storage Gen2. Anda juga perlu memberikan izin ke identitas terkelola ruang kerja Azure Synapse Analytics di akun Azure Blob Storage atau Azure Data Lake Storage Gen2 Anda. Untuk mempelajari cara memberikan izin ini, lihat Memberikan izin ke identitas terkelola ruang kerja.
  • Jika Azure Storage penahapan Anda dikonfigurasi dengan titik akhir layanan VNet, Anda harus menggunakan autentikasi identitas terkelola dengan mengaktifkan "izinkan layanan Microsoft tepercaya" pada akun penyimpanan, lihat Dampak penggunaan Titik Akhir Layanan VNet dengan penyimpanan Azure.

Penting

Jika Azure Storage penahapan Anda dikonfigurasi dengan Titik Akhir Pribadi Terkelola dan mengaktifkan firewall penyimpanan, Anda harus menggunakan autentikasi identitas terkelola dan memberikan izin Storage Blob Data Reader ke Synapse SQL Server untuk memastikan dapat mengakses file yang ditahapkan selama pemuatan PolyBase.

"activities":[
    {
        "name": "CopyFromSQLServerToSQLDataWarehouseViaPolyBase",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "SQLServerDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlSource",
            },
            "sink": {
                "type": "SqlDWSink",
                "allowPolyBase": true
            },
            "enableStaging": true,
            "stagingSettings": {
                "linkedServiceName": {
                    "referenceName": "MyStagingStorage",
                    "type": "LinkedServiceReference"
                }
            }
        }
    }
]

Praktik terbaik untuk menggunakan PolyBase

Bagian berikut ini menyediakan praktik terbaik selain praktik yang disebutkan dalam Praktik terbaik untuk Azure Synapse Analytics.

Izin database yang diperlukan

Untuk menggunakan PolyBase, pengguna yang memuat data ke Azure Synapse Analytics harus memiliki izin "CONTROL" pada database target. Salah satu cara untuk mencapainya adalah dengan menambahkan pengguna tersebut sebagai anggota peran db_owner. Pelajari cara melakukannya di Gambaran umum Azure Synapse Analytics.

Ukuran baris dan batasan tipe data

Pemuatan PolyBase terbatas pada baris yang lebih kecil dari 1 MB. Ini tidak dapat digunakan untuk memuat ke VARCHR (MAX), NVARCHAR(MAX), atau VARBINARY(MAX). Untuk informasi selengkapnya, lihat Batas kapasitas layanan Azure Synapse Analytics.

Saat data sumber Anda memiliki baris yang lebih besar dari 1 MB, Anda mungkin ingin memisahkan tabel sumber menjadi beberapa tabel kecil secara vertikal. Pastikan bahwa ukuran terbesar setiap baris tidak melebihi batas. Tabel yang lebih kecil kemudian dapat dimuat menggunakan PolyBase dan digabungkan bersama di Azure Synapse Analytics.

Atau, untuk data dengan kolom lebar seperti itu, Anda dapat menggunakan non-PolyBase untuk memuat data dengan mematikan pengaturan "izinkan PolyBase".

Kelas sumber daya Azure Synapse Analytics

Untuk mencapai throughput sebaik mungkin, tetapkan kelas sumber daya yang lebih besar kepada pengguna yang memuat data ke Azure Synapse Analytics melalui PolyBase.

Pemecahan masalah PolyBase

Memuat ke kolom Desimal

Jika data sumber Anda dalam format teks atau penyimpanan lain yang tidak kompatibel dengan PolyBase (menggunakan penyalinan bertahap dan PolyBase), dan berisi nilai kosong yang akan dimuat ke dalam kolom Desimal Azure Synapse Analytics, Anda mungkin mendapatkan kesalahan berikut:

ErrorCode=FailedDbOperation, ......HadoopSqlException: Error converting data type VARCHAR to DECIMAL.....Detailed Message=Empty string can't be converted to DECIMAL.....

Solusinya adalah dengan tidak memilih opsi "Gunakan jenis default" (sebagai false) di sink aktivitas penyalinan -> pengaturan PolyBase. "USE_TYPE_DEFAULT" adalah konfigurasi asli PolyBase, yang menentukan cara menangani nilai yang hilang dalam file teks berbatas ketika PolyBase mengambil data dari file teks.

Memeriksa properti tableName di Azure Synapse Analytics

Tabel berikut ini memberikan contoh cara menentukan properti tableName di himpunan data JSON. Ini menunjukkan beberapa kombinasi skema dan nama tabel.

Skema DB Nama tabel properti tableName JSON
dbo MyTable MyTable atau dbo.MyTable atau [dbo].[MyTable]
dbo1 MyTable dbo1.MyTable atau [dbo1].[MyTable]
dbo My.Table [My.Table] atau [dbo].[My.Table]
dbo1 My.Table [dbo1].[My.Table]

Jika Anda melihat kesalahan berikut, masalahnya mungkin nilai yang Anda tentukan untuk properti tableName. Lihat tabel sebelumnya untuk memperoleh cara yang benar dalam menentukan nilai untuk properti tableName JSON.

Type=System.Data.SqlClient.SqlException,Message=Invalid object name 'stg.Account_test'.,Source=.Net SqlClient Data Provider

Kolom dengan nilai default

Saat ini, fitur PolyBase hanya menerima jumlah kolom yang sama seperti pada tabel target. Contohnya adalah tabel dengan empat kolom dan salah satunya ditentukan dengan nilai default. Data input masih harus memiliki empat kolom. Himpunan data input tiga kolom menghasilkan kesalahan yang mirip dengan pesan berikut:

All columns of the table must be specified in the INSERT BULK statement.

Nilai NULL adalah bentuk khusus dari nilai default. Jika kolom dapat diubah ke null, data input dalam blob untuk kolom tersebut mungkin kosong. Tapi itu tidak bisa hilang dari himpunan data input. PolyBase menyisipkan NULL untuk nilai yang hilang di Azure Synapse Analytics.

Akses file eksternal gagal

Jika Anda menerima kesalahan berikut, pastikan Anda menggunakan autentikasi identitas terkelola dan telah memberikan izin Storage Blob Data Reader ke identitas terkelola ruang kerja Azure Synapse.

Job failed due to reason: at Sink '[SinkName]': shaded.msdataflow.com.microsoft.sqlserver.jdbc.SQLServerException: External file access failed due to internal error: 'Error occurred while accessing HDFS: Java exception raised on call to HdfsBridge_IsDirExist. Java exception message:\r\nHdfsBridge::isDirExist 

Untuk informasi selengkapnya, lihat Memberikan izin ke identitas terkelola setelah pembuatan ruang kerja.

Properti pemetaan aliran data

Saat melakukan transformasi data dalam pemetaan aliran data, Anda dapat membaca dan menulis ke tabel dari Azure Synapse Analytics. Untuk informasi selengkapnya, lihat transformasi sumber dan transformasi sink dalam aliran data pemetaan.

Transformasi sumber

Pengaturan khusus untuk Azure Synapse Analytics tersedia di tab Opsi Sumber dari transformasi sumber.

Input Pilih apakah Anda mengarahkan sumber Anda ke tabel (setara dengan Select * from <table-name>) atau masukkan kueri SQL kustom.

Aktifkan Penahapan Sangat disarankan agar Anda menggunakan opsi ini dalam beban kerja produksi dengan sumber Azure Synapse Analytics. Saat Anda menjalankan aktivitas aliran data dengan sumber Azure Synapse Analytics dari alur, Anda akan diminta untuk akun penyimpanan lokasi penahapan dan akan menggunakannya untuk pemuatan data bertahap. Ini adalah mekanisme tercepat untuk memuat data dari Azure Synapse Analytics.

  • Saat Anda menggunakan autentikasi identitas terkelola untuk layanan tertaut penyimpanan Anda, pelajari konfigurasi yang diperlukan untuk Azure Blob dan Azure Data Lake Storage Gen2.
  • Jika Azure Storage Anda dikonfigurasi dengan titik akhir layanan VNet, Anda harus menggunakan autentikasi identitas terkelola dengan mengaktifkan "izinkan layanan Microsoft tepercaya" pada akun penyimpanan, lihat Dampak penggunaan Titik Akhir Layanan VNet dengan penyimpanan Azure.
  • Saat Anda menggunakan kumpulan SQL tanpa server Azure Synapse sebagai sumber, mengaktifkan penahapan tidak didukung.

Kueri: Jika Anda memilih Kueri di bidang input, masukkan kueri SQL untuk sumber Anda. Pengaturan ini menggantikan tabel apa pun yang telah Anda pilih dalam himpunan data. Klausa Urutkan Menurut tidak didukung, tetapi Anda dapat mengatur pernyataan SELECT FROM yang lengkap. Anda juga dapat menggunakan fungsi tabel yang ditentukan pengguna. select * from udfGetData() adalah UDF di SQL yang mengembalikan tabel. Kueri ini akan menghasilkan tabel sumber yang dapat Anda gunakan dalam aliran data Anda. Menggunakan kueri juga merupakan cara yang bagus untuk mengurangi baris untuk pengujian atau pencarian.

Contoh SQL: Select * from MyTable where customerId > 1000 and customerId < 2000

Ukuran batch: Masukkan ukuran batch untuk memotong data besar ke dalam bacaan. Dalam aliran data, pengaturan ini akan digunakan untuk menyetel cache columnar Spark. Ini adalah bidang opsi, yang akan menggunakan default Spark jika dibiarkan kosong.

Tingkat Isolasi: Default untuk sumber SQL dalam pemetaan aliran data adalah read uncommitted. Anda dapat mengubah tingkat isolasi di sini menjadi salah satu nilai berikut:

  • Read Committed
  • Read Uncommitted
  • Dibaca Berulang
  • Serializable
  • Tidak ada (abaikan tingkat isolasi)

Tingkat Isolasi

Transformasi sink

Pengaturan khusus untuk Azure Synapse Analytics tersedia di tab Pengaturan dari transformasi sink.

Metode pembaruan: Menentukan operasi apa yang diizinkan di tujuan database Anda. Defaultnya hanya mengizinkan operasi sisipan. Untuk memperbarui, meng-upsert, atau menghapus baris, transformasi baris pengganti diperlukan untuk menandai baris untuk tindakan tersebut. Untuk pembaruan, upsert dan hapus, kolom kunci atau kolom harus diatur untuk menentukan baris mana yang akan diubah.

Tindakan tabel: Menentukan apakah akan membuat ulang atau menghapus semua baris dari tabel tujuan sebelum menulis.

  • Tidak Ada: Tidak ada tindakan yang akan dilakukan pada tabel.
  • Buat ulang: Tabel akan dihapus dan dibuat ulang. Diperlukan jika membuat tabel baru secara dinamis.
  • Kosongkan: Semua baris dari tabel target akan dihapus.

Mengaktifkan penahapan: Ini memungkinkan pemuatan ke Kumpulan SQL Azure Synapse Analytics menggunakan perintah salin dan direkomendasikan untuk sebagian besar sink Synapse. Penyimpanan penahapan dikonfigurasi dalam aktivitas Ekseskusi Aliran Data.

Ukuran batch: Mengontrol berapa banyak baris yang ditulis di setiap bucket. Ukuran batch yang lebih besar meningkatkan pemadatan dan pengoptimalan memori, tetapi berisiko kehabisan pengecualian memori saat penembolokan data.

Gunakan skema sink: Secara default, tabel sementara akan dibuat di bawah skema sink sebagai penahapan. Anda dapat menghapus centang opsi Gunakan skema sink dan sebagai gantinya, di Pilih skema DB pengguna, tentukan nama skema yang mana Data Factory akan membuat tabel penahapan untuk memuat data upstram dan secara otomatis menghapusnya setelah selesai. Pastikan Anda telah membuat izin tabel di database dan mengubah izin pada skema.

Cuplikan layar yang menampilkan aliran data 'Gunakan skema sink'.

Skrip Pra dan Pasca SQL: Masukkan skrip SQL multibaris yang akan dijalankan sebelum (prapemrosesan) dan setelah (pascapemrosesan) data ditulis ke database Sink Anda

Cuplikan layar yang menampilkan skrip pra dan pasca pemrosesan SQL dalam aliran data Azure Synapse Analytics.

Tip

  1. Disarankan untuk memecah skrip batch tunggal dengan beberapa perintah menjadi beberapa batch.
  2. Hanya pernyataan Bahasa Definisi Data (DDL) dan Bahasa Manipulasi Data (DML) yang menampilkan jumlah pembaruan sederhana yang dapat dijalankan sebagai bagian dari batch. Pelajari selengkapnya dari Melakukan operasi batch

Penanganan baris kesalahan

Saat menulis ke Azure Synapse Analytics, baris data tertentu mungkin gagal karena batasan yang ditetapkan oleh tujuan. Kesalahan umum meliputi:

  • Data string atau biner akan dipotong dalam tabel
  • Tidak bisa menyisipkan nilai NULL ke dalam kolom
  • Konversi gagal saat mengonversi nilai menjadi jenis data

Secara default, eksekusi aliran data akan gagal pada kesalahan pertama yang diperolehnya. Anda dapat memilih untuk Melanjutkan kesalahan yang memungkinkan aliran data Anda selesai meskipun baris individual memiliki kesalahan. Layanan ini menyediakan opsi berbeda bagi Anda untuk menangani baris kesalahan ini.

Transaksi Berkomitmen: Pilih apakah data Anda ditulis dalam satu transaksi atau dalam batch. Transaksi tunggal akan memberikan performa yang lebih baik dan tidak ada data tertulis yang akan terlihat oleh orang lain sampai transaksi selesai. Transaksi batch memiliki performa yang lebih buruk, tetapi dapat bekerja untuk himpunan data besar.

Output data yang ditolak: Jika diaktifkan, Anda dapat menghasilkan baris kesalahan ke dalam file csv di Azure Blob Storage atau akun Azure Data Lake Storage Gen2 yang Anda pilih. Ini akan menulis baris kesalahan dengan tiga kolom tambahan: operasi SQL seperti INSERT atau UPDATE, kode kesalahan aliran data, dan pesan kesalahan pada baris.

Melaporkan keberhasilan pada kesalahan: Jika diaktifkan, aliran data akan ditandai sebagai keberhasilan meskipun baris kesalahan ditemukan.

Diagram yang memperlihatkan penanganan baris kesalahan dalam pemetaan transformasi sink aliran data.

Properti aktivitas pencarian

Untuk mempelajari detail tentang properti, lihat Aktivitas pencarian.

Properti aktivitas GetMetadata

Untuk mempelajari rincian tentang properti ini, periksa Aktivitas GetMetadata

Pemetaan tipe data untuk Azure Synapse Analytics

Saat Anda menyalin data dari atau ke Azure Synapse Analytics, pemetaan berikut ini digunakan dari tipe data Azure Synapse Analytics ke tipe data sementara Azure Data Factory. Pemetaan ini juga digunakan saat menyalin data dari atau ke Azure Synapse Analytics menggunakan alur Synapse, karena alur juga mengimplementasikan Azure Data Factory dalam Azure Synapse. Lihat pemetaan skema dan tipe data untuk mempelajari bagaimana aktivitas salin memetakan skema sumber dan tipe data ke sink.

Tip

Lihat artikel Tipe data tabel di Azure Synapse Analytics tentang tipe data yang didukung Azure Synapse Analytics dan solusi untuk yang tidak didukung.

Tipe data Azure Synapse Analytics Jenis data sementara Data Factory
bigint Int64
biner Byte[]
bit Boolean
char String, Char[]
date DateTime
Tanggalwaktu DateTime
tanggalwaktu2 DateTime
Datetimeoffset DateTimeOffset
Decimal Decimal
FILESTREAM attribute (varbinary(max)) Byte[]
Float Laju
gambar Byte[]
int Int32
money Decimal
nchar String, Char[]
numeric Decimal
nvarchar String, Char[]
real Tunggal
rowversion Byte[]
smalldatetime DateTime
smallint Int16
smallmoney Decimal
waktu TimeSpan
tinyint Byte
uniqueidentifier Guid
varbinary Byte[]
varchar String, Char[]

Untuk daftar penyimpanan data yang didukung sebagai sumber dan sink oleh Aktivitas Salin, lihat format dan penyimpanan data yang didukung.