Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisation d'expressions de règle de transformation pour définir le contenu d’une colonne
Pour définir le contenu de colonnes nouvelles et existantes, vous pouvez utiliser une expression dans une règle de transformation. Par exemple, des expressions peuvent vous permettre d’ajouter une colonne ou de répliquer des en-têtes de table source à une cible. Vous pouvez également utiliser des expressions pour signaler des enregistrements des tables cibles comme insérés, mis à jour ou supprimés à la source.
Rubriques
Ajouter une colonne à l'aide d'une expression
Pour ajouter des colonnes à des tables à l'aide d'une expression dans une règle de transformation, utilisez une action de règle add-column
et une cible de règle column
.
L'exemple suivant ajoute une nouvelle colonne à la table ITEM
. Il définit le nouveau nom de colonne sur FULL_NAME
, avec un type de données string
de 50 caractères. L'expression concatène les valeurs de deux colonnes existantes, FIRST_NAME
et LAST_NAME
, pour les évaluer selon FULL_NAME
. schema-name
, table-name
et les paramètres d’expression font référence aux objets de la table de base de données source. Value
et le bloc data-type
font référence aux objets de la table de base de données cible.
{ "rules": [ { "rule-type": "selection", "rule-id": "1", "rule-name": "1", "object-locator": { "schema-name": "Test", "table-name": "%" }, "rule-action": "include" }, { "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "Test", "table-name": "ITEM" }, "value": "FULL_NAME", "expression": "$FIRST_NAME||'_'||$LAST_NAME", "data-type": { "type": "string", "length": 50 } } ] }
Signalement d'enregistrements cibles à l'aide d'une expression
Pour signaler des enregistrements dans des tables cibles comme insérés, mis à jour ou supprimés dans la table source, utilisez une expression dans une règle de transformation. L'expression utilise une fonction operation_indicator
pour signaler les enregistrements. Les enregistrements supprimés de la source ne sont pas supprimés de la cible. Au lieu de cela, l'enregistrement cible est signalé avec une valeur fournie par l'utilisateur pour indiquer qu'il a été supprimé de la source.
Note
La fonction operation_indicator
fonctionne uniquement sur les tables qui ont une clé primaire à la fois sur les bases de données sources et cibles.
Par exemple, la règle de transformation suivante ajoute d'abord une nouvelle colonne Operation
à une table cible. Elle met ensuite à jour la colonne avec la valeur D
chaque fois qu'un enregistrement est supprimé d'une table source.
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "add-column", "value": "Operation", "expression": "operation_indicator('D', 'U', 'I')", "data-type": { "type": "string", "length": 50 } }
Réplication des en-têtes d’une table source à l'aide d'expressions
Par défaut, les en-têtes des tables sources ne sont pas répliqués sur la cible. Pour indiquer les en-têtes à répliquer, utilisez une règle de transformation avec une expression qui inclut l'en-tête de colonne du tableau.
Vous pouvez utiliser les en-têtes de colonne suivants dans les expressions.
En-tête | Valeur de la réplication continue | Valeur en pleine charge | Type de données |
---|---|---|---|
AR_H_STREAM_POSITION | Valeur de position du flux à partir de la source. Cette valeur peut être le numéro de modification système (SCN) ou le numéro de séquence de journal (LSN), selon le point de terminaison source. | Une chaîne vide. | CHAÎNE |
AR_H_TIMESTAMP | Horodatage indiquant l'heure de la modification. | Horodatage indiquant l’heure à laquelle les données arrivent au niveau de la cible. | DATETIME (scale=7) |
AR_H_COMMIT_TIMESTAMP | Un horodatage indiquant l'heure de la validation. | Horodatage indiquant l'heure actuelle. | DATETIME (scale=7) |
AR_H_OPERATION | INSERT, UPDATE ou DELETE | INSERT | CHAÎNE |
AR_H_USER | Nom d'utilisateur, ID ou toute autre information fournie par la source sur l'utilisateur qui a effectué la modification. Cet en-tête est pris en charge uniquement sur les points de terminaison source SQL Server et Oracle (version 11.2.0.3 et supérieure). |
Transformation à appliquer à l'objet. Les actions de règle de transformation sont sensibles à la casse. | CHAÎNE |
AR_H_CHANGE_SEQ | Nombre incrémentiel unique issu de la base de données source, composé d’un horodatage et d’un nombre incrémentiel automatique. La valeur dépend du système de base de données source. | Une chaîne vide. | CHAÎNE |
Dans l'exemple suivant, une nouvelle colonne est ajoutée à la cible en utilisant la valeur de position du flux à partir de la source. Pour SQL Server, la valeur de position de flux est le LSN du point de terminaison source. Pour Oracle, la valeur de position de flux est le SCN du point de terminaison source.
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "add-column", "value": "transact_id", "expression": "$AR_H_STREAM_POSITION", "data-type": { "type": "string", "length": 50 } }
L’exemple suivant ajoute une nouvelle colonne à la cible qui possède un nombre incrémentiel unique issu de la source. Cette valeur représente un nombre unique à 35 chiffres au niveau de la tâche. Les 16 premiers chiffres font partie d’un horodatage et les 19 derniers chiffres sont le numéro record_id incrémenté par le SGBD.
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "add-column", "value": "transact_id", "expression": "$AR_H_CHANGE_SEQ", "data-type": { "type": "string", "length": 50 } }
Utilisation de SQLite fonctions pour créer des expressions
Vous utilisez les paramètres de table pour spécifier les paramètres que vous souhaitez appliquer à la table ou à la vue sélectionnée pour une opération spécifiée. Les règles table-settings sont facultatives.
Note
Plutôt que d’utiliser des tables et des vues, les bases de données MongoDB et DocumentDB stockent les enregistrements de données sous forme de documents regroupés dans des collections. Ainsi, lors de la migration depuis une source MongoDB ou DocumentDB, prenez en compte le type de segmentation par plage des paramètres de chargement parallèle pour les collections sélectionnées plutôt que les tables et les vues.
Vous trouverez ci-dessous les fonctions de chaîne que vous pouvez utiliser pour créer des expressions de règle de transformation.
Fonctions de chaîne | Description |
---|---|
|
La fonction |
|
La fonction |
|
La fonction |
|
La fonction |
|
La fonction |
|
La fonction Si |
trim( |
La fonction |
Vous trouverez ci-dessous les fonctions LOB que vous pouvez utiliser pour créer des expressions de règle de transformation.
Fonctions LOB | Description |
---|---|
|
La fonction |
|
La fonction |
|
La fonction |
Vous trouverez ci-dessous les fonctions numériques que vous pouvez utiliser pour créer des expressions de règle de transformation.
Fonctions numériques | Description |
---|---|
|
La fonction |
|
La fonction |
|
La |
|
La fonction La fonction |
|
La fonction La fonction |
Vous trouverez ci-dessous les fonctions de vérification NULL que vous pouvez utiliser pour créer des expressions de règle de transformation.
Fonctions de vérification NULL | Description |
---|---|
|
La fonction |
|
La fonction |
|
La fonction La fonction |
Vous trouverez ci-dessous les fonctions de date/heure que vous pouvez utiliser pour créer des expressions de règle de transformation.
Fonctions de date et d’heure | Description |
---|---|
|
La |
|
La fonction |
|
La |
|
La fonction |
|
La fonction
|
Vous trouverez ci-dessous une fonction de hachage que vous pouvez utiliser pour créer des expressions de règle de transformation.
Fonction de hachage | Description |
---|---|
|
La fonction Pour utiliser la fonction |
Utilisation d’une expression CASE
L' SQLite CASE
expression évalue une liste de conditions et renvoie une expression en fonction du résultat. La syntaxe est la suivante.
CASE case_expression WHEN when_expression_1 THEN result_1 WHEN when_expression_2 THEN result_2 ... [ ELSE result_else ] END # Or CASE WHEN case_expression THEN result_1 WHEN case_expression THEN result_2 ... [ ELSE result_else ] END
Exemples
Exemple d’ajout d’une nouvelle colonne de chaîne à la table cible en utilisant une condition de casse
L’exemple de règle de transformation suivant ajoute une nouvelle colonne de chaîne emp_seniority
à la table cible employee
. Il utilise la SQLite round
fonction de la colonne des salaires, avec une condition de cas pour vérifier si le salaire est égal ou supérieur à 20 000. Si c’est le cas, la colonne obtient la valeur SENIOR
et tout le reste a la valeur JUNIOR
.
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "public", "table-name": "employee" }, "value": "emp_seniority", "expression": " CASE WHEN round($emp_salary)>=20000 THEN ‘SENIOR’ ELSE ‘JUNIOR’ END", "data-type": { "type": "string", "length": 50 } }
Exemple d’ajout d’une nouvelle colonne de date à la table cible
L’exemple suivant ajoute une nouvelle colonne de date createdate
à la table cible employee
. Lorsque vous utilisez la fonction de SQLite datedatetime
, la date est ajoutée à la table nouvellement créée pour chaque ligne insérée.
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "public", "table-name": "employee" }, "value": "createdate", "expression": "datetime ()", "data-type": { "type": "datetime", "precision": 6 } }
Exemple d’ajout d’une nouvelle colonne numérique à la table cible
L’exemple suivant ajoute une nouvelle colonne numérique rounded_emp_salary
à la table cible employee
. Elle utilise la SQLite round
fonction pour ajouter le salaire arrondi.
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "public", "table-name": "employee" }, "value": "rounded_emp_salary", "expression": "round($emp_salary)", "data-type": { "type": "int8" } }
Exemple d’ajout d’une nouvelle colonne de chaîne à la table cible en utilisant la fonction de hachage
L’exemple suivant ajoute une nouvelle colonne de chaîne hashed_emp_number
à la table cible employee
. La SQLite hash_sha256(
fonction crée des valeurs hachées sur la cible pour la colonne source,x
)emp_number
.
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "public", "table-name": "employee" }, "value": "hashed_emp_number", "expression": "hash_sha256($emp_number)", "data-type": { "type": "string", "length": 64 } }
Ajout de métadonnées à une table cible à l’aide d’expressions
Vous pouvez ajouter les informations de métadonnées à la table cible en utilisant les expressions suivantes :
-
$AR_M_SOURCE_SCHEMA
: nom du schéma source. -
$AR_M_SOURCE_TABLE_NAME
: nom de la table source. -
$AR_M_SOURCE_COLUMN_NAME
: nom d’une colonne de la table source. -
$AR_M_SOURCE_COLUMN_DATATYPE
: type de données d’une colonne de la table source.
Exemple d’ajout d’une colonne pour un nom de schéma en utilisant le nom de schéma issu de la source
L’exemple suivant ajoute une nouvelle colonne nommée schema_name
à la cible en utilisant le nom de schéma issu de la source.
{ "rule-type": "transformation", "rule-id": "2", "rule-name": "2", "rule-action": "add-column", "rule-target": "column", "object-locator": { "schema-name": "%", "table-name": "%" }, "rule-action": "add-column", "value":"schema_name", "expression": "$AR_M_SOURCE_SCHEMA", "data-type": { "type": "string", "length": 50 } }