Filtre de données - Sélection de tout lorsqu'il n'y a pas de valeur alternative à l'instruction Where n'est pas égale (= !)Vous cherchez de l'aide pour comprendre le comportement ou une meilleure façon de scripter cela.
Écrire un script pour intercepter les exceptions dans les données. Lorsque la version est GP mais qu'active est pas X.
Names Default To Here( 1 );
dt = Current Data Table();
df = dt << Data Filter(
Location( {138, 181} ),
Add Filter(
columns( :Active, :Version ),
Where( :Active != "X" ),
Where( :Version == "GP" )
)
);Ensuite, le reste du script sous-ensemble ces données et crée un tableau à partir de ce sous-ensemble.
Le problème que je rencontre est lorsque toutes les lignes ont Active == X.Le filtre sélectionne toutes les lignes.Je suppose que c'est parce qu'il ne trouve pas d'alternative à X qui est vide (qui ne manque pas).Quelle est la meilleure façon de gérer cela ?
Résultat du code ci-dessus :

Re: Filtre de données - Tout sélectionner lorsqu'il n'y a pas de valeur alternative à l'instruction Where n'est pas égale (= !)Note rapide.J'ai utilisé votre suggestion pour m'aider avec une analyse. Passons au suivant.C'est pourquoi le codage ne correspond pas à la capture d'écran.
Re: Filtre de données - Tout sélectionner lorsqu'il n'y a pas de valeur alternative à l'instruction Where n'est pas égale (= !)C'est très utile. Merci.
J'ai fini par faire quelque chose comme ce qui suit.
Question de script : existe-t-il une meilleure façon de procéder ?Comme dans avais-je besoin de l'intermédiaire CLE_TL ?Ou peut-il simplement s'agir dt << selectwhere << sous-ensemble sur une ligne ?Y a-t-il un avantage à créer cet objet CLE_TL ?
names default to here(1);
dt = current data table();
shipPlant = "CLE";
shipMode = "truckloads";
subsetTable = "CLE_truckloads";
//filter
CLE_TL = dt << select where(:TransportPlanningPt == shipPlant & :MODE == shipMode);
//subset
CLE_TL << Subset(
Output Table( subsetTable ),
Selected Rows( 1 ),
Selected columns only( 0 )
);
Re: Filtre de données - Tout sélectionner lorsqu'il n'y a pas de valeur alternative à l'instruction Where n'est pas égale (= !)OK, cela facilite en fait votre écriture de scripts. Aucune interaction humaine embêtante impliquée !
Le message de la table de données << Sélectionnez Où (expression booléenne) fera tout pour vous. L'expression booléenne peut être simple (par exemple :Âge == 12 ) ou complexe (par exemple, :Âge == 12 & :Sexe == "F" ). Toute fonction qui renvoie un résultat pouvant être interprété comme un booléen (c'est-à-dire que 0 est faux et non 0 est vrai) fonctionnera. Cette exigence signifie que vous pouvez utiliser des fonctions de requête telles que Contient (colonne source, "target" ) pour des cibles littérales ou Regex (colonne source, regex) pour les modèles.
Après avoir sélectionné les lignes souhaitées, envoyez le << Sous-ensemble() message pour extraire les données.
Re: Filtre de données - Tout sélectionner lorsqu'il n'y a pas de valeur alternative à l'instruction Where n'est pas égale (= !)Pas besoin d’interface pour l’utilisateur.Juste un novice volant du code après chaque étape effectuée manuellement, puis construisant le code à partir de ces étapes.Je suppose qu'il existe une meilleure façon de sélectionner le sous-ensemble et de créer la table des sous-ensembles ?
Re: Filtre de données - Tout sélectionner lorsqu'il n'y a pas de valeur alternative à l'instruction Where n'est pas égale (= !)Je vérifie simplement : pourquoi utilisez-vous un objet filtre de données ? L’utilisateur doit-il interagir pour le bien du script ?
Re: Filtre de données - Tout sélectionner lorsqu'il n'y a pas de valeur alternative à l'instruction Where n'est pas égale (= !)Vous pouvez d’abord vérifier si la condition peut être remplie :
target rows = Current Data Table() << Get Rows Where( :Active != "X" );
If( N Row( target Rows ),
...
);