Propriétés des nœuds et des flux
Vous pouvez utiliser des scripts pour modifier les propriétés des nœuds et des flux à l'aide d'un script.
Les propriétés d'un nœud sont les paramètres spécifiques d'un nœud. Il s'agit souvent des mêmes propriétés que celles auxquelles vous pouvez accéder via l'interface utilisateur, par exemple lorsque vous double-cliquez sur un nœud pour ouvrir ses propriétés. Les propriétés de flux se réfèrent à des opérations de flux de haut niveau, telles que la mise en cache.
Propriétés structurées
Les scripts utilisent les propriétés structurées de la manière suivante afin d'améliorer la clarté de l'analyse :
- Pour structurer les noms des propriétés des nœuds complexes, tels que les nœuds Mimic et Anonymize.
- Fournir un format permettant de définir plusieurs propriétés à la fois.
Les scripts pour les nœuds avec des tables et d'autres interfaces complexes doivent suivre une structure particulière pour être analysés correctement. Ces propriétés ont besoin d'un nom plus complexe que le nom d'un seul identifiant. Ce nom est appelé la clé. Les propriétés structurées sont aussi parfois appelées propriétés à clés.
Par exemple, avec un nœud Anonymize, chaque champ disponible en amont est soit anonymisé, soit conservé. Pour faire référence à ces informations, le nœud Anonymize stocke un élément d'information par champ (que chaque champ soit True ou False). Pour rendre anonyme un champ appelé Age, définissez la propriété enable_anonymize, avec la clé Age, à la valeur True:
# Anonymize node requires the input fields while setting the values
node.setKeyedPropertyValue("enable_anonymize", "Age", True)
node.setKeyedPropertyValue("transformation", "Age", "Random")
node.setKeyedPropertyValue("set_random_seed", "Age", True)
node.setKeyedPropertyValue("random_seed", "Age", 123)
Définition de propriétés multiples
Pour de nombreux nœuds, vous pouvez attribuer plusieurs propriétés structurées de nœuds ou de flux à la fois, par exemple :
mimic.setPropertyValue("missing_value_imputation", "True")
mimic.setPropertyValue("missing_value_imputation_strategies",[["Age","Fixed","60"],["K", "mean"]])
Il s'agit d'une commande multiset ou d'un bloc set.
Un autre avantage des propriétés structurées réside dans leur capacité à définir plusieurs propriétés sur un nœud avant que celui-ci ne soit stabilisé. Par défaut, une commande multiset définit toutes les propriétés du bloc avant d'entreprendre toute action basée sur un paramètre de propriété individuel.
Syntaxe de définition des propriétés
Vous pouvez définir des propriétés en utilisant la syntaxe suivante :
OBJECT.setPropertyValue(PROPERTY, VALUE)
Vous pouvez récupérer la valeur des propriétés en utilisant la syntaxe suivante :
VARIABLE = OBJECT.getPropertyValue(PROPERTY)
Pour les propriétés clés, vous pouvez définir des propriétés à l'aide de la syntaxe suivante
OBJECT.setKeyedPropertyValue(PROPERTY, KEY, VALUE)
Vous pouvez récupérer la valeur des propriétés à l'aide de la syntaxe suivante :
VARIABLE = OBJECT.getKeyedPropertyValue(PROPERTY, KEY)
Dans chacun des exemples de code, remplacez OBJECT, PROPERTY, et KEY par les valeurs suivantes :
OBJECTest un nœud ou une sortiePROPERTYest le nom de la propriété du nœud à laquelle votre expression fait référenceKEYest la valeur de la clé pour les propriétés à clé
Propriétés des noeuds
Chaque type de nœud a son propre ensemble de propriétés, et chaque propriété a un type. Le type d'une propriété peut être un type général, tel qu'un nombre, un drapeau ou une chaîne de caractères. La référence à la propriété peut également spécifier la gamme des valeurs légales, telles que Discard, PairAndDiscard, et IncludeAsText.
Propriétés communes des nœuds
Certaines propriétés sont communes à tous les nœuds, comme name, annotation, et ToolTip, tandis que d'autres sont spécifiques à certains types de nœuds. Les propriétés suivantes sont communes à tous les nœuds du site Synthetic Data Generator.
| Nom de propriété | Type de données | Description de la propriété |
|---|---|---|
use_custom_name |
option | |
name |
chaîne | Propriété en lecture seule qui récupère le nom (par défaut ou personnalisé) d'un nœud sur le canevas. |
custom_name |
chaîne | Permet de définir un nom personnalisé pour le nœud. |
tooltip |
chaîne | |
annotation |
chaîne | |
keywords |
chaîne | Champ structuré qui spécifie une liste de mots-clés associés à l'objet (par exemple, ["Keyword1" "Keyword2"]). |
cache_enabled |
option | |
node_type |
tous les noms de nœuds tels qu'ils sont spécifiés pour la création de scripts | Propriété en lecture seule permettant de référencer un nœud par son type. Par exemple, au lieu de désigner un nœud uniquement par son nom, comme real_income, vous pouvez également préciser son type, comme userinputnode ou filternode. |
Erreurs pour les propriétés des nœuds
Pour les propriétés qui sont des types généraux, les paramètres des propriétés sont contraints au type correct. Une erreur se produit s'ils ne peuvent pas être contraints. Pour les propriétés qui ont une gamme spécifique de valeurs légales, telles que Discard ou PairAndDiscard, une erreur se produit si une autre valeur est utilisée.
Les propriétés des drapeaux doivent être lues ou définies en utilisant les valeurs de true et false de manière cohérente afin d'éviter toute confusion. Les variantes telles que Off, OFF, off, No, NO, no, n, N, f, F, false, False, FALSE, ou 0 sont également reconnues lors de la définition des valeurs. Cependant, dans certains cas, ils peuvent provoquer des erreurs lors de la lecture des valeurs des propriétés. Toutes les autres valeurs sont considérées comme vraies. Utilisation de true et false.
Propriétés du flux
Les propriétés de flux sont des opérations de haut niveau qui affectent un flux entier plutôt que des nœuds individuels. Pour faire référence aux propriétés du flux, vous devez configurer la méthode d'exécution de manière à utiliser des scripts :
stream = sdg.script.stream()
stream.setPropertyValue("execute_method", "Script")
Les propriétés de flux suivantes peuvent être utilisées dans les scripts.
| Nom de la propriété | Type de données | Description de la propriété |
|---|---|---|
execute_method |
Normal, Script | |
date_format |
" DDMMYY ", " MMDDYY ", " YYMMDD ", " YYYYMMDD ", " YYYYDDD ", JOUR, MOIS, " DD-MM-YY ", " DD-MM-YYYY ", " MM-DD-YY ", " MM-DD-YYYY ", " DD-MON-YY ", " DD-MON-YYYY ", "YYYY-MM-DD", " DD.MM.YY ", " DD.MM.YYYY ", " MM.DD.YYYY ", " DD.MON.YY ", " DD.MON.YYYY ", "DD/MM/YYY", "DD/MM/YYYY", "MM/DD/YYYY", "MM/DD/YYYY", "DD/MON/YYY", "DD/MON/YYYY", MON YYYY, q, WK YYYY | |
date_baseline |
numéro aujourd'hui | |
date_2digit_baseline |
numéro aujourd'hui | |
time_format |
"HHMMSS", "HHMM", "MMSS", "HH:MM:SS", "HH:MM", "MM:SS", "(H)H :(M)M :(S)S", "(H)H :(M)M", "(M)M :(S)S", " HH.MM.SS ", " HH.MM ", " MM.SS ", "(H)H.", "(H)S.", "(H)S.", "(H)S.", "(H)S.", "(H)S.", "(H)S.", "(H)S.", "(H)S.", "(H)S.".(M)M.« (S)S », « (H)H ».« (M)M », « (M)M. »(S)S" | |
time_rollover |
booléen | |
import_datetime_as_string |
booléen | À utiliser pour actualiser automatiquement les nœuds d'importation lors de l'exécution du flux. |
decimal_places |
numéro aujourd'hui | |
decimal_symbol |
Défaut, Point, Virgule | |
angles_in_radians |
booléen | |
use_max_set_size |
booléen | |
max_set_size |
numéro aujourd'hui | |
ruleset_evaluation |
Vote, FirstHit | |
refresh_source_nodes |
booléen | À utiliser pour actualiser automatiquement les nœuds d'importation lors de l'exécution du flux. |
script |
chaîne | |
annotation |
chaîne | |
name |
chaîne | Cette propriété est en lecture seule. Si vous souhaitez modifier le nom d'un flux, vous devez l'enregistrer sous un autre nom. |
nodes |
Voir les informations qui suivent. | |
encoding |
SystemDefault, "UTF-8" | |
stream_rewriting |
booléen | |
stream_rewriting_maximise_sql |
booléen | |
stream_rewriting_optimise_clem_execution |
booléen | |
stream_rewriting_optimise_syntax_execution |
booléen | |
enable_parallelism |
booléen | |
sql_generation |
booléen | |
database_caching |
booléen | |
sql_logging |
booléen | |
sql_generation_logging |
booléen | |
sql_log_native |
booléen | |
sql_log_prettyprint |
booléen | |
record_count_suppress_input |
booléen | |
record_count_feedback_interval |
entier | |
use_stream_auto_create_node_settings |
booléen | Si c'est le cas, les paramètres spécifiques au flux sont utilisés; sinon, ce sont les préférences de l'utilisateur qui s'appliquent. |
create_source_node_from_builders |
booléen | Si cette condition est remplie, lorsqu'un générateur de source crée une nouvelle sortie de source et qu'il ne dispose d'aucun lien de mise à jour actif, un nouveau nœud « Import » est ajouté. |
create_source_node_update_links |
createEnabled, createDisabled, doNotCreate | Définit le type de lien créé lorsqu'un nœud « Import » est ajouté automatiquement. |
has_coordinate_system |
booléen | Si cette option est activée, un système de coordonnées est appliqué à l'ensemble du flux. |
coordinate_system |
chaîne | Nom du système de coordonnées projetées sélectionné. |
deployment_area |
Marquage, Aucun | Choisissez comment vous souhaitez déployer le flux. Si cette valeur est définie sur Aucun, aucune autre entrée de déploiement n'est utilisée. |
scoring_terminal_node_id |
chaîne | Sélectionnez la branche de notation dans le flux. Il peut s'agir de n'importe quel nœud terminal du flux. |
scoring_node_id |
chaîne | Sélectionnez le nugget dans la branche de notation. |
Exemple de script avec les propriétés des flux
Vous pouvez utiliser les propriétés des nœuds pour créer une liste de tous les nœuds du flux et écrire cette liste dans les annotations du flux. La propriété « node » sert à désigner les nœuds du flux actuel. Le script de flux suivant en est un exemple :
stream = sdg.script.stream()
annotation = stream.getPropertyValue("annotation")
annotation = annotation + "\n\nThis flow is called \"" + stream.getLabel() + "\" and
contains the following nodes:\n"
for node in stream.iterator():
annotation = annotation + "\n" + node.getTypeName() + " node called \"" + node.getLabel()
+ "\""
stream.setPropertyValue("annotation", annotation)
La liste inscrite dans l'annotation de flux se présente comme suit :
This flow is called "druglearn" and contains the following nodes:
import node called "DRUG1n"
anonymize node called "Hide data"
mimic node called "DRUG1n mimic"
generate node called "Synthetic DRUG1n data"
evaluate node called "DRUG1n quality"
export node called "Save to csv"