Menyalin data dari Teradata Vantage menggunakan Azure Data Factory dan 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 aktivitas salin di alur Azure Data Factory dan Synapse Analytics untuk menyalin data dari Teradata Vantage. Ini dibuat berdasarkan gambaran umum aktivitas salin.

Kemampuan yang didukung

Konektor Teradata ini didukung untuk kemampuan berikut:

Kemampuan yang didukung IR
Aktivitas penyalinan (sumber/-) ① ②
Aktivitas pencarian ① ②

① Runtime integrasi Azure ② Runtime integrasi yang dihost sendiri

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

Secara khusus, konektor Teradata ini mendukung:

  • Teradata versi 14.10, 15.0, 15.10, 16.0, 16.10, dan 16.20.
  • Menyalin data dengan menggunakan autentikasi Dasar, Windows, atau LDAP.
  • Penyalinan paralel dari sumber Teradata. Lihat bagian Penyalinan paralel dari Teradata untuk detailnya.

Prasyarat

Jika penyimpanan data Anda terletak di dalam jaringan lokal, jaringan virtual Azure, atau Amazon Virtual Private Cloud, Anda harus mengonfigurasi runtime integrasi yang dihosting sendiri untuk menghubungkannya.

Jika penyimpanan data Anda adalah layanan data cloud terkelola, Anda dapat menggunakan Azure Integration Runtime. Jika akses dibatasi untuk IP yang disetujui dalam aturan firewall, Anda dapat menambahkan IP Azure Integration Runtime ke daftar izinkan.

Anda juga dapat menggunakan fitur runtime integrasi jaringan virtual terkelola di Azure Data Factory untuk mengakses jaringan lokal tanpa menginstal dan mengonfigurasi runtime integrasi yang dihosting sendiri.

Untuk informasi selengkapnya tentang mekanisme dan opsi keamanan jaringan yang didukung oleh Data Factory, lihat Strategi akses data.

Jika Anda menggunakan Runtime integrasi yang dihost sendiri, perhatikan bahwa ia menyediakan driver Teradata bawaan mulai dari versi 3.18. Anda tidak perlu menginstal driver apa pun secara manual. Driver memerlukan "Visual C++ Redistributable 2012 Update 4" pada komputer Runtime integrasi yang dihost sendiri. Jika Anda belum menginstalnya, unduh dari sini.

Memulai

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

Membuat layanan tertaut ke Teradata menggunakan UI

Gunakan langkah-langkah berikut untuk membuat layanan tertaut ke Teradata 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 Teradata dan pilih konektor Teradata.

    Select the Teradata connector.

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

    Configure a linked service to Teradata.

Detail konfigurasi konektor

Bagian berikut memberikan detail tentang properti yang digunakan untuk menentukan entitas Data Factory khusus untuk konektor Teradata.

Properti layanan tertaut

Layanan tertaut Teradata mendukung properti berikut ini:

Properti Deskripsi Wajib
jenis Properti type harus diatur ke Teradata. Ya
connectionString Menentukan informasi yang diperlukan untuk tersambung ke instans Teradata. Lihat sampel berikut.
Anda juga dapat memasukkan kata sandi di Azure Key Vault dan menarik konfigurasi password dari string koneksi. Lihat Menyimpan informasi masuk di Azure Key Vault dengan detail selengkapnya.
Ya
Nama pengguna Menentukan nama pengguna untuk tersambung ke Teradata. Berlaku ketika Anda menggunakan autentikasi Windows. Tidak
kata sandi Tentukan kata sandi untuk akun pengguna yang Anda tentukan untuk nama pengguna. Anda juga dapat memilih untuk mereferensikan rahasia yang disimpan di Azure Key Vault.
Berlaku saat Anda menggunakan autentikasi Windows, atau merujuk kata sandi di Key Vault untuk autentikasi dasar.
Tidak
connectVia Runtime integrasi yang akan digunakan untuk menyambungkan ke penyimpanan data. Pelajari selengkapnya dari bagian Prasyarat. Jika tidak ditentukan, Azure Integration Runtime default akan digunakan. Tidak

Properti koneksi lainnya yang dapat Anda atur dalam string koneksi per kasus Anda:

Properti Deskripsi Nilai default
TdmstPortNumber Jumlah port yang digunakan untuk mengakses database Teradata.
Jangan mengubah nilai ini kecuali diinstruksikan untuk melakukannya oleh Dukungan Teknis.
1025
UseDataEncryption Menentukan apakah akan mengenkripsi semua komunikasi dengan database Teradata. Nilai yang diizinkan adalah: 0 atau 1.

- 0 (dinonaktifkan, default): Mengenkripsi informasi autentikasi saja.
- 1 (diaktifkan): Mengenkripsi semua data yang diteruskan antara driver dan database.
0
CharacterSet Himpunan karakter yang akan digunakan untuk sesi. Misalnya, CharacterSet=UTF16.

Nilai ini bisa berupa kumpulan karakter yang ditentukan pengguna, atau salah satu kumpulan karakter yang telah ditentukan sebelumnya berikut:
- ASCII
- UTF8
- UTF16
- LATIN1252_0A
- LATIN9_0A
- LATIN1_0A
- Shift-JIS (Windows, kompatibel dengan DOS, KANJISJIS_0S)
- EUC (Kompatibel dengan Unix, KANJIEC_0U)
- IBM Mainframe (KANJIEBCDIC5035_0I)
- KANJI932_1S0
- BIG5 (TCHBIG5_1R0)
- GB (SCHGB2312_1T0)
- SCHINESE936_6R0
- TCHINESE950_8R0
- NetworkKorean (HANGULKSC5601_2R4)
- HANGUL949_7R0
- ARABIC1256_6A0
- CYRILLIC1251_2A0
- HEBREW1255_5A0
- LATIN1250_1A0
- LATIN1254_7A0
- LATIN1258_8A0
- THAI874_4A0
ASCII
MaxRespSize Ukuran maksimum buffer respons untuk permintaan SQL, dalam kilobyte (KB). Misalnya, MaxRespSize=‭10485760‬.

Untuk Teradata Database versi 16.00 atau yang lebih baru, nilai maksimumnya adalah 7361536. Untuk koneksi yang menggunakan versi yang lebih lama, nilai maksimumnya adalah 1048576.
65536
MechanismName Untuk menggunakan protokol LDAP untuk mengautentikasi koneksi, tentukan MechanismName=LDAP. T/A

Contoh menggunakan autentikasi dasar

{
    "name": "TeradataLinkedService",
    "properties": {
        "type": "Teradata",
        "typeProperties": {
            "connectionString": "DBCName=<server>;Uid=<username>;Pwd=<password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Contoh menggunakan autentikasi Windows

{
    "name": "TeradataLinkedService",
    "properties": {
        "type": "Teradata",
        "typeProperties": {
            "connectionString": "DBCName=<server>",
            "username": "<username>",
            "password": "<password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Contoh menggunakan autentikasi LDAP

{
    "name": "TeradataLinkedService",
    "properties": {
        "type": "Teradata",
        "typeProperties": {
            "connectionString": "DBCName=<server>;MechanismName=LDAP;Uid=<username>;Pwd=<password>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Catatan

Payload berikut masih didukung. Namun, ke depannya, Anda harus menggunakan yang baru.

Payload sebelumnya:

{
    "name": "TeradataLinkedService",
    "properties": {
        "type": "Teradata",
        "typeProperties": {
            "server": "<server>",
            "authenticationType": "<Basic/Windows>",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Properti himpunan data

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

Untuk menyalin data dari Teradata, properti berikut didukung:

Properti Deskripsi Wajib
jenis Properti type himpunan data harus diatur ke TeradataTable. Ya
database Nama instans Teradata. Tidak (jika "kueri" di sumber aktivitas ditentukan)
tabel Nama tabel dalam instans Teradata. Tidak (jika "kueri" di sumber aktivitas ditentukan)

Contoh:

{
    "name": "TeradataDataset",
    "properties": {
        "type": "TeradataTable",
        "typeProperties": {},
        "schema": [],        
        "linkedServiceName": {
            "referenceName": "<Teradata linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Catatan

Himpunan data jenis RelationalTable masih didukung. Namun, kami sarankan Anda menggunakan himpunan data yang baru.

Payload sebelumnya:

{
    "name": "TeradataDataset",
    "properties": {
        "type": "RelationalTable",
        "linkedServiceName": {
            "referenceName": "<Teradata linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {}
    }
}

Properti aktivitas salin

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

Teradata sebagai sumber

Tip

Untuk memuat data dari Teradata secara efisien dengan menggunakan pemartisian data, pelajari selengkapnya dari bagian Penyalinan paralel dari Teradata.

Untuk menyalin data dari Teradata, properti berikut ini didukung di bagian sumber aktivitas salin:

Properti Deskripsi Wajib
jenis Properti type dari sumber aktivitas salin harus diatur ke TeradataSource. Ya
pertanyaan Gunakan kueri SQL kustom untuk membaca data. Contohnya "SELECT * FROM MyTable".
Saat Anda mengaktifkan pemuatan yang dipartisi, Anda harus menghubungkan parameter partisi bawaan yang sesuai dalam kueri Anda. Untuk contohnya, lihat bagian Penyalinan paralel dari Teradata.
Tidak (jika tabel di himpunan data ditentukan)
partitionOptions Menentukan opsi pemartisian data yang digunakan untuk memuat data dari Teradata.
Nilai yang diizinkan adalah: Tidak ada (default), Hash dan DynamicRange.
Ketika opsi partisi diaktifkan (yaitu, bukan None), tingkat paralelisme untuk secara bersamaan memuat data dari Teradata dikendalikan oleh pengaturan parallelCopies pada aktivitas salin.
Tidak
partitionSettings Tentukan grup pengaturan untuk pemartisian data.
Terapkan saat opsi partisi bukan None.
Tidak
partitionColumnName Menentukan nama kolom sumber yang akan digunakan oleh rentang partisi atau partisi Hash untuk penyalinan paralel. Jika tidak ditentukan, indeks utama tabel terdeteksi secara otomatis dan digunakan sebagai kolom partisi.
Terapkan saat opsi partisi adalah Hash atau DynamicRange. Jika Anda menggunakan kueri untuk mengambil data sumber, kaitkan ?AdfHashPartitionCondition atau ?AdfRangePartitionColumnName di klausul WHERE. Lihat contoh di bagian Penyalinan paralel dari Teradata.
Tidak
partitionUpperBound Nilai maksimum kolom partisi untuk menyalin data.
Terapkan saat opsi partisi adalah DynamicRange. Jika Anda menggunakan kueri untuk mengambil data sumber, kaitkan ?AdfRangePartitionUpbound di klausa WHERE. Untuk contohnya, lihat bagian Penyalinan paralel dari Teradata.
Tidak
partitionLowerBound Nilai minimum kolom partisi untuk menyalin data.
Terapkan saat opsi partisi adalah DynamicRange. Jika Anda menggunakan kueri untuk mengambil data sumber, kaitkan ?AdfRangePartitionLowbound di klausul WHERE. Untuk contohnya, lihat bagian Penyalinan paralel dari Teradata.
Tidak

Catatan

Sumber penyalinan jenis RelationalSource masih didukung, tetapi tidak mendukung pemuatan paralel bawaan baru dari Teradata (opsi partisi). Namun, kami sarankan Anda menggunakan himpunan data yang baru.

Contoh: menyalin data dengan menggunakan kueri dasar tanpa partisi

"activities":[
    {
        "name": "CopyFromTeradata",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Teradata input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "TeradataSource",
                "query": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Penyalinan paralel dari Teradata

Konektor Teradata menyediakan pemartisian data bawaan untuk menyalin data dari Teradata secara paralel. Anda dapat menemukan opsi pemartisian data pada tabel Sumber aktivitas salin.

Screenshot of partition options

Saat Anda mengaktifkan penyalinan berpartisi, layanan menjalankan kueri paralel terhadap sumber Teradata Anda untuk memuat data berdasarkan partisi. Derajat paralel dikendalikan oleh pengaturan parallelCopies pada aktivitas salin. Misalnya, jika Anda mengatur parallelCopies ke empat, layanan secara bersamaan menghasilkan dan menjalankan empat kueri berdasarkan opsi dan pengaturan partisi yang Anda tentukan, dan setiap kueri mengambil sebagian data dari tabel Teradata Anda.

Sebaiknya Anda mengaktifkan penyalinan paralel dengan pemartisian data terutama ketika Anda memuat sejumlah besar data dari Teradata Anda. 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. Opsi partisi: Hash.

Selama eksekusi, layanan secara otomatis mendeteksi kolom indeks utama, menerapkan hash terhadapnya, dan menyalin data berdasarkan partisi.
Memuat sejumlah besar data dengan menggunakan kueri kustom. Opsi partisi: Hash.
Kueri: SELECT * FROM <TABLENAME> WHERE ?AdfHashPartitionCondition AND <your_additional_where_clause>.
Kolom partisi: Menentukan kolom yang digunakan untuk menerapkan partisi hash. Jika tidak ditentukan, layanan secara otomatis mendeteksi kolom PK dari tabel yang Anda tentukan di himpunan data Teradata.

Selama eksekusi, layanan mengganti ?AdfHashPartitionCondition dengan logika partisi hash, dan mengirimnya ke Teradata.
Muat data dalam jumlah besar dengan menggunakan kueri kustom, yang memiliki kolom bilangan bulat dengan nilai yang terdistribusi secara merata untuk partisi rentang. Opsi partisi: Partisi rentang dinamis.
Kueri: SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>.
Kolom partisi: Menentukan kolom yang digunakan untuk mempartisi data. Anda dapat mempartisi kolom dengan jenis data bilangan bulat.
Batas atas partisi dan batas bawah partisi: Tentukan apakah Anda ingin memfilter kolom partisi untuk mengambil data hanya dari antara rentang bawah dan atas.

Selama eksekusi, layanan mengganti ?AdfRangePartitionColumnName, ?AdfRangePartitionUpbound, dan ?AdfRangePartitionLowbound dengan nama kolom dan rentang nilai aktual untuk setiap partisi, dan mengirimnya ke Teradata.
Misalnya, jika kolom partisi “ID” Anda diatur dengan batas bawah 1 dan batas atas 80, penyalinan paralel 4, layanan mengambil data dengan 4 partisi. ID-nya masing-masing antara [1, 20], [21, 40], [41, 60], dan [61, 80].

Contoh: kueri dengan partisi hash

"source": {
    "type": "TeradataSource",
    "query": "SELECT * FROM <TABLENAME> WHERE ?AdfHashPartitionCondition AND <your_additional_where_clause>",
    "partitionOption": "Hash",
    "partitionSettings": {
        "partitionColumnName": "<hash_partition_column_name>"
    }
}

Contoh: kueri dengan partisi rentang dinamis

"source": {
    "type": "TeradataSource",
    "query": "SELECT * FROM <TABLENAME> WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause>",
    "partitionOption": "DynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<dynamic_range_partition_column_name>",
        "partitionUpperBound": "<upper_value_of_partition_column>",
        "partitionLowerBound": "<lower_value_of_partition_column>"
    }
}

Pemetaan tipe data untuk Teradata

Saat Anda menyalin data dari Teradata, pemetaan berikut berlaku dari jenis data Teradata ke jenis data internal yang digunakan oleh layanan. Untuk mempelajari bagaimana aktivitas salin memetakan skema sumber dan jenis data ke sink, lihat Pemetaan skema dan jenis data.

Tipe data Teradata Jenis data layanan sementara
Bigint Int64
Blob Byte[]
Byte Byte[]
ByteInt Int16
Char String
Clob String
Date DateTime
Decimal Decimal
Laju Laju
Graphic Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Bilangan bulat Int32
Interval Day Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Interval Day To Hour Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Interval Day To Minute Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Interval Day To Second Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Interval Hour Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Interval Hour To Minute Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Interval Hour To Second Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Interval Minute Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Interval Minute To Second Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Interval Month Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Interval Second Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Interval Year Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Interval Year To Month Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Angka Laju
Period (Date) Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Period (Time) Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Period (Time With Time Zone) Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Period (Timestamp) Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Period (Timestamp With Time Zone) Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
SmallInt Int16
Waktu TimeSpan
Time With Time Zone TimeSpan
Tanda Waktu DateTime
Timestamp With Time Zone DateTime
VarByte Byte[]
VarChar String
VarGraphic Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.
Xml Tidak didukung. Terapkan konversi eksplisit dalam kueri sumber.

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.