Exemple : zone dérivée permanente
Un processus Sélection configuré pour choisir les ID en fonction d'une contrainte sur une zone dérivée peut être connectée à un processus d'instantané pour générer les enregistrements sélectionnés incluant cette zone dérivée. Si vous marquez la zone dérivée pour qu'elle soit permanente, la valeur calculée est transmise du processus Sélection au processus d'instantané.
Une autre utilisation des zones dérivées permanentes consiste à les employer avec des zones dérivées de type agrégat (par exemple, AVG ou GROUPBY). Ces zones agrégées sont calculées en fonction des diverses lignes de données figurant dans la cible en cours, afin que la valeur de ces zones agrégées soit changée en même temps que le contenu de la cible. Les zones dérivées permanentes vous permettent de conserver la valeur calculée d'origine, puis de la transmettre à d'autres processus. Si vous choisissez plutôt de recalculer la zone dérivée, la valeur est calculée en fonction des enregistrements restants dans la cible en cours.
Lorsqu'un processus comporte plusieurs sources, comme un processus d'instantané utilisant des sources provenant de deux processus Sélection, tous les zones dérivées permanentes sont mises à la disposition des processus en aval.
Si une zone dérivée permanent n'est pas disponible dans tous les processus Sélection entrants et qu'elle est incluse dans la source d'un processus d'instantané, ce dernier affiche une valeur NULL pour cette zone dérivée permanente dans toutes les lignes générées par les processus Sélection qui ne contiennent pas cette zone.
Si une zone dérivée permanente n'est pas disponible dans tous les processus Sélection entrants et si vous l'utilisez pour définir un processus Segment, ce dernier comporte des segments vides pour les processus Sélection qui ne contiennent pas cette zone.
Le processus Segment n'est pas configuré si vous tentez de définir un segment avec une expression utilisant plusieurs zones dérivées permanentes qui ne sont pas disponibles dans tous les processus Sélection.
Les instructions suivantes s'appliquent aux zones dérivées permanentes :
*
*
*
*
*
*
Toutefois, lorsque vous utilisez une zone dérivée basée sur une zone table, le résultat inclut indirectement une zone table. Par conséquent, il y aura un enregistrement pour chaque instance d'une valeur d'ID. (En d'autres termes, si la valeur d'ID revient sept fois dans les données, sept enregistrements seront générés.)
Les zones dérivées permanentes ne stockent qu'une seule valeur pour chaque ID audience, qui est sélectionnée de manière aléatoire parmi les valeurs disponibles. En d'autres termes, lorsque vous travaillez sur des données non normalisées, vous devez faire appel à la fonction macro GROUPBY pour obtenir le comportement souhaité.
Supposons que vous souhaitiez trouver dans la table des transactions d'achat le montant de la transaction en euros la plus élevée effectuée par un client et l'enregistrer sous forme de zone dérivée permanente pour un traitement en aval. Vous pouvez créer une zone dérivée (puis en faire une zone dérivée permanent) comme suit :
Highest_purchase_amount = groupby(CID, maxof, Purch_Amt)
Cela donnerait les calculs suivants à partir des transactions d'achat non normalisées illustrées ci-après :
Lorsque la zone dérivée est permanente, il choisit de façon aléatoire une valeur (toutes sont égales à 300 €) et rend cette valeur de 300 € permanente pour le client A.
Un deuxième exemple moins évident peut consister à sélectionner un score de modèle prédictif dans une table d'évaluation pour un modèle X donné. Dans ce cas, la zone dérivée peut se présenter comme suit :
ModelX_score = groupby(CID, maxof, if(Model = 'X', 1, 0), Score)
Et les données peuvent prendre la forme suivante :
Si vous rendez permanent la zone dérivée ModelX_Score, la valeur de score 80 souhaitée est fournie. L'instruction suivante est incorrecte pour créer une zone dérivée :
Bad_ModelX_score = if(Model = 'X', Score, NULL)
Les données suivantes seraient alors générées :
Ensuite, lorsque vous rendez permanent la zone dérivée Bad_ModelX_score, la valeur permanente peut être NULL ou 80. Si vous utilisez des données non normalisées et que les valeurs de la zone dérivée ne sont pas toutes identiques, n'importe quelle valeur peut être renvoyée si vous rendez permanent cette zone dérivée. Par exemple, le fait de définir Derived_field_Score = SCORE et de le rendre permanent pourrait renvoyer la valeur 57, 72 ou 80 pour le client A. Pour être sûr d'obtenir le comportement voulu, vous devez utiliser la macro GROUPBY sur l'ID client et vous assurer que la valeur de la zone dérivée est identique pour toutes les données de ce client.