Ecrire un Job script - 6.1

Talend Data Management Platform Studio Guide utilisateur

EnrichVersion
6.1
EnrichProdName
Talend Data Management Platform
task
Création et développement
Qualité et préparation de données
EnrichPlatform
Studio Talend

Dans l'API Editor du Studio Talend, vous pouvez utiliser l'autocomplétion (Ctrl+Espace) pour vous aider à écrire votre Job script. Les fonctions, les paramètres et quelques valeurs vous seront suggérés.

Le code s'affiche en couleur afin de différencier facilement le code, les valeurs et les commentaires. La syntaxe est vérifiée pour éviter toute erreur. Si un paramètre est mal défini, une croix rouge s'affiche. De plus, vous pouvez utiliser un modèle pour écrire votre Job script. Pour plus d'informations concernant la définition des couleurs du texte ou concernant la gestion des modèles de Job scripts, consultez Préférences des Job scripts (JobScript).

Un Job script est principalement composé :

  • des composants de votre processus ;

  • des connexions entre ces composants ;

  • d'autres informations comme les paramètres de contextes, d'autres paramètres et de notes.

Propriétés des composants

Les propriétés des composants peuvent être divisées en trois parties :

  • la définition du composant ;

  • le schéma du composant 

  • les paramètres spécifiques.

Pour ajouter un composant, saisissez la fonction addComponent{} et définissez ses propriétés entre les accolades :

Fonction

Paramètre

Valeur

setComponentDefinition{}

TYPE

Saisissez le nom du composant que vous souhaitez utiliser, par exemple tRowGenerator.

 

NAME

Saisissez le nom que vous souhaitez donner au composant, par exemple tRowGenerator_1.

 

POSITION (facultatif)

Saisissez la position du composant dans l'espace de modélisation, par exemple (2,3).

Note

La position du composant doit être indiquée entre parenthèses.

setSettings{}

 

Définissez les paramètres du composant. Ce paramètre est spécifique à chaque composant.

addSchema{}

TYPE

Saisissez le type de schéma utilisé dans le composant, par exemple FLOW, LOOKUP, etc.

 

LABEL

Donnez un libellé au schéma.

 

addColumn{}

Ajoutez autant de colonnes que nécessaire dans votre schéma et définissez les paramètres des colonnes :

NAME : Saisissez le libellé de la colonne.

TYPE : Saisissez le type de données contenu dans cette colonne.

KEY : Définissez la colonne comme clé primaire.

NULLABLE : Définissez la colonne comme nullable.

Note

Tous les paramètres doivent être séparés par une virgule.

Propriétés des connexions

Pour ajouter une connexion, saisissez la fonction addConnection{} et définissez ses propriétés entre les accolades :

Paramètre

Valeur

TYPE

Saisissez le type de schéma utilisé dans le composant, par exemple FLOW, LOOKUP, etc.

NAME

Donnez un nom à la connexion.

LINESTYLE

Définissez le style de la ligne.

Par exemple, 0 correspond à Row Main, 8 correspond à Row Lookup.

SOURCE

Saisissez le nom du composant source.

TARGET

Saisissez le nom du composant cible.

Note

Tous les paramètres doivent être séparés par une virgule.

Exemple de Job script

Vous pouvez trouver ci-dessous un exemple de Job script avec deux tRowGenerator comme composants d'entrée, un tMap, avec deux tables d'entrée correspondant aux composants d'entrée, une table de variables ainsi qu'une table de sortie, et un composant tLogRow comme composant de sortie.

/*
* This is a Job with 2 tRowGenerator, 1 tMap and 1 tLogRow.
*/
 
//add component node 
addComponent{
//set basic infomation
setComponentDefinition {
		TYPE:tRowGenerator,
		NAME:"tRowGenerator_1",
		POSITION: 160, 64
	}
	//set element parameters
        	setSettings{
		NB_ROWS:100,
		VALUES{
			SCHEMA_COLUMN:tableOneColumn1,
			ARRAY:TalendString.getAsciiRandomString(6),
			SCHEMA_COLUMN:tableOneColumn2,
			ARRAY:TalendString.getAsciiRandomString(6),
			SCHEMA_COLUMN:tableOneColumn3,
			ARRAY:TalendString.getAsciiRandomString(6)
		}
	}
	//add the schema
    addSchema {
		NAME:"schema1",
		TYPE:"FLOW",
		LABEL:"tRowGenerator_1"
		addColumn {
			NAME:tableOneColumn1,
			TYPE:id_String,
			KEY:false,
			NULLABLE:false
		}
		addColumn {
			NAME:tableOneColumn2,
			TYPE:id_String,
			KEY:false,
			NULLABLE:true
		}
		addColumn {
			NAME:tableOneColumn3,
			TYPE:id_String,
			KEY:false,
			NULLABLE:true
		}
	}
}
addComponent{
	setComponentDefinition {
		TYPE:tRowGenerator,
		NAME:"tRowGenerator_2",
		POSITION: 160, 192
	}
	setSettings{
		NB_ROWS:100,
		VALUES{
			SCHEMA_COLUMN:tableTwoColumn1,
			ARRAY:TalendString.getAsciiRandomString(6),
			SCHEMA_COLUMN:tableTwoColumn2,
			ARRAY:TalendString.getAsciiRandomString(6)
		}
	}
	addSchema {
		NAME:"schema2",
		TYPE:"FLOW",
		LABEL:"tRowGenerator_2"
		addColumn {
			NAME:tableTwoColumn1,
			TYPE:id_String,
			KEY:false,
			NULLABLE:false
		}
		addColumn {
			NAME:tableTwoColumn2,
			TYPE:id_String,
			KEY:false,
			NULLABLE:true
		}
	}
}
addComponent{
	setComponentDefinition {
		TYPE:tLogRow,
		NAME:"tLogRow_1",
		POSITION: 544, 128
	}
	setSettings{
		LENGTHS{
			SCHEMA_COLUMN:var1,
			SCHEMA_COLUMN:var2,
			SCHEMA_COLUMN:var4
		}
	}
	addSchema {
		NAME:"schema3",
		TYPE:"FLOW",
		LABEL:"newOutPut"
		addColumn {
			NAME:var1,
			TYPE:id_String,
			KEY:false,
			NULLABLE:false
		}
		addColumn {
			NAME:var2,
			TYPE:id_String,
			KEY:false,
			NULLABLE:true
		}
		addColumn {
			NAME:var4,
			TYPE:id_String,
			KEY:false,
			NULLABLE:true
		}
	}
}
addComponent{
	setComponentDefinition{
		TYPE:tMap,
		NAME:"tMap_1",
		POSITION: 352, 128
	}
	setSettings{
		EXTERNAL:Map
	}
		addSchema {
			NAME: "newOutPut",
			TYPE: "FLOW",
			LABEL: "newOutPut"
			addColumn {
				NAME: "var1",
				TYPE: "id_String"
			}
			addColumn {
				NAME: "var2",
				TYPE: "id_String",
				NULLABLE: true
			}
			addColumn {
				NAME: "var4",
				TYPE: "id_String",
				NULLABLE: true
			}
		}
	//add special data, input tables, an output table, and a var table in tMap 	
    addMapperData{
		//the syntax is almost the same as the metatable
        		addInputTable{
			NAME:row1,
			SIZESTATE:INTERMEDIATE,
			EXPRESSIONFILTER:filter
			addColumn {
				NAME:tableOneColumn1,
				TYPE:id_String,
				NULLABLE:false
			}
			addColumn {
				NAME:tableOneColumn2,
				TYPE:id_String,
				NULLABLE:true
			}
			addColumn {
				NAME:tableOneColumn3,
				TYPE:id_String,
				NULLABLE:true
			}
		}
		//add another input table
        		addInputTable{
			NAME:row2,
			SIZESTATE:MINIMIZED
			addColumn {
				NAME:tableTwoColumn1,
				TYPE:id_String,
				NULLABLE:false
			}
			addColumn {
				NAME:tableTwoColumn2,
				TYPE:id_String,
				NULLABLE:true
			}
		}
		//add the var table
        		addVarTable{
			NAME:Var
			addColumn{
				NAME:var1,
				TYPE:id_String,
				EXPRESSION:row1.tableOneColumn1+row2.tableTwoColumn1
			}
			addColumn{
				NAME:var2,
				TYPE:id_String,
				EXPRESSION:row1.tableOneColumn2
			}
			addColumn{
				NAME:var3,
				TYPE:id_String,
				EXPRESSION:row1.tableOneColumn3+row2.tableTwoColumn2
			}
			addColumn{
				NAME:var4,
				TYPE:id_String
			}
		}
		//add the output table
        		addOutputTable{
			NAME:newOutPut
			addColumn{
				NAME:var1,
				TYPE:id_String,
				EXPRESSION:Var.var1+Var.var3
			}
			addColumn{
				NAME:var2,
				TYPE:id_String,
				EXPRESSION:Var.var2
			}
			addColumn{
				NAME:var4,
				TYPE:id_String,
				EXPRESSION:Var.var4
			}
		}
	}
}
//add connections 
addConnection{
	TYPE:"FLOW",
	NAME:"row1",
	LINESTYLE:0,
	SOURCE:"tRowGenerator_1",
	TARGET:"tMap_1"
}
addConnection{
	TYPE:"FLOW",
	NAME:"row2",
	LINESTYLE:8,
	SOURCE:"tRowGenerator_2",
	TARGET:"tMap_1"
}
addConnection{
	TYPE:"FLOW",
	NAME:"newOutPut",
	LINESTYLE:0,
	SOURCE:"tMap_1",
	TARGET:"tLogRow_1"
}