JSON 파일에 필요한 구성을 추가하여 Mainframe Connector 트랜스코더를 구성할 수 있습니다.
이 파일을 트랜스코더 구성 파일이라고 합니다. 구성 섹션에 지정된 대로 구성을 정의해야 합니다.
qsam encode 및 qsam decode 명령어는 트랜스코더 구성 파일을 사용하여 데이터 트랜스코딩을 실행합니다.
이 페이지에서는 Mainframe Connector 트랜스코더를 구성할 수 있는 다양한 방법을 설명합니다.
구성
Configuration 객체는 트랜스코더 구성의 루트입니다.
트랜스코더의 모든 구성 옵션이 포함되어 있습니다.
| JSON 표현 |
|---|
{ "defaults": object ( |
| 필드 | |
|---|---|
defaults |
Cobol 원형의 기본 필드 수정자를 지정합니다. |
field_overrides |
필드 재정의를 지정합니다. |
field_suffixes |
필드 접미사를 지정합니다. |
header_records_to_skip |
건너뛸 첫 번째 레코드 수를 지정합니다. |
record_filter_condition |
레코드의 필터 조건을 지정합니다. 필터는 Common Expression Language (CEL)의 하위 집합을 기반으로 하며 다음을 지원합니다.
예:
|
schema_validation_mode |
스키마 검사 모드를 지정합니다. |
transformations |
필드 변환을 지정합니다. |
DefaultsSection
DefaultsSection 객체를 사용하여 COBOL 유형별 기본 수정사항을 지정할 수 있습니다.
이러한 수정사항은 접미사 또는 재정의 수정사항 앞에 적용됩니다.
| JSON 표현 |
|---|
{ "alpha_numeric_display": object ( |
| 필드 | |
|---|---|
alpha_numeric_display |
영숫자 (PIC X) 필드의 기본값을 지정합니다. |
binary |
이진수 (COMP) 필드의 기본값을 지정합니다. |
dbcs |
dbcs (DISPLAY-1) 필드의 기본값입니다. |
hexadecimal_floating_point |
16진수 부동 소수점 (COMP-1, COMP-2) 필드의 기본값입니다. |
national |
국가 (PIC N) 필드의 기본값을 지정합니다. |
numeric_display |
숫자 표시 (구역 십진수) 필드의 기본값을 지정합니다. |
packed_decimal |
패킹된 10진수 (COMP-3) 필드의 기본값을 지정합니다. |
utf8 |
UTF-8 (PIC U) 필드의 기본값을 지정합니다. |
FieldModifier
필드 수정자를 사용하면 특정 필드의 인코딩 또는 디코딩을 수정할 수 있습니다. 일부 수정자는 일부 필드에 적용할 수 없습니다. 자세한 내용은 특정 수정자 문서를 참고하세요.
| JSON 표현 |
|---|
{ "binary": object ( |
| 필드 | |
|---|---|
binary |
이진 숫자 필드의 기본 구성을 재정의합니다. |
bytes |
이전 유형 정보를 무시하고 필드를 원시 바이트 시퀀스로 처리합니다. |
chain |
순차적으로 적용할 여러 수정자를 연결합니다. |
decode_as_null |
null 값을 디코딩하는 방법을 정의합니다. |
encode_null_as |
null 값을 인코딩하는 방법을 정의합니다. |
filler |
처리 및 출력에서 필드를 제외합니다. |
format_date |
문자열 필드의 형식을 날짜로 지정합니다. |
format_timestamp |
문자열 필드를 타임스탬프로 형식화합니다. |
hfp |
필드를 16진수 부동 소수점 (HFP) 숫자로 해석합니다. |
null_if |
다른 필드의 값에 따라 필드를 null로 조건부로 설정합니다. |
null_if_empty |
콘텐츠가 비어 있는 것으로 간주되면 필드를 null로 설정합니다. |
null_if_invalid |
트랜스코딩 오류가 발생하면 필드를 null로 설정하여 레코드 오버플로를 방지합니다. |
packed_decimal |
패킹된 십진수 필드의 기본 구성을 재정의합니다. |
string |
문자열 필드의 기본 구성을 재정의합니다. |
varlen |
레코드를 가변 길이 필드로 설정합니다. |
zoned_decimal |
영역화된 십진수 필드의 기본 구성을 재정의합니다. |
바이너리
이전 수정자를 무시하고 이 필드를 이진수로 취급합니다.
| JSON 표현 |
|---|
{ "signedness": enum ( |
| 필드 | |
|---|---|
signedness |
숫자의 부호입니다. |
바이트
필드를 원시 바이트 시퀀스로 취급합니다. 이 수정자는 이전 유형 정보를 재정의하므로 필드의 원시 바이트 데이터가 특정 문자 인코딩이나 숫자 해석 없이 그대로 보존됩니다. 원래 유형이나 크기에 관계없이 모든 필드에 이 수정자를 적용할 수 있습니다.
다음과 같이 빈 JSON 객체를 제공합니다.
| JSON 표현 |
|---|
{ |
DecodeAsNull
디코딩 프로세스 중에 null 값이 해석되는 방식을 정의합니다. COBOL은 기본적으로 null을 지원하지 않으므로 이 매개변수는 null로 처리해야 하는 값을 지정합니다.
| JSON 표현 |
|---|
{ "hex_bytes": string, "values": string |
| 필드 | |
|---|---|
hex_bytes |
단일 바이트의 16진수 표현 목록입니다.
필드에 이러한 바이트가 반복되어 포함되면 null로 처리됩니다.
예를 들어 모든 고점에 |
values |
문자열 표현 목록입니다. 필드를 문자열 형식으로 초기 디코딩한 후 필드의 콘텐츠가 이러한 값 중 하나와 일치하면 null로 처리됩니다. |
EncodeNullAs
인코딩 프로세스 중에 null 값이 표현되는 방식을 정의합니다.
| JSON 표현 |
|---|
{ "hex_byte": string, "value": string |
| 필드 | |
|---|---|
hex_byte |
소스 값이 null인 경우 이 특정 바이트 시퀀스 (16진수 문자열로 표시됨)를 인코딩합니다. 예를 들어 2바이트 필드의 |
value |
소스 값이 null인 경우 이 특정 값을 인코딩합니다. 문자열이 필드의 유형에 유효한지 확인합니다. |
가축 영양제
처리 중에 필드가 무시되도록 지정합니다. 필드는 입력에서 디코딩되거나 출력으로 인코딩되지 않으며 디코딩 중에 결과 스키마 및 데이터 테이블에서 제외됩니다. 이 수정자는 정적이고 알려진 크기가 있는 모든 필드에 적용할 수 있습니다.
다음과 같이 빈 JSON 객체를 제공합니다.
| JSON 표현 |
|---|
{ |
FormatDate
지원되는 형식 중 하나를 사용하여 문자열 또는 숫자 필드를 날짜로 형식 지정합니다. 이 수정자는 크기가 지정된 필드에만 적용할 수 있습니다. 숫자 필드의 경우 서식을 지정하기 전에 부호 마커를 제외한 문자열 표현으로 동적으로 변환됩니다. 날짜 값은 양수라고 가정합니다. 음수 숫자 날짜는 지원되지 않으며 파싱에 실패합니다. 디코딩 프로세스 중에 형식이 문자열과 일치할 때까지 순서대로 테스트됩니다. 인코딩 프로세스 중에 첫 번째 형식이 사용되고 나머지는 무시됩니다.
| JSON 표현 |
|---|
{ "formats": object ( |
| 필드 | |
|---|---|
formats |
날짜 형식 목록입니다. |
DateTimeFormat
필드를 날짜로 변환할 때 사용할 크기와 패턴입니다.
| JSON 표현 |
|---|
{ "pattern": string, "size": int |
| 필드 | |
|---|---|
pattern |
날짜 포맷터 패턴을 지정합니다. 유효한 포맷터 패턴에 대한 자세한 내용은 클래스 DateTimeFormatter를 참고하세요. |
size |
이 패턴이 적용되는 필드의 크기를 지정합니다. |
FormatTimestamp
제공된 형식 중 하나를 사용하여 문자열을 타임스탬프로 형식화합니다. 크기가 지정된 필드에만 적용할 수 있습니다. 디코딩하는 동안 형식이 문자열과 일치할 때까지 순서대로 테스트됩니다. 인코딩 중에 첫 번째 형식이 사용되고 나머지는 무시됩니다.
| JSON 표현 |
|---|
{ "formats": object ( |
| 필드 | |
|---|---|
formats |
타임스탬프 형식 목록입니다. |
HFP
이 필드를 16진수 부동 소수점으로 설정합니다.
다음과 같이 빈 JSON 객체를 제공합니다.
| JSON 표현 |
|---|
{ |
ModifierChain
수정자 체인을 지정하여 여러 수정자를 연속으로 적용합니다. 수정자는 지정된 순서대로 적용됩니다.
| JSON 표현 |
|---|
{ "modifiers": object ( |
| 필드 | |
|---|---|
modifiers |
적용할 수정자 목록을 지정합니다. |
NullIf
조건이 충족되면 필드를 null로 설정합니다. null_value, non_null_value 또는 둘 다를 지정해야 합니다.
null-indicator 필드를 만들려면 null_if 필드 수정자가 있는 FieldSuffix를 사용하고 다음 예와 같이 is_inverse를 true로 설정하면 됩니다.
예: null-indicator
null 표시기 필드를 만들려면 다음과 같이null_if 필드 수정자를 사용하면 됩니다.
{
"field_suffixes": [
{
"suffix": "NID",
"is_inverse": true,
"modifier": {
"null_if": {
"null_value": "?",
"target_field": "$self"
}
}
}
]
}
NID 접미사가 있는 모든 필드가 효과적으로 null 표시기가 될 수 있습니다.
01 REC. 02 FIELD PIC X(10). 02 FIELD-NID PIC X(1).
예: 바이너리 null 표시기
binary null 표시기 필드를 만들려면 다음과 같이 binary 및 null_if 필드 수정자를 사용하면 됩니다.
{
"field_suffixes": [
{
"suffix": "NID",
"modifier": {
"binary": {}
}
},
{
"suffix": "NID",
"is_inverse": true,
"modifier": {
"null_if": {
"null_value": "15",
"target_field": "$self"
}
}
}
]
}
NID가 있는 모든 필드가 이전 예의 동일한 카피북을 사용하여 효과적으로 binary null 표시기가 될 수 있습니다.
예: 바이트 null 표시기
bytes null 표시기 필드를 만들려면 다음과 같이 bytes 및 null_if 필드 수정자를 사용하면 됩니다. null 및 null이 아닌 값은 HEX로 표현됩니다.
{
"field_suffixes": [
{
"suffix": "NID",
"modifier": {
"bytes": {}
}
},
{
"suffix": "NID",
"is_inverse": true,
"modifier": {
"null_if": {
"null_value": "FF",
"target_field": "$self"
}
}
}
]
}
NID 접미사가 있는 모든 필드는 이전 예의 동일한 카피북을 사용하여 효과적으로 bytes null 표시기가 될 수 있습니다.
| JSON 표현 |
|---|
{ "non_null_value": string, "non_null_values": string, "null_value": string, "null_values": string, "target_field": string |
| 필드 | |
|---|---|
non_null_value |
지정된 경우 |
non_null_values |
지정된 경우 |
null_value |
지정된 경우 |
null_values |
지정된 경우 |
target_field |
값을 확인할 필드를 지정합니다. 필드가 범위 내에 있어야 합니다. 중첩된 필드에 액세스하려면 점 표기법('GROUP.FIELD' 등)을 사용하면 됩니다. |
NullIfEmpty
해당 필드의 모든 바이트가 0이면 필드를 null로 설정해야 합니다.
다음과 같이 빈 JSON 객체를 제공합니다.
| JSON 표현 |
|---|
{ |
NullIfInvalid
트랜스코딩이 실패하면 값을 null로 처리합니다.
이 수정자는 크기가 지정된 필드에만 적용할 수 있습니다.
기본적으로 필드의 디코딩이 실패하면 전체 레코드가 스필오버 (오류) 데이터 세트로 이동되고 출력에서 제외되며, 나머지 로드는 유효한 레코드로 완료됩니다.
null_if_invalid 수정자를 설정하면 Mainframe Connector에서 유효하지 않은 레코드를 유지하고 이 필드를 null로 설정합니다.
기본적으로 잘못된 레코드는 건너뛰므로 로드를 성공시키기 위해서가 아니라 null 값이 있는 행을 유지하려는 경우에만 사용하세요.
오류는 무시되며 스필오버 데이터 세트에 로깅되지 않습니다.
디코딩 프로세스 중에 이 레코드의 이 필드 값은 null입니다.
인코딩 과정에서 데이터를 쓸 수 없으면 전체 필드가 null 바이트로 채워집니다.
다음과 같이 빈 JSON 객체를 제공합니다.
| JSON 표현 |
|---|
{ |
PackedDecimal
이 필드를 PackedDecimal로 설정합니다.
| JSON 표현 |
|---|
{ "logical_type": enum ( |
| 필드 | |
|---|---|
logical_type |
논리 유형을 재정의합니다. 기본적으로 Mainframe Connector는 정밀도와 스케일에 따라 최적의 논리 유형을 사용합니다. |
negative_sign_nibble |
음수 부호에 사용할 니블을 지정합니다. x'B'와 x'D'는 모두 유효한 음수 부호이지만 일부 메인프레임 시스템이나 애플리케이션에는 다른 것보다 하나가 필요한 규칙이 있을 수 있습니다. |
문자열
문자열 디코딩 및 인코딩과 관련된 다양한 옵션을 설정합니다. 문자열 필드에만 적용할 수 있습니다.
| JSON 표현 |
|---|
{ "encoding": string, "pad_char": string, "trim_suffix": boolean |
| 필드 | |
|---|---|
encoding |
필드가 인코딩된 인코딩입니다. |
pad_char |
|
trim_suffix |
true로 설정하면 문자열 끝의 공백이 잘립니다. trim_suffix는 디코딩에만 영향을 미치며 인코딩은 trim_suffix를 무시합니다. 공백으로만 구성된 문자열은 빈 문자열이 됩니다. |
VarLen
가변 길이 필드를 나타냅니다.
가변 길이 필드는 다음 세 부분으로 구성됩니다.
- 두 개의 하위 필드가 포함된 그룹 항목입니다.
- 트랜잭션 데이터의 길이를 포함하는 그룹 항목 내 필드입니다.
- 데이터가 포함된 그룹 항목 내의 필드입니다.
가변 길이 필드의 이름은 그룹 이름이 됩니다.
다음과 같이 빈 JSON 객체를 제공합니다.
| JSON 표현 |
|---|
{ |
ZonedDecimal
구역화된 십진수의 인코딩 및 디코딩과 관련된 다양한 옵션을 설정합니다. 이 수정자는 십진수 필드에만 적용할 수 있습니다.
| JSON 표현 |
|---|
{ "encoding": enum ( |
| 필드 | |
|---|---|
encoding |
필드가 인코딩된 인코딩입니다. |
logical_type |
필드를 디코딩하거나 인코딩할 때 사용할 논리적 유형을 지정합니다. |
FieldOverride
지정된 필드의 디코딩 및 인코딩 체인을 재정의하거나 수정합니다.
| JSON 표현 |
|---|
{ "field": string, "modifier": object ( |
| 필드 | |
|---|---|
field |
수정자를 적용할 필드의 이름을 지정합니다. |
modifier |
일치하는 필드에 적용할 수정자를 지정합니다. |
FieldSuffix
필드 접미사는 접미사가 있는 모든 필드에 적용됩니다.
필드는 하이픈 (-) 또는 밑줄 (_)과 서픽스로 끝나는 경우 일치합니다.
접미사는 대소문자를 구분하지 않습니다.
FieldSuffix 수정자는 FieldOverride 수정자 후에 적용됩니다.
예를 들어 NID 접미사에 정의된 수정자는 FLD-NID이라는 필드에 적용되지만 FUNID 필드에는 적용되지 않습니다.
| JSON 표현 |
|---|
{ "is_inverse": boolean, "modifier": object ( |
| 필드 | |
|---|---|
is_inverse |
수정자가 역 필드 수정자인지 여부를 지정합니다.
역 필드 수정자는 수정자가 없는 필드와 이름이 같은 다른 필드에 수정자를 적용합니다. 예를 들어 동일한 레코드에 역 필드 수정자를 사용하는 경우 특수 식별자 예를 들어 null 표시기 필드를 만들려면 |
modifier |
일치하는 필드에 적용할 수정자를 지정합니다. |
suffix |
이 접미사가 있는 필드에는 수정자가 적용됩니다. |
변환
보기 변환은 테이블과 QSAM 파일 간의 관계를 수정하는 데 사용됩니다. 변환은 항상 데이터의 관점에서 표현됩니다. 이 개념은 BigQuery의 뷰 테이블과 유사합니다.
| JSON 표현 |
|---|
{ "exclude": object ( |
| 필드 | |
|---|---|
exclude |
|
move |
|
rename |
|
split |
|
target_table |
선택사항입니다. 변환을 적용할 대상 테이블 (뷰) 이름을 지정합니다. 기본적으로 변환은 기본 표 ( 참고: 분할 변환 자체는 타겟팅할 수 없으며 |
unnest |
|
제외
결과 테이블에서 필드를 제외하지만 디코딩 또는 인코딩은 계속 진행합니다. 이 방법은 필드를 표로 전송할 필요는 없지만 트랜스코딩에 필요한 경우에 유용합니다. 예를 들어 null 표시기 또는 길이 필드는 표에서 생략될 수 있습니다.
트랜스코딩을 완전히 우회하려면 필러 수정자를 적용하세요.
| JSON 표현 |
|---|
{ "field": string |
| 필드 | |
|---|---|
field |
제외할 필드를 지정합니다. |
이동
레코드의 필드를 이동합니다.
| JSON 표현 |
|---|
{ "field": string, "offset": int |
| 필드 | |
|---|---|
field |
이동할 필드를 지정합니다. |
offset |
필드를 이동해야 하는 위치의 수를 앞 또는 뒤로 지정합니다. |
이름 바꾸기
정규 표현식 일치를 기반으로 하나 이상의 필드 이름을 바꿉니다.
예를 들어 모든 하이픈을 밑줄로 바꾸려면 다음 JSON 형식을 사용합니다.
{"find": "\\-", "replace":"_"}
| JSON 표현 |
|---|
{ "find": string, "replace": string |
| 필드 | |
|---|---|
find |
이름을 바꿀 필드를 식별하는 Java 정규 표현식 pattern을 지정합니다. 패턴은 전체 필드 이름과 일치합니다. 패턴이 필드 이름의 일부와 일치하면 필드가 일치하는 것으로 간주됩니다. 예:
|
replace |
일치하는 필드의 새 이름을 지정합니다.
예:
|
분할
| JSON 표현 |
|---|
{ "field": string, "foreign_key": string, "primary_key": string |
| 필드 | |
|---|---|
field |
분할할 필드를 지정합니다. |
foreign_key |
기본 키 값이 저장될 새 스키마에 추가할 필드의 이름을 지정합니다. 지정하지 않으면 기본 키 이름이 사용됩니다. |
primary_key |
기본 키로 사용할 필드 이름을 지정합니다. |
Unnest
필드를 중첩 해제합니다.
| JSON 표현 |
|---|
{ "field": string, "format": string |
| 필드 | |
|---|---|
field |
중첩 해제할 필드를 지정합니다. |
format |
새 필드 형식을 지정합니다.
중첩되지 않은 구조체의 경우 중첩되지 않은 배열과 목록의 경우 |
열거형
BinarySignedness
| 열거형 | |
|---|---|
SIGNED |
이진수에 부호가 있습니다. |
UNSIGNED |
이진수는 부호가 없습니다. |
UNSPECIFIED |
종료 체인에서 부호를 추론하려고 시도합니다. |
DecimalLogicalType
십진수 필드에 사용할 논리 유형입니다.
| 열거형 | |
|---|---|
AUTO |
규모와 정밀도에 따라 가장 최적의 유형을 사용합니다. |
BIG_DECIMAL |
값을 무한 십진수 값으로 저장합니다. 이 옵션은 가장 느리지만 모든 규모에서 모든 정밀도의 십진수를 지원합니다. |
BIG_INTEGER |
값을 무한 정수 값으로 저장합니다. 이 옵션은 가장 느리지만 모든 정밀도의 정수를 지원합니다. |
DECIMAL64 |
64비트를 사용하여 값을 저장합니다. 이 수정자는 정밀도가 18 이하인 숫자에만 적용됩니다. |
LONG |
64비트를 사용하여 값을 저장합니다. 이 수정자는 정밀도가 18 이하이고 스케일이 0인 숫자에만 작동합니다. |
PackedDecimalNegativeNibble
| 열거형 | |
|---|---|
NIBBLE_B |
기본값은 x'B'를 사용하는 것입니다. |
NIBBLE_D |
음수 부호 니블에는 x'D'를 사용합니다. |
SchemaValidationMode
카피북 컴파일 중에 사용할 스키마 검증 모드를 지정합니다. 이 모드는 특정 타겟 데이터 형식과의 호환성을 확인합니다.
| 열거형 | |
|---|---|
BIG_QUERY |
BigQuery 호환성을 위한 스키마 검증 모드입니다. 이 모드는 기본 유효성 검사를 확장하여 카피북의 스키마가 BigQuery의 데이터 유형과 호환되는지 확인합니다. |
DEFAULT |
기본 스키마 유효성 검사 모드입니다. 이 모드는 고유한 필드 이름이 카피북에 있는지 확인합니다. |
MYSQL |
MySQL 호환성의 스키마 유효성 검사 모드입니다. 이 모드는 기본 검증을 확장하여 카피북의 스키마가 MySQL 데이터 유형과 호환되는지 확인합니다. |
POSTGRES |
PostgreSQL 호환성을 위한 스키마 유효성 검사 모드입니다. 이 모드는 기본 검증을 확장하여 카피북의 스키마가 PostgreSQL 데이터 유형과 호환되는지 확인합니다. |
ZonedDecimalEncoding
존 십진수 필드를 디코딩하거나 인코딩할 때 사용할 인코딩을 지정합니다.
| 열거형 | |
|---|---|
ASCII |
ASCII 인코딩을 사용합니다. |
EBCDIC |
EBCDIC 인코딩을 사용합니다. |
UNSPECIFIED |
수정자 체인에 지정된 인코딩을 유지합니다.
수정자가 지정되지 않으면 EBCDIC가 사용됩니다. |