|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : mai 2008 Messages : 101 ![]() |
Bonjour!!
j'utilise une base de données avec plusieurs tables! pour réaliser certains calculs de parèmètres statistques j'ai réalisé des macros utilisant des boucles imbriquées ( comme indices de parcours des tables) je me suis rendu compte en faisant un check sur ces tables que, certains attributs ne prennent pas des valeurs successives: je m'explique: attribut1 (1,2,3,8,25,....) et donc la valeur de l'indice exemple "j" de parcours ne correspond pas à la valeur de l'attribut: première solution changer les valeurs de l'attribut sous forme de suite 1,2,3,... mais ce travail est très lourd sachant que j'ai beaucoup des tables énormes Si quelqu'un a une illumination ça sera cool |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() |
Tu ne peux gérer un autre compteur (en plus de ceux de tes boucles, j'imagine que tu utilises les valeurs de ces compteurs dans tes tables) qui ne sera pas impacté par les tests et qui prendra les bonnes valeurs?
|
|
|
00
|
|
|
#3 |
|
Futur Membre du Club
![]() Inscription : mai 2008 Messages : 101 ![]() |
Ces indices de parcours servent de lien pour tester des attributs tables:
%do proc sql noprint; select count(distinct Idproduit) into: nbr_prod from &data where iddescripteur=&d quit; ...................................................... |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() |
Je ne vois pas très bien le problème. Est ce que c'est possible d'expliquer un peut plus.
Merci |
|
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : mai 2008 Messages : 101 ![]() |
DONNEES( ATT1,ATT2,ATT,ATT4)
att1........att2 att3 att4 1........1 1........2 1........4 1........5 1........6 1 ........7 2........1 2........2 2........3 2........4 2........5 2........6 2........7 4 ........1 4........2 4........3 . . . . . . je donne un apperçu sur la table sur laquelle s'effectue les calculs. je dois effectuer le calcul sur chaque bloc de valeurs de att1( quand att1 =1,2,4,....). pour chaque bloc att1: les autres boucles imbriquées se font alors pour traiter les valeurs d'attributs 2,3,4,5 le HIC est que dès que j'arrive à la valeur de indice j=3 donc ne concorde pas car il n'y a pas de valeur 3 pour att1: %do j=1 %to &nbr_desc; proc sql noprint; select count(distinct att2) into: nbr_prod from &data where att1=&j; quit; ..............................................etc et la tt les résultats sont faux!!!!!!!!!!!!!! j'espère que j'ai expliqué mon pbm |
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() ![]() |
Je te propose de créer un vecteur qui contient les valeurs (attr1) distinct de table.
ta boucle ne change pas. j'imagine que le i doit être l'indice de la boucle au dessus (prends les valeurs de la colonne attr1) Code :
|
||
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() Inscription : avril 2008 Messages : 233 ![]() |
Tu peux préciser quels sont les calculs que tu fais ? Parce que pour différents calculs on peut avoir des différentes solutions.
Par exemple, si tes calculs sont assez simples (i.e. réalisables avec des fonctions d'agrégation standards), tu n'a qu'à faire une requête SQL avec des group by. Si les calculs sont un peu plus compliqués, tu peut trier ta table, faire une étape data avec plein de vérifications pour détecter le passage d'un segment à l'autre (par exemple, la modification de valeur de att1) pour lancer tes calculs et - éventuellement - les sortir dans une table. Bref, un peu plus d'information, stp. |
|
|
00
|
|
|
#8 |
|
Membre confirmé
![]() Inscription : avril 2008 Messages : 233 ![]() |
|
|
|
00
|
|
|
#9 |
|
Futur Membre du Club
![]() Inscription : mai 2008 Messages : 101 ![]() |
Merci, je vais effectuer les changements, et je te tienderai au courant
|
|
|
00
|
|
|
#10 |
|
Futur Membre du Club
![]() Inscription : mai 2008 Messages : 101 ![]() |
ça marche super bienmerci bcp!!! la je pourrai optimiser ma macro sachant qu'elle doit traiter 600 jeux de données, c un grand saut vers la résolution de mon sujet. MERCI |
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() ![]() |
Clique sur RESOLU
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com