Transcoder-Konfiguration

Sie können den Transcoder des Mainframe Connectors konfigurieren, indem Sie die erforderliche Konfiguration in einer JSON-Datei hinzufügen. Diese Datei wird als Transcoder-Konfigurationsdatei bezeichnet. Sie müssen die Konfiguration wie im Abschnitt Konfiguration beschrieben definieren. Die Befehle qsam encode und qsam decode verwenden die Transcoder-Konfigurationsdatei, um die Datentranscodierung durchzuführen.

Auf dieser Seite werden die verschiedenen Möglichkeiten zur Konfiguration des Mainframe Connector-Transcoders beschrieben.

Konfiguration

Das Objekt Configuration ist die Wurzel der Transcoder-Konfiguration. Sie enthält alle Konfigurationsoptionen für den Transcoder.

JSON-Darstellung
{
    "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)
}
Felder
defaults

object (DefaultsSection)

Geben Sie Standardfeldmodifikatoren für Cobol-Archetypen an.

field_overrides

object (FieldOverride)

Geben Sie Feldüberschreibungen an.

field_suffixes

object (FieldSuffix)

Geben Sie Feldsuffixe an.

header_records_to_skip

long

Geben Sie die Anzahl der ersten Datensätze an, die übersprungen werden sollen.

record_filter_condition

string

Geben Sie eine Filterbedingung für Datensätze an.

Der Filter basiert auf einer Teilmenge der Common Expression Language (CEL) und unterstützt Folgendes:

  • Feldzugriff: Auf Felder kann über ihren Namen verwiesen werden. Verwenden Sie für verschachtelte Felder die Punktnotation (z.B. PARENT.CHILD).
  • Vergleichsoperatoren: `==`, `!=`, `<`, `<=`, `>`, `>=`.
  • Logische Operatoren: `&&` (AND), `||` (OR), `!` (NOT).
  • In Liste enthalten: `in` (prüft, ob ein Wert in einer Liste vorhanden ist).
  • Arithmetische Operatoren: `+`, `-`, `*`, `/`, `%`.
  • String- und Listenfunktionen:
    • size(): Gibt die Länge eines Strings oder einer Liste zurück.
    • contains(substring): Prüft, ob ein String einen bestimmten Substring enthält.
    • startsWith(prefix): Prüft, ob ein String mit einem bestimmten Präfix beginnt.
    • endsWith(suffix): Prüft, ob ein String mit einem bestimmten Suffix endet.
  • Datums- und Zeitstempelkonstanten:
    • date(string): Parst ein Datum im ISO-Format (JJJJ-MM-TT). Beispiel: date('2025-01-12').
    • date(string, format): Parst ein Datum mit einem benutzerdefinierten Format. Beispiel: date('12/01/2025', 'dd/MM/yyyy').
    • timestamp(string): Parst einen Zeitstempel im ISO-Format. Beispiel: timestamp('1999-05-03T02:34:00Z').
Vergleiche und Vorgänge müssen zwischen Variablen oder Konstanten desselben oder kompatibler Datentypen durchgeführt werden (z.B. Vergleichen von Gleitkommazahlen oder Verwenden von Datums-/Zeitstempelkonstanten für Datums-/Zeitstempelfelder).

Beispiel:

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

schema_validation_mode

enum (SchemaValidationMode)

Geben Sie den Schemavalidierungsmodus an.

transformations

object (Transformation)

Geben Sie Feldtransformationen an.

DefaultsSection

Mit dem Objekt DefaultsSection können Sie Standardänderungen nach COBOL-Typen angeben. Diese werden vor allen Suffix- oder Überschreibungsänderungen angewendet.

JSON-Darstellung
{
    "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)
}
Felder
alpha_numeric_display

object (FieldModifier)

Geben Sie Standardwerte für alphanumerische Felder (PIC X) an.

binary

object (FieldModifier)

Geben Sie Standardwerte für Felder mit Binärzahlen (COMP) an.

dbcs

object (FieldModifier)

Standard für dbcs-Felder (DISPLAY-1).

hexadecimal_floating_point

object (FieldModifier)

Standard für hexadezimale Gleitkommafelder (COMP-1, COMP-2).

national

object (FieldModifier)

Geben Sie Standardwerte für nationale Felder (PIC N) an.

numeric_display

object (FieldModifier)

Geben Sie Standardwerte für numerische Anzeigefelder (Zonendezimalfelder) an.

packed_decimal

object (FieldModifier)

Geben Sie Standardwerte für gepackte Dezimalfelder (COMP-3) an.

utf8

object (FieldModifier)

Geben Sie Standardwerte für UTF-8-Felder (PIC U) an.

FieldModifier

Mit einem Feldmodifikator können Sie die Codierung oder Decodierung eines bestimmten Felds ändern. Nicht alle Modifikatoren können auf alle Felder angewendet werden. Weitere Informationen finden Sie in der Dokumentation zu den jeweiligen Modifikatoren.

JSON-Darstellung
{
    "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)
}
Felder
binary

object (Binary)

Überschreibt die Standardkonfiguration für binäre numerische Felder.

bytes

object (Bytes)

Behandelt das Feld als Rohbytesequenz und ignoriert vorherige Typinformationen.

chain

object (ModifierChain)

Verkettet mehrere Modifikatoren, die nacheinander angewendet werden sollen.

decode_as_null

object (DecodeAsNull)

Definiert, wie Nullwerte decodiert werden müssen.

encode_null_as

object (EncodeNullAs)

Definiert, wie Nullwerte codiert werden müssen.

filler

object (Filler)

Schließt das Feld von der Verarbeitung und Ausgabe aus.

format_date

object (FormatDate)

Formatiert ein Stringfeld als Datum.

format_timestamp

object (FormatTimestamp)

Formatiert ein Stringfeld als Zeitstempel.

hfp

object (HFP)

Interpretiert das Feld als hexadezimale Gleitkommazahl (HFP).

null_if

object (NullIf)

Legt das Feld basierend auf dem Wert eines anderen Felds bedingt auf „null“ fest.

null_if_empty

object (NullIfEmpty)

Setzt das Feld auf „null“, wenn der Inhalt als leer gilt.

null_if_invalid

object (NullIfInvalid)

Setzt das Feld auf „null“, wenn ein Transcodierungsfehler auftritt, um einen Überlauf von Datensätzen zu verhindern.

packed_decimal

object (PackedDecimal)

Überschreibt die Standardkonfiguration für gepackte Dezimalfelder.

string

object (String)

Überschreibt die Standardkonfiguration für Stringfelder.

varlen

object (VarLen)

Legen Sie den Datensatz als Feld mit variabler Länge fest.

zoned_decimal

object (ZonedDecimal)

Überschreibt die Standardkonfiguration für gezonte Dezimalfelder.

Binär

Ignorieren Sie alle vorherigen Modifikatoren und behandeln Sie dieses Feld als Binärzahl.

JSON-Darstellung
{
    "signedness": enum (BinarySignedness)
}
Felder
signedness

enum (BinarySignedness)

Das Vorzeichen der Zahl.

Byte

Behandelt das Feld als Rohbytesequenz. Dieser Modifikator überschreibt alle vorherigen Typinformationen, sodass die Rohbytedaten des Felds unverändert beibehalten werden, ohne dass eine bestimmte Zeichencodierung oder numerische Interpretation erfolgt. Sie können diesen Modifikator auf jedes Feld anwenden, unabhängig von seinem ursprünglichen Typ oder seiner ursprünglichen Größe.

Geben Sie ein leeres JSON-Objekt so an:

JSON-Darstellung
{
}

DecodeAsNull

Definiert, wie Nullwerte während des Decodierungsprozesses interpretiert werden. Da COBOL Nullwerte nicht nativ unterstützt, gibt dieser Parameter an, welche Werte als Nullwerte behandelt werden müssen.

JSON-Darstellung
{
    "hex_bytes": string,
    "values": string
}
Felder
hex_bytes

string

Eine Liste von Hexadezimaldarstellungen eines einzelnen Byte. Wenn ein Feld Wiederholungen eines dieser Bytes enthält, wird es als Nullwert behandelt. Beispiel: FF für alle Höchstwerte und 00 für alle Tiefstwerte (leer).

values

string

Eine Liste von Stringdarstellungen. Wenn der Inhalt des Felds nach der ersten Decodierung des Felds in seine Stringform mit einem dieser Werte übereinstimmt, wird er als null behandelt.

EncodeNullAs

Definiert, wie Nullwerte während des Codierungsprozesses dargestellt werden.

JSON-Darstellung
{
    "hex_byte": string,
    "value": string
}
Felder
hex_byte

string

Codieren Sie diese spezifische Bytesequenz (als Hexadezimalstring dargestellt), wenn der Quellwert null ist. Beispiel: FF für ein 2-Byte-Feld mit hohen Werten. Sie können dies auf jedes Feld mit einer bekannten Größe anwenden. Die Byte werden wiederholt, um der Größe des zugrunde liegenden Felds zu entsprechen.

value

string

Codieren Sie diesen spezifischen Wert, wenn der Quellwert null ist. Prüfen Sie, ob der String für den Feldtyp gültig ist.

Füllstoff

Gibt an, dass ein Feld während der Verarbeitung ignoriert wird. Das Feld wird nicht aus der Eingabe decodiert oder in die Ausgabe codiert und wird beim Decodieren aus dem resultierenden Schema und der Datentabelle ausgeschlossen. Sie können diesen Modifikator auf jedes Feld mit einer statischen bekannten Größe anwenden.

Geben Sie ein leeres JSON-Objekt so an:

JSON-Darstellung
{
}

FormatDate

Formatiert ein String- oder numerisches Feld mit einem der unterstützten Formate in ein Datum. Sie können diesen Modifikator nur auf Felder mit Größenangabe anwenden. Numerische Felder werden vor der Formatierung dynamisch in ihre Stringdarstellung umgewandelt (ohne Vorzeichen). Es wird davon ausgegangen, dass Datumswerte positiv sind. Negative numerische Datumsangaben werden nicht unterstützt und können nicht geparst werden. Während des Decodierungsprozesses werden die Formate nacheinander getestet, bis eines der Formate mit dem String übereinstimmt. Während des Codierungsprozesses wird das erste Format verwendet und die restlichen werden ignoriert.

JSON-Darstellung
{
    "formats": object (DateTimeFormat)
}
Felder
formats

object (DateTimeFormat)

Liste der Datumsformate.

DateTimeFormat

Größe und Muster, die beim Konvertieren des Felds in ein Datum verwendet werden sollen.

JSON-Darstellung
{
    "pattern": string,
    "size": int
}
Felder
pattern

string

Geben Sie das Muster für die Datumsformatierung an. Weitere Informationen zu gültigen Formatierungsmustern finden Sie unter Klasse DateTimeFormatter.

Hinweis: Zweistellige Jahreszahlen (yy) werden dem Bereich 2000–2099 zugeordnet. Beispiel: Mit dem Muster MM/dd/yy wird der Wert 05/03/99 als 2099-05-03 decodiert.

size

int

Geben Sie die Größe des Felds an, auf das dieses Muster angewendet wird.

FormatTimestamp

Formatiert einen String mit einem der bereitgestellten Formate in einen Zeitstempel. Dies kann nur auf Felder mit Größenangabe angewendet werden. Beim Decodieren werden die Formate nacheinander getestet, bis eines der Formate mit dem String übereinstimmt. Beim Codieren wird das erste Format verwendet und die restlichen werden ignoriert.

JSON-Darstellung
{
    "formats": object (DateTimeFormat)
}
Felder
formats

object (DateTimeFormat)

Liste der Zeitstempelformate.

HFP

Legen Sie für dieses Feld „Hexadezimaler Gleitkommawert“ fest.

Geben Sie ein leeres JSON-Objekt so an:

JSON-Darstellung
{
}

ModifierChain

Geben Sie eine Modifikatorkette an, um mehrere Modifikatoren nacheinander anzuwenden. Die Modifikatoren werden in der Reihenfolge angewendet, in der sie angegeben sind.

JSON-Darstellung
{
    "modifiers": object (FieldModifier)
}
Felder
modifiers

object (FieldModifier)

Geben Sie die Liste der anzuwendenden Modifikatoren an.

NullIf

Feld auf „null“ setzen, wenn eine Bedingung erfüllt ist. Sie müssen entweder null_value oder non_null_value oder beides angeben.

Wenn Sie ein Null-Indikatorfeld erstellen möchten, können Sie ein FieldSuffix mit einem null_if-Feldmodifikator verwenden und is_inverse auf true setzen, wie in den folgenden Beispielen gezeigt:

Beispiel: Null-Indikator

Um ein Null-Indikatorfeld zu erstellen, können wir den Feldmodifikator null_if so verwenden.

 {
  "field_suffixes": [
   {
     "suffix": "NID",
     "is_inverse": true,
     "modifier": {
     "null_if": {
       "null_value": "?",
       "target_field": "$self"
     }
    }
   }
  ]
 }

Dadurch können alle Felder mit dem Suffix NID effektiv Null-Indikatoren sein, wie im folgenden Copybook-Snippet gezeigt:

 01 REC.
   02 FIELD     PIC X(10).
   02 FIELD-NID PIC X(1).

Beispiel: Binärer Null-Indikator

Um ein binary-Null-Indikatorfeld zu erstellen, können wir die Feldmodifikatoren binary und null_if so verwenden.

 {
  "field_suffixes": [
   {
     "suffix": "NID",
     "modifier": {
       "binary": {}
     }
   },
   {
     "suffix": "NID",
     "is_inverse": true,
     "modifier": {
     "null_if": {
       "null_value": "15",
       "target_field": "$self"
     }
    }
   }
  ]
 }

Dadurch können alle Felder mit dem Suffix NID effektiv binary-Null-Indikatoren sein, die dasselbe Copybook aus dem vorherigen Beispiel verwenden.

Beispiel: Null-Indikator für Bytes

Um ein bytes-Null-Indikatorfeld zu erstellen, können wir die Feldmodifikatoren bytes und null_if so verwenden. Die Werte für Null und Nicht-Null werden als HEX ausgedrückt.

 {
  "field_suffixes": [
   {
     "suffix": "NID",
     "modifier": {
       "bytes": {}
     }
   },
   {
     "suffix": "NID",
     "is_inverse": true,
     "modifier": {
     "null_if": {
       "null_value": "FF",
       "target_field": "$self"
     }
    }
   }
  ]
 }

Dadurch können alle Felder mit dem Suffix NID effektiv ein bytes-Null-Indikator sein, wobei dasselbe Copybook aus dem vorherigen Beispiel verwendet wird.

JSON-Darstellung
{
    "non_null_value": string,
    "non_null_values": string,
    "null_value": string,
    "null_values": string,
    "target_field": string
}
Felder
non_null_value

string

Wenn angegeben und target_field nicht mit diesem Wert übereinstimmt, wird das Feld nicht decodiert oder codiert und der Wert wird auf „null“ gesetzt.

non_null_values

string

Wenn target_field nicht mit einem dieser Werte übereinstimmt, wird das Feld nicht decodiert oder codiert und der Wert wird auf null gesetzt.

null_value

string

Wenn angegeben und target_field mit diesem Wert übereinstimmt, wird das Feld nicht decodiert oder codiert und der Wert wird auf null gesetzt.

null_values

string

Wenn angegeben und target_field mit einem dieser Werte übereinstimmt, wird das Feld nicht decodiert oder codiert und der Wert wird auf „null“ gesetzt.

target_field

string

Geben Sie das Feld an, dessen Wert Sie prüfen möchten. Das Feld muss im Bereich liegen. Für den Zugriff auf verschachtelte Felder können Sie die Punktnotation verwenden (z.B. „GRUPPE.FELD“).

NullIfEmpty

Das Feld sollte auf „null“ gesetzt werden, wenn alle Byte in diesem Feld „0“ sind.

Geben Sie ein leeres JSON-Objekt so an:

JSON-Darstellung
{
}

NullIfInvalid

Der Wert wird als null behandelt, wenn die Transcodierung fehlschlägt. Sie können diesen Modifikator nur auf Felder mit Größenangabe anwenden. Wenn ein Feld nicht decodiert werden kann, wird standardmäßig der gesamte Datensatz in das Spillover-Dataset (Fehler-Dataset) verschoben und von der Ausgabe ausgeschlossen. Der Rest des Ladevorgangs wird mit den gültigen Datensätzen abgeschlossen. Wenn Sie den Modifikator null_if_invalid festlegen, behält Mainframe Connector den ungültigen Eintrag bei und setzt dieses Feld auf null. Verwenden Sie sie nur, wenn Sie solche Zeilen mit einem Nullwert beibehalten möchten, und nicht nur, um einen Ladevorgang erfolgreich abzuschließen, da die fehlerhaften Datensätze standardmäßig übersprungen werden. Der Fehler wird ignoriert und nicht im Spillover-Dataset protokolliert. Während des Decodierungsprozesses ist der Wert dieses Felds für diesen Datensatz null. Wenn die Daten während der Codierung nicht geschrieben werden können, wird das gesamte Feld mit Null-Byte gefüllt.

Geben Sie ein leeres JSON-Objekt so an:

JSON-Darstellung
{
}

PackedDecimal

Legen Sie für dieses Feld „PackedDecimal“ fest.

JSON-Darstellung
{
    "logical_type": enum (DecimalLogicalType),
    "negative_sign_nibble": enum (PackedDecimalNegativeNibble)
}
Felder
logical_type

enum (DecimalLogicalType)

Überschreiben Sie den logischen Typ. Standardmäßig verwendet der Mainframe-Connector den optimalen logischen Typ basierend auf der Genauigkeit und Skalierung.

negative_sign_nibble

enum (PackedDecimalNegativeNibble)

Gibt das Nibble an, das für negative Vorzeichen verwendet werden soll. Sowohl x'B' als auch x'D' sind gültige negative Vorzeichen. Bei einigen Mainframe-Systemen oder -Anwendungen kann es jedoch eine Konvention geben, die das eine oder das andere erfordert.

String

Legt die verschiedenen Optionen für die String-Decodierung und -Codierung fest. Kann nur auf ein Stringfeld angewendet werden.

JSON-Darstellung
{
    "encoding": string,
    "pad_char": string,
    "trim_suffix": boolean
}
Felder
encoding

string

Die Codierung, mit der das Feld codiert ist.

pad_char

string

Wenn festgelegt, werden Exportstrings mit pad_char aufgefüllt. Wenn dieser Wert festgelegt ist, muss die Länge von pad_char 1 sein. „pad_char“ wirkt sich nur auf die Codierung aus, die Decodierung ignoriert „pad_char“.

trim_suffix

boolean

Wenn „true“ festgelegt ist, werden alle Leerzeichen am Ende des Strings entfernt. „trim_suffix“ wirkt sich nur auf die Decodierung aus. Bei der Codierung wird „trim_suffix“ ignoriert. Strings, die nur aus Leerzeichen bestehen, werden zu leeren Strings.

VarLen

Stellt ein Feld mit variabler Länge dar.

Ein Feld mit variabler Länge besteht aus drei Teilen:

  1. Ein Gruppenelement, das zwei Unterfelder enthält.
  2. Ein Feld innerhalb des Gruppenelements, das die Länge der Transaktionsdaten enthält.
  3. Ein Feld innerhalb des Gruppenelements, das die Daten enthält.

Der Name des Felds mit variabler Länge ist der Gruppenname.

Geben Sie ein leeres JSON-Objekt so an:

JSON-Darstellung
{
}

ZonedDecimal

Legt verschiedene Optionen für die Codierung und Decodierung von gezonten Dezimalzahlen fest. Dieser Modifikator kann nur auf ein Dezimalfeld angewendet werden.

JSON-Darstellung
{
    "encoding": enum (ZonedDecimalEncoding),
    "logical_type": enum (DecimalLogicalType)
}
Felder
encoding

enum (ZonedDecimalEncoding)

Die Codierung, mit der das Feld codiert ist.

logical_type

enum (DecimalLogicalType)

Geben Sie den logischen Typ an, der beim Decodieren oder Codieren des Felds verwendet werden soll.

FieldOverride

Überschreiben oder ändern Sie die Decodierungs- und Codierungskette für das angegebene Feld.

JSON-Darstellung
{
    "field": string,
    "modifier": object (FieldModifier)
}
Felder
field

string

Geben Sie den Namen des Felds an, auf das der Modifikator angewendet werden soll.

modifier

object (FieldModifier)

Geben Sie den Modifikator an, der auf das übereinstimmende Feld angewendet werden soll.

FieldSuffix

Feld-Suffixe gelten für alle Felder, die ein Suffix haben.

Felder werden abgeglichen, wenn sie mit einem Bindestrich (-) oder Unterstrich (_) gefolgt vom Suffix enden.

Bei Suffixen wird nicht zwischen Groß- und Kleinschreibung unterschieden.

Der Modifikator FieldSuffix wird nach dem Modifikator FieldOverride angewendet.

Beispiel: Der für das Suffix NID definierte Modifikator wird auf das Feld FLD-NID, aber nicht auf das Feld FUNID angewendet.

JSON-Darstellung
{
    "is_inverse": boolean,
    "modifier": object (FieldModifier),
    "suffix": string
}
Felder
is_inverse

boolean

Geben Sie an, ob der Modifikator ein inverser Feldmodifikator ist oder nicht. Ein inverser Feldmodifikator wendet den Modifikator auf ein anderes Feld an, das denselben Namen wie das Feld mit dem Modifikator hat, aber ohne den Modifikator. Wenn beispielsweise sowohl das Feld FLD-NID als auch das Feld FLD im selben Datensatz vorhanden sind, wird der Modifikator auf FLD angewendet.

Wenn Sie einen inversen Feldmodifikator verwenden, kann die spezielle Kennung $self immer dann verwendet werden, wenn ein Feldname herkömmlicherweise verwendet werden kann, um auf das Feld mit dem Suffix zu verweisen.

Wenn Sie beispielsweise ein Null-Indikatorfeld erstellen möchten, können Sie den Feldmodifikator null_if verwenden, wobei is_inverse auf true gesetzt ist. Weitere Informationen finden Sie unter NullIf.

modifier

object (FieldModifier)

Geben Sie den Modifikator an, der auf übereinstimmende Felder angewendet werden soll.

suffix

string

Der Modifikator wird auf das Feld mit diesem Suffix angewendet.

Transformation

Mit Ansichtstransformationen wird die Beziehung zwischen der Tabelle und der QSAM-Datei geändert. Transformationen werden immer aus der Sicht der Daten formuliert. Das Konzept ähnelt dem von Ansichtstabellen in BigQuery.

JSON-Darstellung
{
    "exclude": object (Exclude),
    "move": object (Move),
    "rename": object (Rename),
    "split": object (Split),
    "target_table": string,
    "unnest": object (Unnest)
}
Felder
exclude

object (Exclude)

move

object (Move)

rename

object (Rename)

split

object (Split)

target_table

string

Optional. Geben Sie den Namen der Zieltabelle (Ansicht) an, auf die die Transformation angewendet werden soll.

Standardmäßig werden Transformationen auf die Haupttabelle (_main) oder gegebenenfalls global angewendet. Wenn Sie aufgeteilte Ansichten haben (erstellt durch eine split-Transformation), können Sie eine bestimmte aufgeteilte Tabelle namentlich als Ziel festlegen.

Hinweis: Split-Transformationen selbst können nicht als Ziel festgelegt werden. Wenn target_table festgelegt ist, wird ein Fehler ausgegeben.

unnest

object (Unnest)

Ausschließen

Ein Feld aus der Ergebnistabelle ausschließen, aber trotzdem decodieren oder codieren. Das ist nützlich, wenn das Feld nicht in die Tabelle übertragen werden muss, aber für die Transcodierung erforderlich ist. Beispielsweise können Null-Indikator- oder Längenfelder aus der Tabelle weggelassen werden.

Wenn Sie die Transcodierung vollständig umgehen möchten, wenden Sie den Füllmodifikator an.

JSON-Darstellung
{
    "field": string
}
Felder
field

string

Geben Sie das Feld an, das ausgeschlossen werden soll.

Verschieben

Feld im Datensatz verschieben

JSON-Darstellung
{
    "field": string,
    "offset": int
}
Felder
field

string

Geben Sie das Feld an, das verschoben werden soll.

offset

int

Geben Sie an, um wie viele Stellen das Feld vorwärts oder rückwärts verschoben werden soll.

Umbenennen

Benennt ein oder mehrere Felder basierend auf einer Übereinstimmung mit einem regulären Ausdruck um.

Wenn Sie beispielsweise alle Bindestriche durch Unterstriche ersetzen möchten, verwenden Sie das folgende JSON-Format: {"find": "\\-", "replace":"_"}.

JSON-Darstellung
{
    "find": string,
    "replace": string
}
Felder
find

string

Gibt ein Muster für einen regulären Java-Ausdruck an, um die umzubenennenden Felder zu identifizieren.

Das Muster wird mit dem vollständigen Feldnamen abgeglichen. Wenn das Muster mit einem Teil des Feldnamens übereinstimmt, wird das Feld als Übereinstimmung betrachtet.

Beispiele:

  • "\\-" (stimmt mit jedem Feld überein, das einen Bindestrich enthält)
  • "^field_name$" (stimmt mit Feldern mit dem genauen Namen field_name überein)
  • "^field_(.*)$" (stimmt mit allen Feldern überein, die mit field_ beginnen, und erfasst den Rest)
  • "part_of_name" (stimmt mit jedem Feld überein, das part_of_name enthält)

replace

string

Gibt den neuen Namen für die übereinstimmenden Felder an.

Erfassungsgruppen aus dem regulären Ausdruck find können im String replace mit Rückverweisen wie $1, $2 verwendet werden. Dies ermöglicht komplexere Transformationen basierend auf Teilen des ursprünglichen Feldnamens.

Beispiele:

  • "new_field_name" (ersetzt das Feld durch einen festen Namen)
  • "new_$1" (verwendet die erste Erfassungsgruppe aus find)
  • "${1}_new" (alternative Syntax für Erfassungsgruppen)
  • "prefix_$1_suffix" (verwendet eine Erfassungsgruppe und fügt Präfixe/Suffixe hinzu)

Aufteilen

JSON-Darstellung
{
    "field": string,
    "foreign_key": string,
    "primary_key": string
}
Felder
field

string

Geben Sie das Feld an, das Sie aufteilen möchten.

foreign_key

string

Geben Sie den Namen für das Feld an, das dem neuen Schema hinzugefügt wird und in dem der Primärschlüsselwert gespeichert wird. Wenn keine Angabe erfolgt, wird der Name des Primärschlüssels verwendet.

primary_key

string

Geben Sie den Feldnamen an, der als Primärschlüssel verwendet werden soll.

Verschachtelung aufheben

Heben Sie die Verschachtelung des Felds auf.

JSON-Darstellung
{
    "field": string,
    "format": string
}
Felder
field

string

Geben Sie das Feld an, dessen Verschachtelung aufgehoben werden soll.

format

string

Geben Sie das neue Feldformat an.

${parent} wird mit dem Namen des Felds veröffentlicht, das entpackt wird.

Bei nicht verschachtelten Structs wird ${field} durch den Namen des Struct-Felds ersetzt.

Bei nicht verschachtelten Arrays und Listen wird ${index} durch die Indexe des Arrays ersetzt.

Enums

BinarySignedness

Enums
SIGNED Die Binärzahl ist signiert.
UNSIGNED Die Binärzahl ist vorzeichenlos.
UNSPECIFIED Versuchen Sie, das Vorzeichen aus der vorhandenen Kette abzuleiten.

DecimalLogicalType

Logischer Typ, der für ein Dezimalfeld verwendet werden soll.

Enums
AUTO Verwenden Sie den optimalen Typ basierend auf der Skalierung und Genauigkeit.
BIG_DECIMAL Speichern Sie den Wert als unbegrenzten Dezimalwert. Dies ist die langsamste Option, unterstützt aber jede Dezimalzahl mit beliebiger Genauigkeit und Skalierung.
BIG_INTEGER Speichern Sie den Wert als unbegrenzten Ganzzahlwert. Dies ist die langsamste Option, unterstützt aber jede Ganzzahl mit beliebiger Genauigkeit.
DECIMAL64 Verwenden Sie 64 Bit, um den Wert zu speichern. Dieser Modifikator funktioniert nur für Zahlen, deren Genauigkeit kleiner oder gleich 18 ist.
LONG Verwenden Sie 64 Bit, um den Wert zu speichern. Dieser Modifikator funktioniert nur für Zahlen, deren Genauigkeit kleiner oder gleich 18 ist und deren Skalierung 0 ist.

PackedDecimalNegativeNibble

Enums
NIBBLE_B Standardmäßig wird x'B' verwendet.
NIBBLE_D Verwenden Sie x'D' für das Nibble mit negativem Vorzeichen.

SchemaValidationMode

Geben Sie den Schemavalidierungsmodus an, der während der Copybook-Kompilierung verwendet werden soll. In diesem Modus wird die Kompatibilität mit einem bestimmten Zieldatenformat überprüft.

Enums
BIG_QUERY Schemavalidierungsmodus für BigQuery-Kompatibilität. In diesem Modus wird die Standardvalidierung erweitert, um zu prüfen, ob das Schema des Copybooks mit den Datentypen von BigQuery kompatibel ist.
DEFAULT Standardmodus für die Schemavalidierung. In diesem Modus wird geprüft, ob im Copybook eindeutige Feldnamen vorhanden sind.
MYSQL Schemavalidierungsmodus für MySQL-Kompatibilität. In diesem Modus wird die Standardvalidierung erweitert, um zu prüfen, ob das Schema des Copybooks mit MySQL-Datentypen kompatibel ist.
POSTGRES Schemavalidierungsmodus für PostgreSQL-Kompatibilität. In diesem Modus wird die Standardvalidierung erweitert, um zu prüfen, ob das Schema des Copybooks mit PostgreSQL-Datentypen kompatibel ist.

ZonedDecimalEncoding

Geben Sie die Codierung an, die beim Decodieren oder Codieren eines gezonten Dezimalfelds verwendet werden soll.

Enums
ASCII Verwenden Sie die Codierung ASCII.
EBCDIC Verwenden Sie die Codierung EBCDIC.
UNSPECIFIED Behalten Sie die in der Modifikatorkette angegebene Codierung bei. Wenn kein Modifikator angegeben ist, wird EBCDIC verwendet.