Supposons qu'en JSL je crée un tableau associatif, puis que je crée une nouvelle colonne dans une table de données avec une formule qui utilise ce tableau pour remplir la colonne en fonction des entrées d'une autre colonne.
Lorsque la table de données est enregistrée, elle semble conserver ce tableau associatif quelque part : où est-il stocké ? Dans le tableau de données quelque part ? Existe-t-il un moyen de le voir ou de le modifier plus tard ?
Le tableau associatif est enregistré dans la mémoire RAM jusqu'à ce que la variable soit effacée, ou que l'espace de noms dans lequel il se trouve soit fermé ou que la session JMP soit fermée.Ce que vous voyez peut-être et qui vous fait penser que le tableau est en cours de sauvegarde, c'est plusieurs choses.
- Lorsque vous ouvrez le tableau de données, les valeurs de la colonne de formule qui existaient lors de l'enregistrement du tableau de données s'affichent.La formule n'est pas exécutée pour y parvenir, il apparaît que les dernières valeurs sont enregistrées avec la colonne.Mais si vous essayez d’ajouter une nouvelle ligne au tableau de données, ce qui forcera l’exécution de la formule, une erreur s’affichera.
- Si vous enregistrez et fermez la table de données, puis l'ouvrez à nouveau, sans fermer la session JMP, la formule peut trouver la matrice restant dans la mémoire RAM.Ainsi, cela permet à la formule de s’exécuter.
La façon dont je gère généralement les formules qui nécessitent des éléments tels qu'un tableau associatif consiste à ajouter la création du tableau dans la formule, en l'exécutant uniquement lors de la première exécution de la formule.Un exemple très simple serait :
Si le tableau associatif est créé avec cette formule.
myArray = associative array(:age << get values);
Ensuite, pour le faire fonctionner dans une formule, il vous suffit de spécifier d'exécuter ce code uniquement lorsque la formule exécute la première ligne, le rendant ainsi disponible pour toutes les lignes.
If( Row() == 1,
myArray = Associative Array( :age << get values )
);
Avec ce JSL comme premier élément de votre formule, la formule fonctionnera.