הגדרת ממיר הקידוד

אפשר להגדיר את רכיב ה-transcoder של Mainframe Connector על ידי הוספת ההגדרות הנדרשות בקובץ JSON. הקובץ הזה נקרא קובץ התצורה של הטרנסקודר. צריך להגדיר את ההגדרה כמו שמתואר בקטע הגדרה. הפקודות qsam encode ו-qsam decode משתמשות בקובץ ההגדרות של הטרנסקודר כדי לבצע טרנסקוד של נתונים.

בדף הזה מתוארות הדרכים השונות שבהן אפשר להגדיר את רכיב הטרנסקודר של Mainframe Connector.

הגדרות אישיות

האובייקט Configuration הוא הבסיס של הגדרת המרת הקידוד. הוא מכיל את כל אפשרויות ההגדרה של הטרנסקודר.

ייצוג JSON
{
    "defaults": object (DefaultsSection),
    "field_overrides": object (FieldOverride),
    "field_suffixes": object (FieldSuffix),
    "header_records_to_skip": long,
    "record_filter_condition": string,
    "schema_validation_mode": enum (SchemaValidationMode),
    "transformations": object (Transformation)
}
שדות
defaults

object (DefaultsSection)

מציינים משנים של שדות ברירת מחדל לאבות-טיפוס של Cobol.

field_overrides

object (FieldOverride)

מציינים שינויים בשדות.

field_suffixes

object (FieldSuffix)

מציינים סיומות לשדות.

header_records_to_skip

long

מציינים את מספר הרשומות הראשונות שרוצים לדלג עליהן.

record_filter_condition

string

מציינים תנאי סינון לרשומות.

המסנן מבוסס על קבוצת משנה של Common Expression Language ‏ (CEL) ותומך באפשרויות הבאות:

  • גישה לשדות: אפשר להפנות לשדות לפי שם. בשדות מקוננים, משתמשים בסימון נקודות (למשל, PARENT.CHILD).
  • אופרטורים להשוואה: `==`, `!=`, `<`, `<=`, `>`, `>=`.
  • אופרטורים לוגיים: `&&` (AND), `||` (OR), `!` (NOT).
  • הכללה ברשימה: `in` (בודקת אם ערך מסוים קיים ברשימה).
  • אופרטורים חשבוניים: `+`, `-`, `*`, `/`, `%`.
  • פונקציות של מחרוזות ורשימות:
    • size(): מחזירה את האורך של מחרוזת או רשימה.
    • contains(substring): בדיקה אם מחרוזת מכילה מחרוזת משנה שצוינה.
    • startsWith(prefix): בדיקה אם מחרוזת מתחילה בקידומת שצוינה.
    • endsWith(suffix): בדיקה אם מחרוזת מסתיימת בסיומת שצוינה.
  • קבועים של תאריך וחותמת זמן:
    • date(string): מנתח תאריך בפורמט ISO ‏ (YYYY-MM-DD). למשל, date('2025-01-12').
    • date(string, format): מנתחת תאריך באמצעות פורמט מותאם אישית. למשל, date('12/01/2025', 'dd/MM/yyyy').
    • timestamp(string): מנתח חותמת זמן בפורמט ISO. למשל, timestamp('1999-05-03T02:34:00Z').
השוואות ופעולות חייבות להתבצע בין משתנים או קבועים מאותו סוג נתונים או מסוגי נתונים תואמים (למשל, השוואה בין מספרים עם נקודה צפה (floating-point) או שימוש בקבועים של תאריך/חותמת זמן בשדות של תאריך/חותמת זמן).

דוגמה:

"record_filter_condition": "(ACCOUNT-GRP.DATE > date('2025-01-12') ) && ((SCORE_A + SCORE_B) > 134) && FLD-STR.startsWith('HE')"

schema_validation_mode

enum (SchemaValidationMode)

מציינים את מצב אימות הסכימה.

transformations

object (Transformation)

מציינים את הטרנספורמציות של השדות.

DefaultsSection

אפשר להשתמש באובייקט DefaultsSection כדי לציין שינויים שמוגדרים כברירת מחדל לפי סוגי cobol. השינויים האלה מתבצעים לפני שינויים של סיומות או שינויים שנעשים באופן ידני.

ייצוג JSON
{
    "alpha_numeric_display": object (FieldModifier),
    "binary": object (FieldModifier),
    "dbcs": object (FieldModifier),
    "hexadecimal_floating_point": object (FieldModifier),
    "national": object (FieldModifier),
    "numeric_display": object (FieldModifier),
    "packed_decimal": object (FieldModifier),
    "utf8": object (FieldModifier)
}
שדות
alpha_numeric_display

object (FieldModifier)

מציינים ערכי ברירת מחדל לשדות אלפאנומריים (PIC X).

binary

object (FieldModifier)

מציינים ערכי ברירת מחדל לשדות של מספרים בינאריים (COMP).

dbcs

object (FieldModifier)

ברירת המחדל לשדות dbcs ‏ (DISPLAY-1).

hexadecimal_floating_point

object (FieldModifier)

ברירת המחדל לשדות של נקודה צפה הקסדצימלית (COMP-1, ‏ COMP-2).

national

object (FieldModifier)

מציינים ערכי ברירת מחדל לשדות לאומיים (PIC N).

numeric_display

object (FieldModifier)

מציינים ערכי ברירת מחדל לשדות של תצוגה מספרית (עשרוני אזורי).

packed_decimal

object (FieldModifier)

מציינים ערכי ברירת מחדל לשדות של מספרים עשרוניים ארוזים (COMP-3).

utf8

object (FieldModifier)

מציינים את ברירות המחדל לשדות UTF-8 (PIC U).

FieldModifier

משנה שדה מאפשר לשנות את הקידוד או הפענוח של שדה ספציפי. חשוב לזכור שלא כל שינויי ההגדרות ניתנים להחלה על כל השדות. מידע נוסף מופיע במסמכי התיעוד של שינויי ההרשאות הספציפיים.

ייצוג JSON
{
    "binary": object (Binary),
    "bytes": object (Bytes),
    "chain": object (ModifierChain),
    "decode_as_null": object (DecodeAsNull),
    "encode_null_as": object (EncodeNullAs),
    "filler": object (Filler),
    "format_date": object (FormatDate),
    "format_timestamp": object (FormatTimestamp),
    "hfp": object (HFP),
    "null_if": object (NullIf),
    "null_if_empty": object (NullIfEmpty),
    "null_if_invalid": object (NullIfInvalid),
    "packed_decimal": object (PackedDecimal),
    "string": object (String),
    "varlen": object (VarLen),
    "zoned_decimal": object (ZonedDecimal)
}
שדות
binary

object (Binary)

ההגדרה הזו מחליפה את הגדרת ברירת המחדל בשדות מספריים בינאריים.

bytes

object (Bytes)

השדה מטופל כרצף גולמי של בייטים, בלי להתייחס למידע קודם על הסוג.

chain

object (ModifierChain)

שרשור של כמה משנים להחלה ברצף.

decode_as_null

object (DecodeAsNull)

הגדרה של אופן הפענוח של ערכי null.

encode_null_as

object (EncodeNullAs)

הגדרה של אופן הקידוד של ערכי null.

filler

object (Filler)

השדה לא יעבור עיבוד ולא ייכלל בפלט.

format_date

object (FormatDate)

עיצוב שדה מחרוזת כתאריך.

format_timestamp

object (FormatTimestamp)

הפונקציה מעצבת שדה מחרוזת כחותמת זמן.

hfp

object (HFP)

מפרשת את השדה כמספר הקסדצימלי בשיטת נקודה צפה (HFP).

null_if

object (NullIf)

הגדרת השדה כ-null באופן מותנה על סמך הערך של שדה אחר.

null_if_empty

object (NullIfEmpty)

אם התוכן של השדה נחשב ריק, הפונקציה מגדירה את השדה כ-null.

null_if_invalid

object (NullIfInvalid)

השדה מוגדר כ-null אם מתרחשת שגיאת המרה, כדי למנוע חריגה של רשומה.

packed_decimal

object (PackedDecimal)

המדיניות הזו עוקפת את הגדרת ברירת המחדל של שדות עשרוניים ארוזים.

string

object (String)

ביטול הגדרת ברירת המחדל של שדות מחרוזת.

varlen

object (VarLen)

מגדירים את הרשומה כשדה באורך משתנה.

zoned_decimal

object (ZonedDecimal)

ההגדרה הזו מבטלת את הגדרת ברירת המחדל של שדות עשרוניים מחולקים לאזורים.

בינארי

התעלמות מכל רכיבי השינוי הקודמים והתייחסות לשדה הזה כמספר בינארי.

ייצוג JSON
{
    "signedness": enum (BinarySignedness)
}
שדות
signedness

enum (BinarySignedness)

הסימן של המספר.

בייטים

השדה מטופל כרצף גולמי של בייטים. המשנה הזה מבטל כל מידע קודם על סוג, וגורם לנתוני הבייטים הגולמיים של השדה להישמר כמו שהם, ללא קידוד תווים ספציפי או פרשנות מספרית. אפשר להחיל את שינוי המאפיין הזה על כל שדה, בלי קשר לסוג או לגודל המקוריים שלו.

מזינים אובייקט JSON ריק באופן הבא:

ייצוג JSON
{
}

DecodeAsNull

הגדרה של האופן שבו ערכי null מתפרשים במהלך תהליך הפענוח. מכיוון ש-COBOL לא תומכת באופן מובנה בערכי null, הפרמטר הזה מציין אילו ערכים צריך להתייחס אליהם כאל ערכי null.

ייצוג JSON
{
    "hex_bytes": string,
    "values": string
}
שדות
hex_bytes

string

רשימה של ייצוגים הקסדצימליים של בייט יחיד. אם שדה מכיל חזרות של אחד מהבייטים האלה, הוא נחשב כ-null. לדוגמה, שימוש ב-FF לכל הערכים הגבוהים וב-00 לכל הערכים הנמוכים (ריק).

values

string

רשימה של ייצוגי מחרוזות. אחרי הפענוח הראשוני של השדה לפורמט מחרוזת, אם התוכן של השדה תואם לאחד מהערכים האלה, הוא יטופל כערך null.

EncodeNullAs

הגדרה של האופן שבו ערכי null מיוצגים במהלך תהליך הקידוד.

ייצוג JSON
{
    "hex_byte": string,
    "value": string
}
שדות
hex_byte

string

קידוד רצף הבייטים הספציפי הזה (שמיוצג כמחרוזת הקסדצימלית) כשהערך של מקור הוא null. לדוגמה, FF לשדה של שני בייטים לערכים גבוהים. אפשר להחיל את זה על כל שדה בגודל ידוע. הבייטים חוזרים על עצמם כדי להתאים לגודל השדה הבסיסי.

value

string

קידוד הערך הספציפי הזה כשערך המקור הוא null. מוודאים שהמחרוזת תקינה לסוג השדה.

Filler

מציין שהמערכת תתעלם משדה במהלך העיבוד. השדה לא יפוענח מהקלט או יקודד לפלט, והוא לא ייכלל בסכימה ובטבלת הנתונים שיתקבלו במהלך הפענוח. אפשר להחיל את משנה ה-modifier הזה על כל שדה עם גודל סטטי ידוע.

מזינים אובייקט JSON ריק באופן הבא:

ייצוג JSON
{
}

FormatDate

מעצבים שדה מחרוזת או שדה מספרי כתאריך באמצעות אחד מהפורמטים הנתמכים. אפשר להחיל את שינוי הגודל הזה רק על שדות בגודל מסוים. בשדות מספריים, הם מומרים באופן דינמי לייצוג המחרוזת שלהם (לא כולל סמני סימן) לפני העיצוב. ההנחה היא שערכי התאריכים הם חיוביים. המערכת לא תומכת בתאריכים מספריים שליליים, והניתוח שלהם ייכשל. במהלך תהליך הפענוח, הפורמטים נבדקים לפי הסדר עד שאחד מהם תואם למחרוזת. במהלך תהליך הקידוד, המערכת משתמשת בפורמט הראשון ומתעלמת מכל השאר.

ייצוג JSON
{
    "formats": object (DateTimeFormat)
}
שדות
formats

object (DateTimeFormat)

רשימה של פורמטים של תאריך.

DateTimeFormat

הגודל והתבנית שבהם ייעשה שימוש בהמרת השדה לתאריך.

ייצוג JSON
{
    "pattern": string,
    "size": int
}
שדות
pattern

string

מציינים את התבנית של מעצב התאריכים. מידע נוסף על תבניות מעצב תקינות זמין במאמר בנושא Class DateTimeFormatter.

size

int

מציינים את הגודל של השדה שהתבנית הזו חלה עליו.

FormatTimestamp

מפרמטים מחרוזת לחותמת זמן באמצעות אחד מהפורמטים שצוינו. אפשר להחיל את ההגדרה הזו רק על שדות בגודל מסוים. במהלך הפענוח, הפורמטים נבדקים לפי הסדר עד שאחד מהם תואם למחרוזת. במהלך הקידוד, המערכת תשתמש בפורמט הראשון ותתעלם מכל השאר.

ייצוג JSON
{
    "formats": object (DateTimeFormat)
}
שדות
formats

object (DateTimeFormat)

רשימה של פורמטים של חותמות זמן.

HFP

מגדירים את השדה הזה כ-Hexadecimal Floating-Point.

מזינים אובייקט JSON ריק באופן הבא:

ייצוג JSON
{
}

ModifierChain

מציינים שרשרת של משנים כדי להחיל כמה משנים ברצף. השינויים מוחלים לפי הסדר שבו הם צוינו.

ייצוג JSON
{
    "modifiers": object (FieldModifier)
}
שדות
modifiers

object (FieldModifier)

מציינים את רשימת מאפייני השינוי שרוצים להחיל.

NullIf

הגדרת שדה כ-null אם תנאי מסוים מתקיים. חובה לציין את null_value או את non_null_value או את שניהם.

כדי ליצור שדה של מציין ערך null, אפשר להשתמש ב-FieldSuffix עם משנה שדה null_if ולהגדיר את 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-indicator, אפשר להשתמש במגדירי השדות 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.

דוגמה: Bytes null-indicator

כדי ליצור שדה של מציין ערך bytes null, אפשר להשתמש במגדירי השדות bytes ו-null_if באופן הבא. הערכים של null ו-not-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

string

אם מציינים ערך, והערך target_field לא שווה לו, השדה לא מפוענח או מוצפן, והערך מוגדר כ-null.

non_null_values

string

אם מציינים את הערך הזה, והערך target_field לא שווה לאף אחד מהערכים האלה, השדה לא מפוענח או מוצפן והערך שלו מוגדר כ-null.

null_value

string

אם מציינים ערך, אם target_field שווה לערך הזה, השדה לא מפוענח או מוצפן, והערך מוגדר כ-null.

null_values

string

אם מציינים ערך, אם target_field שווה לאחד מהערכים האלה, השדה לא מפוענח או מוצפן והערך מוגדר כ-null.

target_field

string

מציינים את השדה שרוצים לבדוק את הערך שלו. השדה חייב להיות בהיקף. כדי לגשת לשדות מוטמעים, אפשר להשתמש בסימון הנקודות (למשל, 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 (DecimalLogicalType),
    "negative_sign_nibble": enum (PackedDecimalNegativeNibble)
}
שדות
logical_type

enum (DecimalLogicalType)

ביטול הסוג הלוגי. כברירת מחדל, Mainframe Connector משתמש בסוג הלוגי האופטימלי על סמך הדיוק והקנה מידה.

negative_sign_nibble

enum (PackedDecimalNegativeNibble)

מציין את הניבל שמשמש לסימנים שליליים. גם x'B' וגם x'D' הם סימני מינוס תקינים, אבל יכול להיות שבמערכות או באפליקציות מסוימות של מחשבי מיינפריים יש מוסכמה שדורשת שימוש באחד מהם ולא בשני.

String

הגדרת האפשרויות השונות שקשורות לפענוח ולקידוד של מחרוזות. אפשר להחיל את הפונקציה רק על שדה מחרוזת.

ייצוג JSON
{
    "encoding": string,
    "pad_char": string,
    "trim_suffix": boolean
}
שדות
encoding

string

הקידוד שבו השדה מקודד.

pad_char

string

כשמגדירים ייצוא של מחרוזות ריפוד עם pad_char. אם הוא מוגדר, האורך של pad_char חייב להיות 1. הפרמטר pad_char משפיע רק על הקידוד, הפענוח מתעלם ממנו.

trim_suffix

boolean

אם הערך הוא true, רווחים לבנים בסוף המחרוזת יימחקו. הפונקציה trim_suffix משפיעה רק על פענוח, והקידוד מתעלם ממנה. שימו לב: מחרוזות שמורכבות רק מרווחים יהפכו למחרוזות ריקות.

VarLen

מייצג שדה באורך משתנה.

שדה באורך משתנה מכיל שלושה חלקים:

  1. פריט קבוצתי שמכיל שני שדות משנה.
  2. שדה בתוך פריט הקבוצה שמכיל את אורך נתוני העסקה.
  3. שדה בתוך פריט הקבוצה שמכיל את הנתונים.

השם של השדה באורך משתנה יהיה שם הקבוצה.

מזינים אובייקט JSON ריק באופן הבא:

ייצוג JSON
{
}

ZonedDecimal

הגדרת אפשרויות שונות שקשורות לקידוד ולפענוח של מספרים עשרוניים עם אזור. אפשר להחיל את שינוי הערך הזה רק על שדה עשרוני.

ייצוג JSON
{
    "encoding": enum (ZonedDecimalEncoding),
    "logical_type": enum (DecimalLogicalType)
}
שדות
encoding

enum (ZonedDecimalEncoding)

הקידוד שבו השדה מקודד.

logical_type

enum (DecimalLogicalType)

מציינים את הסוג הלוגי שבו יש להשתמש כשמפענחים או מקודדים את השדה.

FieldOverride

עקיפה או שינוי של שרשרת הפענוח והקידוד בשדה שצוין.

ייצוג JSON
{
    "field": string,
    "modifier": object (FieldModifier)
}
שדות
field

string

מציינים את שם השדה שרוצים להחיל עליו את המשנה.

modifier

object (FieldModifier)

מציינים את המגביל שרוצים להחיל על שדה ההתאמה.

FieldSuffix

סיומות השדות חלות על כל השדות שיש להם סיומת.

השדות תואמים אם הם מסתיימים במקף (-) או בקו תחתון (_) ואחריהם הסיומת.

הסיומות הן לא תלויות-רישיות.

המשנה FieldSuffix מוחל אחרי המשנה FieldOverride.

לדוגמה, השינוי שהוגדר לסיומת NID יחול על השדה שנקרא FLD-NID, אבל לא על השדה FUNID.

ייצוג JSON
{
    "is_inverse": boolean,
    "modifier": object (FieldModifier),
    "suffix": string
}
שדות
is_inverse

boolean

מציינים אם התוסף הוא תוסף שדה הפוך או לא. משנה שדה הפוך מחיל את המשנה על שדה אחר עם אותו שם כמו השדה עם המשנה בלי המשנה. לדוגמה, אם השדות FLD-NID ו-FLD קיימים באותה רשומה, השינוי יחול על FLD.

כשמשתמשים במגדיר שדה הפוך, אפשר להשתמש במזהה המיוחד $self בכל מקום שבו אפשר להשתמש בשם שדה באופן מסורתי כדי להתייחס לשדה עם הסיומת.

לדוגמה, כדי ליצור שדה של מציין ערך null, אפשר להשתמש במגדיר השדה null_if עם הערך is_inverse שמוגדר ל-true. מידע נוסף זמין בכתובת NullIf.

modifier

object (FieldModifier)

מציינים את שינוי המאפיין שרוצים להחיל על שדות תואמים.

suffix

string

המגביל יחול על השדה עם הסיומת הזו.

שינוי

הטרנספורמציות של התצוגה משמשות לשינוי הקשר בין הטבלה לבין קובץ ה-QSAM. ההמרות תמיד מנוסחות מנקודת המבט של הנתונים. הקונספט דומה לטבלאות של תצוגות מפורטות ב-BigQuery.

ייצוג JSON
{
    "exclude": object (Exclude),
    "move": object (Move),
    "rename": object (Rename),
    "split": object (Split),
    "target_table": string,
    "unnest": object (Unnest)
}
שדות
exclude

object (Exclude)

move

object (Move)

rename

object (Rename)

split

object (Split)

target_table

string

זה שינוי אופציונלי. מציינים את שם טבלת היעד (התצוגה) שרוצים להחיל עליה את הטרנספורמציה.

כברירת מחדל, טרנספורמציות חלות על הטבלה הראשית (_main) או באופן גלובלי, אם רלוונטי. אם יש לכם תצוגות מפוצלות (שנוצרו על ידי split טרנספורמציה), אתם יכולים לטרגט טבלה מפוצלת ספציפית לפי שם.

הערה: אי אפשר לטרגט טרנספורמציות של פיצול, ואם ההגדרה target_table מוגדרת, תופיע שגיאה.

unnest

object (Unnest)

אל תכלול

להחריג שדה מהטבלה שמתקבלת, אבל עדיין לבצע פענוח או קידוד. האפשרות הזו שימושית כשלא צריך להעביר את השדה לטבלה, אבל הוא נדרש להמרת קידוד. לדוגמה, אפשר להשמיט מהטבלה שדות של אינדיקטורים של ערכי null או של אורך.

כדי לדלג על הטרנסקוד לחלוטין, צריך להחיל את משנה המילוי.

ייצוג JSON
{
    "field": string
}
שדות
field

string

מציינים את השדה שרוצים להחריג.

העברה

להעביר שדה ברשומה.

ייצוג JSON
{
    "field": string,
    "offset": int
}
שדות
field

string

מציינים את השדה שרוצים להעביר.

offset

int

מציינים את מספר המקומות שהשדה צריך לעבור קדימה או אחורה.

שנה שם

משנים את השם של שדה אחד או יותר על סמך התאמה של ביטוי רגולרי.

לדוגמה, כדי להחליף את כל המקפים בקו תחתון, משתמשים בפורמט JSON הבא: {"find": "\\-", "replace":"_"}.

ייצוג JSON
{
    "find": string,
    "replace": string
}
שדות
find

string

מציינים תבנית של ביטוי רגולרי ב-Java כדי לזהות את השדות שרוצים לשנות את השם שלהם.

ההתאמה של התבנית מתבצעת מול השם המלא של השדה. אם התבנית תואמת לחלק כלשהו של שם השדה, השדה ייחשב כהתאמה.

דוגמאות:

  • "\\-" (תואם לכל שדה שמכיל מקף)
  • "^field_name$" (התאמה לשדות עם השם המדויק field_name)
  • "^field_(.*)$" (מתאים לכל השדות שמתחילים ב-field_ ומזהה את שאר השדה)
  • "part_of_name" (תואם לכל שדה שמכיל part_of_name)

replace

string

מציין את השם החדש של השדות התואמים.

אפשר להשתמש בקבוצות לכידה מהביטוי הרגולרי find במחרוזת replace באמצעות הפניות חוזרות כמו $1, $2. כך אפשר לבצע טרנספורמציות מורכבות יותר על סמך חלקים משם השדה המקורי.

דוגמאות:

  • "new_field_name" (מחליף את השדה בשם קבוע)
  • "new_$1" (משתמש בקבוצת הלכידה הראשונה מ-find)
  • "${1}_new" (תחביר חלופי לקבוצות לחילוץ)
  • "prefix_$1_suffix" (שימוש בקבוצה לחילוץ והוספה של תחיליות או סיומות)

פיצול

ייצוג JSON
{
    "field": string,
    "foreign_key": string,
    "primary_key": string
}
שדות
field

string

מציינים את השדה שרוצים לפצל.

foreign_key

string

מציינים את השם של השדה שיוסף לסכימה החדשה, שבה יאוחסן ערך המפתח הראשי. אם לא מציינים שם, המערכת משתמשת בשם של המפתח הראשי.

primary_key

string

מציינים את שם השדה שישמש כמפתח ראשי.

Unnest

חילוץ השדה מהפריט שבתוכו הוצב.

ייצוג JSON
{
    "field": string,
    "format": string
}
שדות
field

string

מציינים את השדה שרוצים לבטל את הקינון שלו

format

string

מציינים את הפורמט החדש של השדה.

השדה ${parent} ישוחרר בלי הקינון.

במבני struct לא מקוננים, ${field} מוחלף בשם השדה של מבני ה-struct.

במערכים וברשימות לא מקוננים, ${index} מוחלף באינדקסים של המערך.

טיפוסים בני מנייה (enum)

BinarySignedness

טיפוסים בני מנייה (enum)
SIGNED המספר הבינארי הוא מספר עם סימן.
UNSIGNED המספר הבינארי לא חתום.
UNSPECIFIED כדאי לנסות להסיק את סוג החתימה מהשרשרת הקיימת.

DecimalLogicalType

הסוג הלוגי שבו ייעשה שימוש בשדה עשרוני.

טיפוסים בני מנייה (enum)
AUTO משתמשים בסוג האופטימלי ביותר בהתאם לסולם ולדיוק.
BIG_DECIMAL אחסון הערך כמספר עשרוני ללא גבול. זו האפשרות הכי איטית, אבל היא תומכת בכל מספר עשרוני בכל רמת דיוק ובכל קנה מידה.
BIG_INTEGER אחסון הערך כמספר שלם ללא גבולות. זו האפשרות הכי איטית, אבל היא תומכת בכל מספר שלם בכל רמת דיוק.
DECIMAL64 משתמשים ב-64 ביט כדי לאחסן את הערך. המשנה הזה פועל רק על מספרים שרמת הדיוק שלהם היא 18 או פחות.
LONG משתמשים ב-64 ביט כדי לאחסן את הערך. המשנה הזה פועל רק על מספרים שרמת הדיוק שלהם קטנה מ-18 או שווה לה, והקנה מידה הוא 0.

PackedDecimalNegativeNibble

טיפוסים בני מנייה (enum)
NIBBLE_B ברירת המחדל היא שימוש ב-x'B'.
NIBBLE_D משתמשים ב-x'D' עבור הניבל של סימן המינוס.

SchemaValidationMode

מציינים את מצב אימות הסכימה שבו רוצים להשתמש במהלך קומפילציית ה-copybook. במצב הזה המערכת בודקת את התאימות לפורמט נתונים ספציפי של יעד.

טיפוסים בני מנייה (enum)
BIG_QUERY מצב אימות סכימה לתאימות ל-BigQuery. במצב הזה, האימות שמוגדר כברירת מחדל מורחב כדי לוודא שהסכימה של קובץ ה-copybook תואמת לסוגי הנתונים של BigQuery.
DEFAULT מצב ברירת המחדל של אימות הסכימה. במצב הזה, המערכת מוודאת ששמות השדות הייחודיים נמצאים בקובץ ה-copybook.
MYSQL מצב אימות סכימה לתאימות ל-MySQL. במצב הזה, האימות שמוגדר כברירת מחדל מורחב כדי לוודא שהסכימה של קובץ ה-copybook תואמת לסוגי הנתונים של MySQL.
POSTGRES מצב אימות סכימה לתאימות ל-PostgreSQL. במצב הזה, האימות שמוגדר כברירת מחדל מורחב כדי לוודא שהסכימה של קובץ ה-copybook תואמת לסוגי הנתונים של PostgreSQL.

ZonedDecimalEncoding

מציינים את הקידוד שבו רוצים להשתמש כשמפענחים או מקודדים שדה עשרוני עם אזורים.

טיפוסים בני מנייה (enum)
ASCII משתמשים בקידוד ASCII.
EBCDIC משתמשים בקידוד EBCDIC.
UNSPECIFIED שומרים על הקידוד שצוין בשרשרת המשנים. אם לא מציינים משנה, המערכת משתמשת בערך EBCDIC.