Sumber data SAP HANA memungkinkan Anda membaca dan menulis data ke SAP HANA di DataWorks.
Versi yang didukung
-
DataBase 2.00.048.06.1623425628
-
DataBase 2.00.055.00.161
Batasan
-
Offline sync mendukung pembacaan data dari view.
-
Sumber data ini mendukung serverless resource groups (direkomendasikan) dan exclusive resource groups for Data Integration.
Tipe bidang yang didukung
SAP HANA Reader mendukung tipe data berikut.
| Kategori tipe | Tipe data |
|---|---|
| Integer | INT, TINYINT, SMALLINT, MEDIUMINT, dan BIGINT |
| Floating-point | FLOAT, DOUBLE, dan DECIMAL |
| String | VARCHAR, CHAR, TINYTEXT, TEXT, MEDIUMTEXT, dan LONGTEXT |
| Tanggal dan waktu | DATE, DATETIME, TIMESTAMP, TIME, dan YEAR |
| Boolean | BIT dan BOOL |
| Biner | TINYBLOB, MEDIUMBLOB, BLOB, LONGBLOB, dan VARBINARY |
Tipe data yang tidak tercantum di atas tidak didukung. SAP HANA Reader memperlakukan tinyint(1) sebagai integer.
Tambahkan sumber data
Tambahkan SAP HANA sebagai sumber data di DataWorks sebelum mengembangkan tugas sinkronisasi. Untuk petunjuknya, lihat Data source management.
Deskripsi parameter tersedia langsung di Konsol DataWorks saat Anda menambahkan sumber data.
Saat mengonfigurasi sumber data SAP HANA, parameter koneksi JDBC seperti socketTimeout tidak diterima di bidang Advanced parameters, yang hanya mendukung subset properti driver seperti connectTimeout dan useSSL. Untuk mengatur parameter tersebut, tambahkan ke nilai Database name dalam format dbname?key=value. Misalnya, atur Database name menjadi testdb?socketTimeout=60000, yang menghasilkan URL JDBC jdbc:sap://<host>:<port>/testdb?socketTimeout=60000.
Kembangkan tugas sinkronisasi data
Konfigurasikan tugas offline sync untuk satu tabel
Gunakan Antarmuka tanpa kode atau editor kode untuk mengonfigurasi tugas:
Untuk semua parameter skrip dan contoh skrip, lihat Lampiran: Contoh skrip dan deskripsi parameter.
Lampiran: Contoh skrip dan deskripsi parameter
Bagian berikut menjelaskan parameter skrip Reader dan Writer untuk tugas sinkronisasi batch yang dikonfigurasi di editor kode. Untuk persyaratan format skrip, lihat Konfigurasikan tugas di editor kode.
Contoh skrip Reader
Semua contoh Reader menggunakan "stepType": "saphana" untuk mengidentifikasi plugin SAP HANA.
Tabel tunggal dalam satu database
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "saphana",
"parameter": {
"column": [
"id"
],
"connection": [
{
"querySql": ["select a,b from join1 c join join2 d on c.id = d.id;"],
"datasource": "",
"table": [
"xxx"
]
}
],
"where": "",
"splitPk": "",
"encoding": "UTF-8"
},
"name": "Reader",
"category": "reader"
},
{
"stepType": "stream",
"parameter": {},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Tabel terpartisi (sharded tables)
Pemartisian (sharding) memungkinkan SAP HANA Reader membaca data dari beberapa tabel SAP HANA. Semua tabel terpartisi harus memiliki skema yang sama.
{
"type": "job",
"version": "1.0",
"configuration": {
"reader": {
"plugin": "saphana",
"parameter": {
"connection": [
{
"table": [
"tbl1",
"tbl2",
"tbl3"
],
"datasource": "datasourceName1"
},
{
"table": [
"tbl4",
"tbl5",
"tbl6"
],
"datasource": "datasourceName2"
}
],
"singleOrMulti": "multi",
"splitPk": "db_id",
"column": [
"id", "name", "age"
],
"where": "1 < id and id < 100"
}
},
"writer": {}
}
}
Parameter skrip Reader
| Parameter | Deskripsi | Wajib | Nilai default |
|---|---|---|---|
username |
Username untuk database SAP HANA. | Ya | Tidak ada |
password |
Password untuk database SAP HANA. | Ya | Tidak ada |
column |
Kolom yang akan disinkronkan. Gunakan * untuk menyinkronkan semua kolom. Jika nama kolom berisi garis miring (/), bungkus dengan tanda kutip ganda dan escape tanda kutip tersebut dengan backslash. Misalnya, untuk kolom bernama /abc/efg, atur nilainya menjadi \\"/abc/efg\\". |
Ya | Tidak ada |
table |
Nama tabel yang akan disinkronkan. Tentukan nilainya sebagai array, bahkan untuk satu tabel. | Ya | Tidak ada |
jdbcUrl |
URL Java Database Connectivity (JDBC) untuk database SAP HANA. Contoh: jdbc:sap://127.0.0.1:30215?currentschema=TEST. Parameter koneksi JDBC tambahan seperti socketTimeout dapat ditambahkan, misalnya jdbc:sap://127.0.0.1:30215?currentschema=TEST&socketTimeout=60000. |
Ya | Tidak ada |
splitPk |
Kolom integer numerik yang digunakan sebagai kunci pemisah (split key) untuk sinkronisasi konkuren. Jika tidak ada kolom semacam itu, biarkan kosong. | Tidak | Tidak ada |
Contoh skrip Writer
{
"type": "job",
"version": "2.0",
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "saphana",
"parameter": {
"postSql": [],
"datasource": "",
"column": [
"id",
"value"
],
"batchSize": 1024,
"table": "",
"preSql": [
"delete from XXX;"
]
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": "0"
},
"speed": {
"throttle": true,
"concurrent": 1,
"mbps": "12"
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Parameter skrip Writer
| Parameter | Deskripsi | Wajib | Nilai default |
|---|---|---|---|
datasource |
Nama sumber data. Harus sesuai dengan nama yang dikonfigurasi di editor kode. | Ya | Tidak ada |
table |
Nama tabel tujuan. | Ya | Tidak ada |
column |
Kolom tujuan tempat data akan ditulis, ditentukan sebagai array. Contoh: ["id", "name", "age"]. Gunakan ["*"] untuk menulis ke semua kolom secara berurutan. Jika nama kolom berisi garis miring (/), bungkus dengan tanda kutip ganda dan escape tanda kutip tersebut dengan backslash. Misalnya, untuk kolom bernama /abc/efg, atur nilainya menjadi \\"/abc/efg\\". |
Ya | Tidak ada |
preSql |
Pernyataan SQL yang dijalankan sebelum tugas sinkronisasi dimulai. Gunakan ini untuk membersihkan data lama sebelum memuat data baru. Contoh: truncate table tablename. Di Antarmuka tanpa kode, hanya satu pernyataan yang didukung. Di editor kode, beberapa pernyataan didukung, tetapi atomicitas transaksi tidak didukung. |
Tidak | Tidak ada |
postSql |
Pernyataan SQL yang dijalankan setelah tugas sinkronisasi selesai. Di Antarmuka tanpa kode, hanya satu pernyataan yang didukung. Di editor kode, beberapa pernyataan didukung. Contoh: ALTER TABLE tablename ADD colname TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP. |
Tidak | Tidak ada |
batchSize |
Jumlah catatan yang dikomit dalam satu batch. Nilai yang lebih besar mengurangi jumlah round-trip jaringan dan meningkatkan throughput, tetapi pengaturan yang terlalu tinggi dapat menyebabkan error kehabisan memori (OOM). | Tidak | 1024 |