Comment accélérer les opérations sur les tables de données (par exemple, empiler, diviser, ...) ?J'ai souvent besoin d'empiler de très grandes tables contenant des millions de lignes, d'effectuer une opération, puis de diviser la table.
Quelles sont les options pour accélérer tout cela, outre l'utilisation de tables de données « invisibles » dans le code JSL ?
Je connais la commande Begin/End Data Update , mais je ne suis pas sûr qu'elle soit pertinente ici ou qu'elle apporte une quelconque amélioration par rapport aux tables invisibles.
Automatisation et scriptageRe: Comment accélérer les opérations sur les tables de données (par exemple, empiler, diviser, ...) ?Les tables invisibles (ou privées) sont de bons points de départ, et ensuite cela dépend beaucoup de vos tables ; parfois, vous pourrez même éviter le split/stack.
Re: Comment accélérer les opérations sur les tables de données (par exemple, empiler, diviser, ...) ?Mon objectif est de fusionner les colonnes qui représentent la même valeur. J'ai joint un tableau d'exemple où les colonnes Âge, Poids et Taille sont réparties sur deux colonnes. Le but est de fusionner chaque paire de colonnes.
Au départ, j'empilais les colonnes, je découpais la partie pertinente (Âge/Poids/Taille) puis je les séparais à nouveau, mais cela pose problème avec les très grands tableaux de données.
Re: Comment accélérer les opérations sur les tables de données (par exemple, empiler, diviser, ...) ?
Avez-vous essayé Query Builder ?
Désolé, j'avais mal compris la question. Je ne pense pas que Query Builder soit utile ici.
Re: Comment accélérer les opérations sur les tables de données (par exemple, empiler, diviser, ...) ?Names Default To Here(1);
dt = Open("$DOWNLOADS/example_input.jmp");
valid_cols = 4;
m = dt[0,0];
r = Transform Each({vals}, m,
nonmissing = Where(!IsMissing(vals));
vals[nonmissing];
);
dt[0, 1::valid_cols] = r;
dt << Delete Columns(valid_cols::N Cols(dt));
Re: Comment accélérer les opérations sur les tables de données (par exemple, empiler, diviser, ...) ?Et si les données ressemblent vraiment à ça…
- Sélectionnez vos colonnes « en double »
- Créez un sous-ensemble avec ces données + une colonne Id (vous devrez peut-être en créer une si vous n'en avez pas déjà une).
- Supprimer les lignes contenant des valeurs manquantes
- Renommez vos colonnes pour qu'elles soient identiques dans les deux tables (+ supprimez les colonnes superflues).
- Utilisez la fonction UPDATE sur la table d'origine avec la colonne ID.
- Fermer le sous-ensemble