Anda dapat mengonfigurasi transcoder Mainframe Connector dengan menambahkan konfigurasi yang diperlukan dalam file JSON.
File ini disebut sebagai file konfigurasi transcoder. Anda harus menentukan konfigurasi seperti yang ditentukan di
bagian Konfigurasi.
Perintah qsam encode dan qsam decode menggunakan file konfigurasi transcoder untuk melakukan transcoding data.
Halaman ini menjelaskan berbagai cara untuk mengonfigurasi transcoder Mainframe Connector.
Konfigurasi
Objek Configuration adalah root konfigurasi transcoder.
File ini berisi semua opsi konfigurasi untuk transcoder.
| Representasi JSON |
|---|
{ "defaults": object ( |
| Kolom | |
|---|---|
defaults |
Menentukan pengubah kolom default untuk arketipe Cobol. |
field_overrides |
Tentukan penggantian kolom. |
field_suffixes |
Tentukan akhiran kolom. |
header_records_to_skip |
Tentukan jumlah data pertama yang akan dilewati. |
record_filter_condition |
Tentukan kondisi filter untuk data. Filter ini didasarkan pada subset Common Expression Language (CEL) dan mendukung hal berikut:
Contoh:
|
schema_validation_mode |
Tentukan mode validasi skema. |
transformations |
Tentukan transformasi kolom. |
DefaultsSection
Objek DefaultsSection dapat digunakan untuk menentukan modifikasi default menurut jenis cobol.
Aturan ini diterapkan sebelum modifikasi akhiran atau penggantian.
| Representasi JSON |
|---|
{ "alpha_numeric_display": object ( |
| Kolom | |
|---|---|
alpha_numeric_display |
Tentukan default untuk kolom alfanumerik (PIC X). |
binary |
Tentukan default untuk kolom angka biner (COMP). |
dbcs |
Default untuk kolom dbcs (DISPLAY-1). |
hexadecimal_floating_point |
Default untuk kolom floating point heksadesimal (COMP-1, COMP-2). |
national |
Tentukan default untuk kolom nasional (PIC N). |
numeric_display |
Tentukan default untuk kolom tampilan numerik (desimal berzona). |
packed_decimal |
Tentukan default untuk kolom desimal yang dipaketkan (COMP-3). |
utf8 |
Tentukan default untuk kolom UTF-8 (PIC U). |
FieldModifier
Pengubah kolom memungkinkan Anda mengubah encoding atau decoding kolom tertentu. Perhatikan bahwa tidak semua pengubah dapat diterapkan ke semua kolom. Lihat dokumentasi pengubah tertentu untuk mengetahui informasi selengkapnya.
| Representasi JSON |
|---|
{ "binary": object ( |
| Kolom | |
|---|---|
binary |
Mengganti konfigurasi default untuk kolom numerik biner. |
bytes |
Memperlakukan kolom sebagai urutan byte mentah, dengan mengabaikan informasi jenis sebelumnya. |
chain |
Menggabungkan beberapa pengubah untuk diterapkan secara berurutan. |
decode_as_null |
Menentukan cara nilai null harus didekode. |
encode_null_as |
Menentukan cara nilai null harus dienkode. |
filler |
Mengecualikan kolom dari pemrosesan dan output. |
format_date |
Memformat kolom string sebagai tanggal. |
format_timestamp |
Memformat kolom string sebagai stempel waktu. |
hfp |
Menafsirkan kolom sebagai angka Floating Point Heksadesimal (HFP). |
null_if |
Menetapkan kolom ke null secara bersyarat berdasarkan nilai kolom lain. |
null_if_empty |
Menetapkan kolom ke null jika kontennya dianggap kosong. |
null_if_invalid |
Menetapkan kolom ke null jika terjadi error transcoding, sehingga mencegah tumpahan data. |
packed_decimal |
Mengganti konfigurasi default untuk kolom desimal yang dipaketkan. |
string |
Mengganti konfigurasi default untuk kolom string. |
varlen |
Tetapkan data sebagai kolom panjang variabel. |
zoned_decimal |
Mengganti konfigurasi default untuk kolom desimal zona. |
Biner
Abaikan pengubah sebelumnya dan perlakukan kolom ini sebagai angka biner.
| Representasi JSON |
|---|
{ "signedness": enum ( |
| Kolom | |
|---|---|
signedness |
Penandaan angka. |
Byte
Memperlakukan kolom sebagai urutan byte mentah. Pengubah ini mengganti informasi jenis sebelumnya, sehingga data byte mentah kolom dipertahankan apa adanya tanpa encoding karakter atau interpretasi numerik tertentu. Anda dapat menerapkan pengubah ini ke kolom apa pun, terlepas dari jenis atau ukuran aslinya.
Berikan objek JSON kosong sebagai berikut:
| Representasi JSON |
|---|
{ |
DecodeAsNull
Menentukan cara nilai null ditafsirkan selama proses decoding. Karena COBOL tidak mendukung null secara native, parameter ini menentukan nilai yang harus diperlakukan sebagai null.
| Representasi JSON |
|---|
{ "hex_bytes": string, "values": string |
| Kolom | |
|---|---|
hex_bytes |
Daftar representasi heksadesimal dari satu byte.
Jika kolom berisi pengulangan salah satu byte ini, kolom tersebut akan diperlakukan sebagai null.
Misalnya, menggunakan |
values |
Daftar representasi string. Setelah decoding awal kolom ke bentuk stringnya, jika konten kolom cocok dengan salah satu nilai ini, konten tersebut akan diperlakukan sebagai null. |
EncodeNullAs
Menentukan cara nilai null direpresentasikan selama proses encoding.
| Representasi JSON |
|---|
{ "hex_byte": string, "value": string |
| Kolom | |
|---|---|
hex_byte |
Enkode urutan byte spesifik ini (direpresentasikan sebagai string heksadesimal)
saat nilai sumber null. Misalnya, |
value |
Enkode nilai spesifik ini saat nilai sumber adalah null. Pastikan string tersebut valid untuk jenis kolom. |
Pengisi
Menentukan bahwa kolom akan diabaikan selama pemrosesan. Kolom tidak akan didekode dari input atau dienkode ke output dan akan dikecualikan dari skema dan tabel data yang dihasilkan selama decoding. Anda dapat menerapkan pengubah ini ke kolom apa pun yang memiliki ukuran statis yang diketahui.
Berikan objek JSON kosong sebagai berikut:
| Representasi JSON |
|---|
{ |
FormatDate
Format kolom string atau numerik menjadi tanggal menggunakan salah satu format yang didukung. Anda hanya dapat menerapkan pengubah ini ke kolom berukuran. Untuk kolom numerik, kolom tersebut dikonversi secara dinamis ke representasi stringnya (tidak termasuk penanda tanda) sebelum pemformatan. Diasumsikan bahwa nilai tanggal adalah positif; tanggal numerik negatif tidak didukung dan akan gagal diuraikan. Selama proses decoding, format diuji secara berurutan hingga salah satu format cocok dengan string. Selama proses encoding, format pertama akan digunakan dan format lainnya akan diabaikan.
| Representasi JSON |
|---|
{ "formats": object ( |
| Kolom | |
|---|---|
formats |
Daftar format tanggal. |
DateTimeFormat
Ukuran dan pola yang akan digunakan saat mengonversi kolom menjadi tanggal.
| Representasi JSON |
|---|
{ "pattern": string, "size": int |
| Kolom | |
|---|---|
pattern |
Tentukan pola pemformat tanggal. Untuk mengetahui informasi selengkapnya tentang pola pemformat yang valid, lihat Class DateTimeFormatter. Catatan: Tahun dua digit ( |
size |
Tentukan ukuran kolom yang menerapkan pola ini. |
FormatTimestamp
Memformat string menjadi stempel waktu menggunakan salah satu format yang disediakan. Ini hanya dapat diterapkan ke kolom berukuran. Selama dekode, format diuji secara berurutan hingga salah satu format cocok dengan string. Selama encoding, format pertama akan digunakan dan sisanya akan diabaikan.
| Representasi JSON |
|---|
{ "formats": object ( |
| Kolom | |
|---|---|
formats |
Daftar format stempel waktu. |
HFP
Tetapkan kolom ini sebagai Hexadecimal Floating-Point.
Berikan objek JSON kosong sebagai berikut:
| Representasi JSON |
|---|
{ |
ModifierChain
Tentukan rantai pengubah untuk menerapkan beberapa pengubah secara berurutan. Pengubah diterapkan sesuai urutan yang ditentukan.
| Representasi JSON |
|---|
{ "modifiers": object ( |
| Kolom | |
|---|---|
modifiers |
Tentukan daftar pengubah yang akan diterapkan. |
NullIf
Menetapkan kolom ke null jika kondisi terpenuhi. Anda harus menentukan salah satu dari
null_value atau non_null_value, atau keduanya.
Untuk membuat kolom indikator null, Anda dapat menggunakan FieldSuffix dengan pengubah kolom null_if,
dan menetapkan is_inverse ke true seperti yang ditunjukkan dalam contoh berikut:
Contoh: Indikator null
Untuk membuat kolom indikator null, kita dapat menggunakan pengubah kolomnull_if seperti ini.
{
"field_suffixes": [
{
"suffix": "NID",
"is_inverse": true,
"modifier": {
"null_if": {
"null_value": "?",
"target_field": "$self"
}
}
}
]
}
NID menjadi indikator null secara efektif seperti yang ditunjukkan dalam
cuplikan copybook berikut:
01 REC. 02 FIELD PIC X(10). 02 FIELD-NID PIC X(1).
Contoh: Indikator null biner
Untuk membuat kolom indikator nullbinary, kita dapat menggunakan pengubah kolom binary dan null_if seperti ini.
{
"field_suffixes": [
{
"suffix": "NID",
"modifier": {
"binary": {}
}
},
{
"suffix": "NID",
"is_inverse": true,
"modifier": {
"null_if": {
"null_value": "15",
"target_field": "$self"
}
}
}
]
}
NID menjadi indikator null binary secara efektif menggunakan copybook yang sama dari contoh sebelumnya.
Contoh: Indikator null byte
Untuk membuat kolom indikator nullbytes, kita dapat menggunakan pengubah kolom bytes dan null_if seperti ini.
Nilai untuk null dan bukan null dinyatakan sebagai HEX.
{
"field_suffixes": [
{
"suffix": "NID",
"modifier": {
"bytes": {}
}
},
{
"suffix": "NID",
"is_inverse": true,
"modifier": {
"null_if": {
"null_value": "FF",
"target_field": "$self"
}
}
}
]
}
NID menjadi indikator null bytes secara efektif menggunakan copybook yang sama dari contoh sebelumnya.
| Representasi JSON |
|---|
{ "non_null_value": string, "non_null_values": string, "null_value": string, "null_values": string, "target_field": string |
| Kolom | |
|---|---|
non_null_value |
Jika ditentukan, jika |
non_null_values |
Jika ditentukan, jika |
null_value |
Jika ditentukan, jika |
null_values |
Jika ditentukan, jika |
target_field |
Tentukan kolom yang nilainya ingin Anda periksa. Kolom harus berada dalam cakupan. Untuk mengakses kolom bertingkat, Anda dapat menggunakan notasi titik (misalnya, "GROUP.FIELD"). |
NullIfEmpty
Kolom harus ditetapkan ke null jika semua byte di kolom tersebut adalah 0.
Berikan objek JSON kosong sebagai berikut:
| Representasi JSON |
|---|
{ |
NullIfInvalid
Memperlakukan nilai sebagai null jika transcoding gagal.
Anda hanya dapat menerapkan pengubah ini ke kolom berukuran.
Secara default, jika kolom gagal didekode, seluruh kumpulan data akan dipindahkan ke set data spillover (error) dan dikecualikan dari output, sedangkan sisa pemuatan akan diselesaikan dengan kumpulan data yang valid.
Saat Anda menetapkan pengubah null_if_invalid, Mainframe Connector akan menyimpan data yang tidak valid dan menetapkan kolom ini ke null.
Gunakan hanya jika Anda ingin mempertahankan baris tersebut dengan nilai null—bukan hanya untuk membuat pemuatan berhasil, karena setelan default sudah melewati data yang buruk.
Error akan diabaikan dan tidak dicatat dalam set data spillover.
Selama proses decoding, nilai kolom ini akan menjadi null untuk data ini.
Selama proses encoding, jika data tidak dapat ditulis, seluruh kolom akan diisi dengan byte null.
Berikan objek JSON kosong sebagai berikut:
| Representasi JSON |
|---|
{ |
PackedDecimal
Tetapkan kolom ini ke PackedDecimal.
| Representasi JSON |
|---|
{ "logical_type": enum ( |
| Kolom | |
|---|---|
logical_type |
Ganti jenis logis. Secara default, Mainframe Connector menggunakan jenis logis yang optimal berdasarkan presisi dan skala. |
negative_sign_nibble |
Menentukan nibble yang akan digunakan untuk tanda negatif. Meskipun x'B' dan x'D' adalah tanda negatif yang valid, beberapa sistem atau aplikasi mainframe mungkin memiliki konvensi yang mengharuskan salah satunya. |
String
Menetapkan berbagai opsi yang terkait dengan decoding dan encoding string. Hanya dapat diterapkan pada kolom string.
| Representasi JSON |
|---|
{ "encoding": string, "pad_char": string, "trim_suffix": boolean |
| Kolom | |
|---|---|
encoding |
Encoding yang digunakan untuk mengenkode kolom. |
pad_char |
Jika ditetapkan, string ekspor padding dengan |
trim_suffix |
Jika ditetapkan ke true, spasi kosong di akhir string akan dipangkas. trim_suffix hanya memengaruhi decoding, encoding mengabaikan trim_suffix. Perhatikan bahwa string yang hanya terdiri dari spasi kosong akan menjadi string kosong. |
VarLen
Merepresentasikan kolom dengan panjang variabel.
Kolom dengan panjang variabel berisi tiga bagian:
- Item grup yang berisi dua subkolom.
- Kolom dalam item grup yang berisi panjang data transaksi.
- Kolom dalam item grup yang berisi data.
Nama kolom panjang variabel akan menjadi nama grup.
Berikan objek JSON kosong sebagai berikut:
| Representasi JSON |
|---|
{ |
ZonedDecimal
Menetapkan berbagai opsi yang terkait dengan encoding dan decoding desimal berzona. Anda hanya dapat menerapkan pengubah ini pada kolom desimal.
| Representasi JSON |
|---|
{ "encoding": enum ( |
| Kolom | |
|---|---|
encoding |
Encoding yang digunakan untuk mengenkode kolom. |
logical_type |
Tentukan jenis logis yang akan digunakan saat mendekode atau mengenkode kolom. |
FieldOverride
Ganti atau ubah rantai dekode dan enkode untuk kolom yang ditentukan.
| Representasi JSON |
|---|
{ "field": string, "modifier": object ( |
| Kolom | |
|---|---|
field |
Tentukan nama kolom yang akan diterapkan pengubah. |
modifier |
Tentukan pengubah yang akan diterapkan ke kolom yang cocok. |
FieldSuffix
Akhiran kolom berlaku untuk semua kolom yang memiliki akhiran.
Kolom akan dicocokkan jika diakhiri dengan tanda hubung (-) atau garis bawah (_) yang diikuti dengan akhiran.
Akhiran tidak peka huruf besar/kecil.
Pengubah FieldSuffix diterapkan setelah pengubah FieldOverride.
Misalnya, pengubah yang ditentukan untuk akhiran NID akan diterapkan ke kolom bernama
FLD-NID, tetapi tidak untuk kolom FUNID.
| Representasi JSON |
|---|
{ "is_inverse": boolean, "modifier": object ( |
| Kolom | |
|---|---|
is_inverse |
Tentukan apakah pengubah adalah pengubah kolom inverse atau tidak.
Pengubah kolom invers menerapkan pengubah pada kolom lain yang memiliki nama yang sama dengan kolom yang memiliki pengubah,
tetapi tanpa pengubah. Misalnya, jika kolom Saat menggunakan pengubah kolom inversi, ID khusus Misalnya, untuk membuat kolom indikator null, Anda dapat menggunakan pengubah kolom |
modifier |
Tentukan pengubah yang akan diterapkan ke kolom yang cocok. |
suffix |
Kolom dengan akhiran ini akan menerapkan pengubah. |
Transformasi
Transformasi tampilan digunakan untuk mengubah hubungan antara tabel dan file QSAM. Transformasi selalu diungkapkan dari sudut pandang data. Konsepnya mirip dengan tabel tampilan di BigQuery.
| Representasi JSON |
|---|
{ "exclude": object ( |
| Kolom | |
|---|---|
exclude |
|
move |
|
rename |
|
split |
|
target_table |
Opsional. Tentukan nama tabel (tampilan) target yang akan diterapkan transformasi. Secara default, transformasi berlaku untuk tabel utama ( Catatan: Transformasi pemisahan itu sendiri tidak dapat ditargetkan dan akan mengalami error jika |
unnest |
|
Kecualikan
Mengecualikan kolom dari tabel yang dihasilkan, tetapi tetap menjalani decoding atau encoding. Hal ini berguna jika kolom tidak perlu ditransfer ke tabel, tetapi diperlukan untuk transcoding. Misalnya, kolom indikator null atau panjang dapat dihilangkan dari tabel.
Untuk mengabaikan transcoding sepenuhnya, terapkan pengubah pengisi.
| Representasi JSON |
|---|
{ "field": string |
| Kolom | |
|---|---|
field |
Tentukan kolom yang akan dikecualikan. |
Pindahkan
Memindahkan kolom dalam data.
| Representasi JSON |
|---|
{ "field": string, "offset": int |
| Kolom | |
|---|---|
field |
Tentukan kolom yang akan dipindahkan. |
offset |
Tentukan jumlah tempat, maju atau mundur, yang perlu dipindahkan ke kolom. |
Ganti nama
Mengganti nama satu atau beberapa kolom berdasarkan kecocokan ekspresi reguler.
Misalnya, untuk mengganti semua tanda hubung dengan garis bawah, gunakan format JSON berikut:
{"find": "\\-", "replace":"_"}.
| Representasi JSON |
|---|
{ "find": string, "replace": string |
| Kolom | |
|---|---|
find |
Menentukan pola ekspresi reguler Java untuk mengidentifikasi kolom yang akan diganti namanya. Pola dicocokkan dengan nama kolom lengkap. Jika pola cocok dengan bagian mana pun dari nama kolom, kolom tersebut dianggap cocok. Contoh:
|
replace |
Menentukan nama baru untuk kolom yang cocok. Grup tangkapan dari ekspresi reguler Contoh:
|
Bagi
| Representasi JSON |
|---|
{ "field": string, "foreign_key": string, "primary_key": string |
| Kolom | |
|---|---|
field |
Tentukan kolom yang ingin Anda pisahkan. |
foreign_key |
Tentukan nama untuk kolom yang akan ditambahkan ke skema baru tempat nilai kunci utama akan disimpan. Jika tidak ditentukan, nama kunci utama akan digunakan. |
primary_key |
Tentukan nama kolom yang akan digunakan sebagai kunci utama. |
Unnest
Pisahkan kolom.
| Representasi JSON |
|---|
{ "field": string, "format": string |
| Kolom | |
|---|---|
field |
Menentukan kolom yang akan di-unnest |
format |
Tentukan format kolom baru.
Untuk struct yang tidak bertingkat, Untuk array dan daftar yang tidak bertingkat, |
Enum
BinarySignedness
| Enum | |
|---|---|
SIGNED |
Bilangan biner ditandatangani. |
UNSIGNED |
Bilangan biner tidak bertanda. |
UNSPECIFIED |
Coba dan simpulkan apakah bilangan bertanda atau tidak bertanda dari rantai yang ada. |
DecimalLogicalType
Jenis logika yang akan digunakan untuk kolom desimal.
| Enum | |
|---|---|
AUTO |
Gunakan jenis yang paling optimal berdasarkan skala dan presisi. |
BIG_DECIMAL |
Simpan nilai sebagai nilai desimal tak terbatas. Ini adalah opsi paling lambat, tetapi mendukung desimal apa pun dengan presisi apa pun pada skala apa pun. |
BIG_INTEGER |
Simpan nilai sebagai nilai bilangan bulat yang tidak terbatas. Ini adalah opsi paling lambat, tetapi mendukung bilangan bulat dengan presisi apa pun. |
DECIMAL64 |
Gunakan 64-bit untuk menyimpan nilai. Pengubah ini hanya berfungsi untuk angka yang presisinya kurang dari atau sama dengan 18. |
LONG |
Gunakan 64-bit untuk menyimpan nilai. Pengubah ini hanya berfungsi untuk angka yang presisinya kurang dari atau sama dengan 18, dan skalanya adalah 0. |
PackedDecimalNegativeNibble
| Enum | |
|---|---|
NIBBLE_B |
Defaultnya adalah menggunakan x'B'. |
NIBBLE_D |
Gunakan x'D' untuk nibble tanda negatif. |
SchemaValidationMode
Tentukan mode validasi skema yang akan digunakan selama kompilasi copybook. Mode ini memverifikasi kompatibilitas dengan format data target tertentu.
| Enum | |
|---|---|
BIG_QUERY |
Mode validasi skema untuk kompatibilitas BigQuery. Mode ini memperluas validasi default untuk memverifikasi bahwa skema copybook kompatibel dengan jenis data BigQuery. |
DEFAULT |
Mode validasi skema default. Mode ini memverifikasi bahwa nama kolom yang unik ada di copybook. |
MYSQL |
Mode validasi skema untuk kompatibilitas MySQL. Mode ini memperluas validasi default untuk memverifikasi bahwa skema copybook kompatibel dengan jenis data MySQL. |
POSTGRES |
Mode validasi skema untuk kompatibilitas PostgreSQL. Mode ini memperluas validasi default untuk memverifikasi bahwa skema copybook kompatibel dengan jenis data PostgreSQL. |
ZonedDecimalEncoding
Tentukan encoding yang akan digunakan saat mendekode atau mengenkode kolom desimal berzona.
| Enum | |
|---|---|
ASCII |
Gunakan encoding ASCII. |
EBCDIC |
Gunakan encoding EBCDIC. |
UNSPECIFIED |
Pertahankan encoding yang ditentukan dalam rantai pengubah.
Jika tidak ada pengubah yang ditentukan, EBCDIC akan digunakan. |