Memindahkan data dari Teradata menggunakan Azure Data Factory

Catatan

Artikel ini berlaku untuk versi 1 dari Azure Data Factory. Jika Anda menggunakan versi layanan Azure Data Factory saat ini, lihat Konektor Teradata di V2.

Artikel ini menjelaskan cara menggunakan Aktivitas Penyalinan di Azure Data Factory untuk memindahkan data dari database Teradata lokal. Hai ini dibuat pada artikel Aktivitas Perpindahan Data, yang menyajikan gambaran umum tentang perpindahan data menggunakan aktivitas penyalinan.

Anda dapat menyalin data dari penyimpanan data Teradata lokal ke penyimpanan data sink yang didukung. Untuk daftar penyimpanan data yang didukung sebagai sink oleh aktivitas penyalinan, lihat tabel Penyimpanan data yang didukung. Pabrik data saat ini hanya mendukung pemindahan data dari penyimpanan data Teradata ke penyimpanan data lain, tetapi tidak untuk memindahkan data dari penyimpanan data lain ke penyimpanan data Teradata.

Prasyarat

Azure Data Factory mendukung untuk terhubung ke sumber data Teradata lokal dengan menggunakan Gateway Manajemen Data. Lihat artikel memindahkan data antara lokasi lokal dan cloud untuk mempelajari tentang Gateway Manajemen Data dan untuk instruksi langkah demi langkah tentang cara menyiapkan gateway.

Gateway diperlukan meskipun database Teradata dihosting di Azure IaaS komputer virtual. Anda dapat memasang gateway pada IaaS komputer virtual yang sama dengan penyimpanan data atau pada komputer virtual yang berbeda selama gateway bisa tersambung ke database.

Catatan

Lihat Memecahkan masalah gateway untuk tips tentang pemecahan masalah terkait koneksi/gateway.

Versi dan penginstalan yang didukung

Agar Gateway Manajemen Data tersambung ke Database Teradata, Anda perlu menginstal Penyedia Data .NET untuk Teradata versi 14 atau lebih tinggi pada sistem yang sama dengan Gateway Manajemen Data. Teradata versi 12 ke atas didukung.

Memulai

Anda dapat membuat alur dengan aktivitas salin yang memindahkan data dari penyimpanan data Cassandra lokal dengan menggunakan alat/API yang berbeda.

  • Cara termudah untuk membuat alur adalah dengan menggunakan Wizard Salin. Lihat Tutorial: Membuat alur menggunakan Wizard Salin untuk panduan singkat tentang membuat alur menggunakan Wizard Salin data.
  • Anda juga dapat menggunakan alat berikut untuk membuat pipeline: Visual Studio, Azure PowerShell, template Azure Resource Manager, .NET API, dan REST API. Lihat Tutorial aktivitas penyalinan untuk instruksi langkah demi langkah guna membuat alur dengan aktivitas penyalinan.

Baik Anda menggunakan alat atau API, Anda melakukan langkah-langkah berikut untuk membuat alur yang memindahkan data dari penyimpanan data sumber ke penyimpanan data sink:

  1. Buat layanan tertaut untuk menautkan penyimpanan data input dan output ke pabrik data Anda.
  2. Buat kumpulan data untuk mewakili data input dan output untuk operasi salin.
  3. Buat jalur dengan aktivitas salinan yang mengambil set data sebagai input dan set data sebagai output.

Saat Anda menggunakan wizard, definisi JSON untuk entitas Data Factory ini (layanan tertaut, himpunan data, dan alur) secara otomatis dibuat untuk Anda. Saat Anda menggunakan alat/API (kecuali .NET API), Anda menentukan entitas Data Factory ini dengan menggunakan format JSON. Untuk sampel dengan definisi JSON untuk entitas Azure Data Factory yang digunakan untuk menyalin data dari penyimpanan data Teradata lokal, lihat bagian contoh JSON: Menyalin data dari Teradata ke Azure Blob di artikel ini.

Bagian berikut memberikan detail tentang properti JSON yang digunakan untuk menentukan entitas Azure Data Factory tertentu untuk penyimpanan data Teradata:

Properti layanan tertaut

Tabel berikut ini menyediakan deskripsi untuk elemen JSON tertentu untuk layanan tertaut Teradata.

Properti Deskripsi Diperlukan
jenis Jenis properti harus diatur ke: OnPremisesTeradata Ya
server Nama server Teradata. Ya
authenticationType Jenis autentikasi yang digunakan untuk menyambungkan ke database MySQL. Nilai yang mungkin adalah: Anonim, Dasar, dan Windows. Ya
username Tentukan nama pengguna jika Anda menggunakan autentikasi Basic atau Windows. Tidak
kata sandi Tentukan kata sandi untuk akun pengguna yang Anda tentukan untuk nama pengguna. Tidak
gatewayName Nama gateway yang harus digunakan layanan Azure Data Factory untuk menyambungkan ke database Teradata lokal. Ya

Properti himpunan data

Untuk daftar lengkap bagian properti & yang tersedia untuk menentukan himpunan data, lihat artikel Membuat himpunan data. Bagian-bagian seperti struktur, ketersediaan, dan kebijakan himpunan data JSON mirip untuk semua jenis himpunan data (Azure SQL, blob Azure, tabel Azure, dll.).

Bagian typeProperties berbeda untuk setiap jenis himpunan data dan menyediakan informasi tentang lokasi data di penyimpanan data. Saat ini, tidak ada jenis properti yang didukung untuk himpunan data Teradata.

Properti aktivitas penyalinan

Untuk daftar lengkap bagian & properti yang tersedia untuk menentukan aktivitas, lihat artikel Membuat Alur. Properti seperti nama, deskripsi, tabel input dan output, serta kebijakan tersedia untuk semua jenis aktivitas.

Sedangkan properti yang tersedia di bagian typeProperties aktivitas bervariasi menurut setiap jenis aktivitas. Untuk aktivitas Penyalinan, mereka bervariasi bergantung pada jenis sumber dan sink.

Saat sumber data adalah jenis RelationalSource (yang mencakup Teradata), properti berikut tersedia di bagian typeProperties:

Properti Deskripsi Nilai yang diizinkan Diperlukan
kueri Gunakan kueri kustom untuk membaca data. String kueri SQL. Misalnya: pilih * dari MyTable. Ya

Contoh JSON: Menyalin data dari Teradata ke Azure Blob

Contoh berikut ini menyediakan sampel definisi JSON yang bisa Anda gunakan untuk membuat alur dengan menggunakan Visual Studio atau Azure PowerShell. Mereka menunjukkan cara menyalin data dari Teradata ke Azure Blob Storage. Namun, data dapat disalin ke salah satu sink yang disebutkan di sini menggunakan Aktivitas Penyalinan di Azure Data Factory.

Sampel memiliki entitas Data Factory berikut:

  1. Layanan tertaut dari jenis OnPremisesTeradata.
  2. Layanan tertaut dari jenis AzureStorage.
  3. Sebuah input himpunan data jenis RelationalTable.
  4. Sebuah output himpunan data jenis AzureBlob.
  5. Alur dengan Aktivitas Penyalinan yang menggunakan RelationalSource dan BlobSink.

Sampel menyalin data dari hasil kueri dalam database Teradata ke blob setiap jam. Properti JSON yang digunakan dalam sampel ini dijelaskan dalam bagian yang mengikuti sampel.

Sebagai langkah pertama, siapkan data management gateway. Instruksinya berada di artikel memindahkan data antara lokasi lokal dan cloud.

Layanan Teradata tertaut:

{
    "name": "OnPremTeradataLinkedService",
    "properties": {
        "type": "OnPremisesTeradata",
        "typeProperties": {
            "server": "<server>",
            "authenticationType": "<authentication type>",
            "username": "<username>",
            "password": "<password>",
            "gatewayName": "<gatewayName>"
        }
    }
}

Layanan tertaut Azure Blob Storage:

{
    "name": "AzureStorageLinkedService",
    "properties": {
        "type": "AzureStorageLinkedService",
        "typeProperties": {
            "connectionString": "DefaultEndpointsProtocol=https;AccountName=<AccountName>;AccountKey=<AccountKey>"
        }
    }
}

Himpunan data input Teradata:

Sampel mengasumsikan Anda telah membuat tabel "MyTable" di Teradata dan berisi kolom yang disebut "timestamp" untuk data rangkaian waktu.

Pengaturan "eksternal": "true" menginformasikan layanan Azure Data Factory bahwa kumpulan data berada di luar pabrik data dan tidak diproduksi oleh aktivitas di pabrik data.

{
    "name": "TeradataDataSet",
    "properties": {
        "published": false,
        "type": "RelationalTable",
        "linkedServiceName": "OnPremTeradataLinkedService",
        "typeProperties": {
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        },
        "external": true,
        "policy": {
            "externalData": {
                "retryInterval": "00:01:00",
                "retryTimeout": "00:10:00",
                "maximumRetry": 3
            }
        }
    }
}

Himpunan data output Azure Blob:

Data ditulis ke blob baru setiap jam (frekuensi: jam, interval: 1). Jalur folder untuk blob dievaluasi secara dinamis berdasarkan waktu mulai irisan yang sedang diproses. Jalur folder menggunakan bagian tahun, bulan, hari, dan jam dari waktu mulai.

{
    "name": "AzureBlobTeradataDataSet",
    "properties": {
        "published": false,
        "location": {
            "type": "AzureBlobLocation",
            "folderPath": "mycontainer/teradata/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}",
            "format": {
                "type": "TextFormat",
                "rowDelimiter": "\n",
                "columnDelimiter": "\t"
            },
            "partitionedBy": [
                {
                    "name": "Year",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "yyyy"
                    }
                },
                {
                    "name": "Month",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "MM"
                    }
                },
                {
                    "name": "Day",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "dd"
                    }
                },
                {
                    "name": "Hour",
                    "value": {
                        "type": "DateTime",
                        "date": "SliceStart",
                        "format": "HH"
                    }
                }
            ],
            "linkedServiceName": "AzureStorageLinkedService"
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        }
    }
}

Alur dengan aktivitas Salin:

Alur berisi Aktivitas Salin yang dikonfigurasi untuk menggunakan himpunan data input dan output dan dijadwalkan untuk berjalan setiap jam. Dalam definisi alur JSON, jenis sumber diatur ke RelationalSource dan jenis sink diatur ke BlobSink. Kueri SQL yang ditentukan untuk properti kueri memilih data dalam satu jam terakhir untuk disalin.

{
    "name": "CopyTeradataToBlob",
    "properties": {
        "description": "pipeline for copy activity",
        "activities": [
            {
                "type": "Copy",
                "typeProperties": {
                    "source": {
                        "type": "RelationalSource",
                        "query": "$$Text.Format('select * from MyTable where timestamp >= \\'{0:yyyy-MM-ddTHH:mm:ss}\\' AND timestamp < \\'{1:yyyy-MM-ddTHH:mm:ss}\\'', SliceStart, SliceEnd)"
                    },
                    "sink": {
                        "type": "BlobSink",
                        "writeBatchSize": 0,
                        "writeBatchTimeout": "00:00:00"
                    }
                },
                "inputs": [
                    {
                        "name": "TeradataDataSet"
                    }
                ],
                "outputs": [
                    {
                        "name": "AzureBlobTeradataDataSet"
                    }
                ],
                "policy": {
                    "timeout": "01:00:00",
                    "concurrency": 1
                },
                "scheduler": {
                    "frequency": "Hour",
                    "interval": 1
                },
                "name": "TeradataToBlob"
            }
        ],
        "start": "2014-06-01T18:00:00Z",
        "end": "2014-06-01T19:00:00Z",
        "isPaused": false
    }
}

Pemetaan jenis untuk Teradata

Seperti disebutkan dalam artikel aktivitas pergerakan data, Aktivitas Penyalinan melakukan konversi jenis otomatis dari jenis sumber ke jenis sink dengan pendekatan 2 langkah berikut:

  1. Konversi dari jenis sumber asli menjadi jenis .NET
  2. Mengonversi dari jenis .NET ke jenis sink asli

Saat memindahkan data dari Teradata, pemetaan berikut digunakan dari jenis Teradata ke jenis .NET.

Jenis Database Teradata Jenis .NET Framework
Char String
Clob String
Graphic String
VarChar String
VarGraphic String
Blob Byte[]
Byte Byte[]
VarByte Byte[]
BigInt Int64
ByteInt Int16
Decimal Decimal
Double Double
Integer Int32
Telepon Double
SmallInt Int16
Tanggal DateTime
Waktu TimeSpan
Waktu Dengan Zona Waktu String
Tanda waktu DateTime
Tanda waktu Dengan Zona Waktu DateTimeOffset
Interval Day TimeSpan
Interval Day To Hour TimeSpan
Interval Day To Minute TimeSpan
Interval Day To Second TimeSpan
Interval Hour TimeSpan
Interval Hour To Minute TimeSpan
Interval Hour To Second TimeSpan
Interval Minute TimeSpan
Interval Minute To Second TimeSpan
Interval Second TimeSpan
Interval Year String
Interval Year To Month String
Interval Month String
Periode(Tanggal) String
Periode(Waktu) String
Periode(Waktu dengan Zona Waktu) String
Period(Timestamp) String
Periode(Tanda waktu dengan Zona Waktu) String
Xml String

Memetakan sumber untuk kolom sink

Untuk mempelajari tentang pemetaan kolom dari himpunan data sumber ke kolom dalam himpunan data sink, lihat Memetakan kolom himpunan data di Azure Data Factory.

Bacaan berulang dari sumber relasional

Saat menyalin data dari penyimpanan data relasional, ingatlah pengulangan untuk menghindari hasil yang tidak diinginkan. Di Azure Data Factory, Anda dapat menjalankan ulang irisan secara manual. Anda juga dapat mengonfigurasi kebijakan coba lagi untuk himpunan data sehingga irisan diulang saat kegagalan terjadi. Saat irisan diulang dengan cara apa pun, Anda perlu memastikan bahwa data yang sama dibaca tidak peduli berapa kali irisan dijalankan. Lihat Bacaan yang dapat diulang dari sumber relasional.

Kinerja dan Penyetelan

Lihat Performa Aktivitas Penyalinan & Panduan Pengaturan untuk mempelajari tentang faktor utama yang memengaruhi performa perpindahan data (Aktivitas Penyalinan) di Azure Data Factory dan berbagai cara untuk mengoptimalkannya.