Exists - fonction de script
Exists() détermine si une valeur de champ donnée a déjà été chargée dans le champ du script de chargement. La fonction renvoie TRUE ou FALSE. Elle peut donc être utilisée dans la clause where d'une instruction LOAD ou d'une fonction IF.
Exists(field_name [, expr] )
Type de données renvoyé : booléen
Argument | Description |
---|---|
field_name |
Nom du champ dans lequel vous souhaitez rechercher une valeur. Vous pouvez utiliser un nom de champ explicite sans guillemets. Le champ doit déjà avoir été chargé par le script. Cela signifie que vous ne pouvez pas faire référence à un champ chargé dans une clause plus loin dans le script. |
expr |
Valeur dont vous souhaitez vérifier l'existence. Vous pouvez utiliser une valeur explicite ou une expression faisant référence à un ou plusieurs champs de l'instruction LOAD active. Note InformationsVous ne pouvez pas faire référence à des champs non inclus dans l'instruction LOAD active.
Cet argument est facultatif. Si vous l'omettez, la fonction vérifiera si la valeur de field_name de l'enregistrement actif existe déjà. |
Exists (Employee)
Renvoie -1 (True) si la valeur du champ Employee figurant dans l'enregistrement actif existe déjà dans un enregistrement lu précédemment et contenant ce champ.
Exists(Employee, 'Bill')
Renvoie -1 (True) si la valeur de champ 'Bill' se trouve dans le contenu actif du champ Employee.
Les instructions Exists (Employee, Employee) et Exists (Employee) sont équivalentes.
Ce script génère dans le modèle de données une table intitulée EmployeeAddresses, que vous pouvez afficher comme graphique de type table à l'aide des dimensions Employee et Address
La clause where : where Exists (Employee, Name) signifie que seuls les noms issus de la table Citizens figurant également dans Employees sont chargés dans la nouvelle table. Pour éviter toute confusion, l'instruction Drop supprime les tables temporaires Employees et Citizens.
Employee | Address |
---|---|
Bill | New York |
John | Miami |
Steve | Chicago |
Remplacement de l'instruction figurant dans l'échantillon de données de l'exemple précédent qui crée la table EmployeeAddresses par ce qui suit, en utilisant where not Exists.
NonEmployee:
Load Name as Employee, Address Resident Citizens where not Exists (Employee, Name);
La clause comprend where comprend not : where not Exists (Employee, Name).
Cela signifie que seuls les noms issus de la table Citizensqui ne figurent pas dans Employees sont chargés dans la nouvelle table.
Notez qu'il existe deux valeurs pour Lucy dans la table Citizens, mais qu'une seule est incluse dans la table de résultats. Lorsque vous chargez la première ligne, la valeur est incluse dans la table de symboles Employee. Ainsi, lors du contrôle de la deuxième ligne, la valeur existe maintenant.
L'exemple suivant montre comment charger toutes les valeurs.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Pour pouvoir obtenir toutes les valeurs de Lucy, vous devez modifier deux éléments :
Ajoutez une instruction LOAD avant Employees, où vous remplacez Employee par Name.
Load Employee As Name, ID, Salary;
Remplacez la condition Where de Citizens par :
not Exists (Name, Employee).
Cela créera des tables de symboles différentes pour Name et pour Employee. Lors du contrôle de la deuxième ligne de Lucy, elle n'existe toujours pas dans Name.
Employee | Address |
---|---|
Mary | London |
Lucy | Madrid |
Lucy | Paris |
Données utilisées dans l'exemple :