Je cherche un moyen d'écrire fonction sélection dans KDB de telle sorte que les phrases where ne s'appliquent que si la colonne existe (afin d'éviter les erreurs). Si la colonne n'existe pas, elle est définie par défaut sur true.KDB Appliquer où phrase seulement si la colonne existe
J'ai essayé, mais ça n'a pas
enlist(|;enlist(in;`colname;key flip table);enlist(in;`colname;filteredValues[`colname]));
J'ai essayé d'écrire une simple expression booléenne et utiliser Parse pour obtenir ma forme fonctionnelle
(table[`colname] in values)|(not `colname in key flip table)
Mais KDB n'a pas de court circuit donc l'expression de gauche est encore évaluée malgré l'expression de droite évaluant à vrai. Cela a provoqué une sortie étrange boolean$()
qui est une liste de booléens tous évaluant à faux 0b
Toute aide est appréciée. Merci!
EDIT 1: Je dois rejoindre une série de conditions avec le paramètre spécifié dans le dictionnaire filters
cond,:(,/) {[l;k] enlist(in;k;enlist l[k])}[filters]'[a:(key filters)]
Puis je passe cette cond
sur et il est exécuté sur quelques différentes sélections sur différentes tables. Comment puis-je m'assurer que toute expression conditionnelle que je mets à la place de enlist(in;k;enlist l[k]
ne sera évaluée que lorsque l'instruction select sera exécutée.
Merci beaucoup, votre code ne fonctionne pas pour moi. Cependant, il y a une autre partie à mon problème. S'il vous plaît jeter un oeil à mon édition et conseiller. Merci encore – KeenSeeker99
Toutes mes excuses pour le retard, mais ont ajouté une réponse étendue pour répondre à la deuxième partie de votre question, espérons que cela aide! –