Utilisez Loc Sorted pour la correspondance exacte entre les tables - ou un autre outil?Un client souhaite configurer une formule dans une colonne similaire à VLOOKUP (excel). La fonction produirait le même résultat que l'utilisation de la jointure de table, mais le client a des raisons légitimes de le faire avec une formule au lieu d'une jointure.
Par exemple, sa table de base pourrait ressembler à ceci:

Et la deuxième table de référence pourrait être la suivante:

Nous pouvons affecter cette formule à la colonne "Sortie" de la table de base:
dtRefTable = Table de données ("RefTable");
KeyBracket = Loc Sorted (dtRefTable: Key << getvalues,: Key);
dtRefTable: SpecificInfo [KeyBracket];
Lorsque la formule s'exécute, la table de base change pour ressembler à ceci:

Le problème est que dans la table de base, la clé pour la ligne 2 est 2401. Il n'y a pas de correspondance pour 2401 dans la table de références. Par conséquent, Loc trié arrondit et sélectionne la valeur immédiatement inférieure de Key, qui (dans ce cas) est Key = 2400 et sélectionne 111 pour la sortie.
Ce que le client souhaite, c'est que cette cellule (colonne de sortie, ligne 2) soit "manquante" ou toute autre valeur pouvant être identifiée comme "pas de correspondance trouvée" via une instruction conditionnelle. Et bien sûr, il n’est pas aussi simple que de simplement dire "si Key = 2401 définit la cellule comme manquante", car il existe de nombreuses possibilités dans les données réelles pour les correspondances et les non correspondances.
S o La table de base idéale ressemblerait à:

Comment pouvons-nous accomplir cela? Existe-t-il une autre fonction (plutôt que Loc Sorted) qui fonctionnerait entre des tables comme celle-ci?
Merci,
Jerry
Re: Utiliser Loc trié pour la correspondance exacte entre les tables - ou un autre outil?Agréable! Merci Brady et à tous ceux qui ont répondu. Je pense que le client sera content.
JSL continue de m'étonner avec toutes les fonctionnalités disponibles. Je ne connaissais pas du tout la fonction "Essayer" et je n'avais pas utilisé "Comme liste". Très cool et très apprécié!
Jerry
Re: Utiliser Loc trié pour la correspondance exacte entre les tables - ou un autre outil?J'aime mieux ça. Plus court et plus élégant.
Re: Utiliser Loc trié pour la correspondance exacte entre les tables - ou un autre outil?
Voici une autre option.
dt = Data Table( "reftable" );
Try( dt:specificInfo[Loc( As List( dt:key << getvalues ), :Key )[1]], . );
Re: Utiliser Loc trié pour la correspondance exacte entre les tables - ou un autre outil?Cela devrait fonctionner tant que les valeurs dans les colonnes Clé sont numériques et que vous avez défini votre variable de référence de table. La colonne de référence que vous aviez dans votre exemple ne semble pas fonctionner dans les formules de colonne.
KeyBracket = Loc(Column(dtRefTable,"Key") << getvalues == :Key);
If(N Row(KeyBracket > 0,
Column(dtRefTable,"SpecificInfo")[KeyBracket[1]],
.
);
Pas sûr de ce que je ressens à propos d'un code comme celui-ci dans une formule de table. Cependant, il évite de passer en revue toutes les valeurs de clé de la table cible. Si vos valeurs de clé sont des caractères, remplacez le "==" par une virgule dans la commande Loc et inversez l'ordre des arguments.
Re: Utiliser Loc trié pour la correspondance exacte entre les tables - ou un autre outil?Ouais - Je veux dire, tu pourrais probablement faire ça avec des formules ... S'il y a des problèmes de contrôle de table, alors ce qui pourrait être une meilleure route serait quelque chose impliquant JMP Table Query Builder. Ils pourraient ensuite enregistrer un flux de travail normalisé sous forme de fichier QB et créer une table avec des fonctionnalités de mise à jour. L'avantage QB est que le code est déjà formaté et construit par JMP.Re: Utiliser Loc trié pour la correspondance exacte entre les tables - ou un autre outil?Les jointures (normales ou virtuelles) fonctionnent effectivement et je les avais initialement suggérées au client. Cependant, ils ont des besoins internes (plusieurs personnes accédant à des fichiers de données sécurisés - je ne comprends pas tous les tenants et les aboutissants) qui les obligent à le faire avec des formules au lieu de jointures. Pardon!
Re: Utiliser Loc trié pour la correspondance exacte entre les tables - ou un autre outil?C'est ce que je suggérerais aussi. Attention, ne fermez pas la table référencée avant d'enregistrer la table contenant les formules. Si vous le faites, les formules seront supprimées!
Re: Utiliser Loc trié pour la correspondance exacte entre les tables - ou un autre outil?Avez-vous essayé les jointures virtuelles?
M