Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > ODS et reporting
ODS et reporting Forum d'entraide sur les fonctionnalités de reporting de SAS : gérer les sorties et graphiques de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/06/2011, 15h20   #1
Membre à l'essai
 
Inscription : novembre 2008
Messages : 41
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2008
Messages : 41
Points : 22
Points : 22
Par défaut proc Tabulate : nombre limites de croisement autorisé par SAS

Bonjour à tous,

J'ai l'erreur suivante qui s'affiche dans ma log suite à l'exécution d'une proc TABULATE.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
 
15         proc tabulate DATA=t_donnees;
16         		var nb_env_concernees;
17         		class identifiant code_tranche lb_modele pages;
18         		/*classlev occurence /style=[foreground=#6699FF];*/
19         		TABLE identifiant='Identifiant technique'
20         						*(code_tranche='Tranche postale calculée')
21         					    *(lb_modele="Modèle"*pages='Tranche postale du courrier'),
22         		nb_env_concernees=''*
23         	( n="Nb d'occurences de ce courrier avec cette tranche postale dans ce type d'enveloppe"/**
24         	%FMT_STP(,0)*/ mean="Nb d'enveloppes concernées(*)"/** %FMT_STP(,0)*/);
25         run;
 
ERROR: La limite de 2147483647 interactions possibles dans un croisement est dépassée dans l'instruction en ligne 19.
Je pense que la TABULATE doit croiser toutes les valeurs possibles prises par chaque ligne de mon tableau, qui du coup doit dépasser le nombre limites de croisement autorisé par SAS. Existerait-il une option pour contourner ce problème ?

Je pourrais bien sur utiliser la proc report, mais j'ai pour contrainte d'utiliser la TABULATE...

Merci d'avance pour vos retours !

Sylvain.
maverik40 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 15h26   #2
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
regarde du côté de la proc FREQ si des tableaux à deux entrées ne te conviennent pas. La TABULATE est plutôt destinée à présenter des tableaux de synthèse de ce type.
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 15h42   #3
Membre actif
 
Inscription : mars 2003
Messages : 149
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 149
Points : 162
Points : 162
Salut Sylvain,

J'avais eu le même problème :

J'avais dans un 1er temps 3 variables class, qui représentaient des libellés (Région, département, Produit).
Quand mon client m'avait demandé de rajouter les codes associés, je me suis retrouvé avec le même souci que le tien, alors que je n'avais pas plus de lignes en sortie .

Je ne vois pas pourquoi on t'interdirait la proc report (qui dans mon cas avait résolu mon pb). A moins que ce ne soit pour un projet d'étude.

Sinon tes données sont elles aggrégées au maximum ? Mais bon, je ne pense pas que cela change qqch au final.
la2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 16h01   #4
Membre à l'essai
 
Inscription : novembre 2008
Messages : 41
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2008
Messages : 41
Points : 22
Points : 22
Le client a des normes au niveau de ses restitutions, et il a signé les maquettes qu'on lui a proposé dans les specs. Et comme les maquettes ont été construites à partir des proc tabulate ...

Après si il est possible d'adapter les proc report et Freq de tel sorte à avoir la même restit que la tabulate ?!
maverik40 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 16h19   #5
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
Sylvain,
les specs étant ce qu'elles sont je comprends ton soucis mais ici ce n'est qu'un tableau croisé avec N variables.
Tu peux y mettre des LABELS. Essaie et dit nous ce qui coince.
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 16h20   #6
Membre actif
 
Inscription : mars 2003
Messages : 149
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 149
Points : 162
Points : 162
Je pense que ce que tu peux faire avec la proc tabulate tu dois pouvoir le faire avec la proc report.
la2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 16h25   #7
Membre à l'essai
 
Inscription : novembre 2008
Messages : 41
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2008
Messages : 41
Points : 22
Points : 22
Datametric => j'ai un peu de mal à comprendre ton raisonnement... Désolé.
Le code de ma proc tabulate est dans mon premier post, tous les libellés y sont présent.


la2002 => je pense aussi, je vais essayer d'approfondir sur cette piste.
maverik40 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 16h30   #8
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
Ah.
Je dis juste que tu peux faire une proc FREQ sans te casser la tête. je ne vois pas dans ton code quelque chose qui n'amènerait pas le même résultat.
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 16h33   #9
Membre actif
 
Inscription : mars 2003
Messages : 149
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 149
Points : 162
Points : 162
Je pense que c'est l'instruction mean="Nb d'enveloppes concernées qui l'oblige à passer par une autre proc.

De plus, si il veut faire du reporting, je ne suis pas sur que la proc freq permet de styler des lignes (Il a mis en commentaires une instruction foreground=#6699FF).
la2002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 16h45   #10
Membre à l'essai
 
Inscription : novembre 2008
Messages : 41
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2008
Messages : 41
Points : 22
Points : 22
Que donnerait dans ce cas le code de la proc freq stp ? je ne suis pas très à l'aise avec sa syntaxe.

Le commentaire dans le code n'est pas à prendre en compte. Par contre j'ai essayé sans l'instruction MEAN, et le résultat est le même. Si j'enlève la variable "pages", le code fonctionne correctement... quand même bizarre ce comportement.

Le problème aussi c'est que l'affichage se fait sur le portail SAS avec un style prédéfinie par le client qui n'est pas dans les styles par défaut de SAS. Et je n'aurais pas la possibilité de passer trop de temps à l'adaptation du code... En fait j'ai jusqu'à demain midi ! ;-)
maverik40 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/06/2011, 20h50   #11
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
pour la proc FREQ :

Code :
1
2
3
4
5
proc FREQ DATA=t_donnees;
TABLE identifiant*code_tranche*lb_modele*pages*nb_env_concernees;
LABEL  identifiant='Identifiant technique' code_tranche='Tranche postale calculée' lb_modele="Modèle" pages='Tranche postale du courrier' nb_env_concernees='Nb d'occurences de ce courrier avec cette tranche postale dans ce type d'enveloppe'
;
run;
ensuite tu as deux possibilités pour les styles. soit tu génères une table en sortie de la FREQ ( TABLE identifiant*code_tranche*lb_modele*pages*nb_env_concernees/ out=table
et tu fais une proc PRINT dans laquelle tu peux appliquer des styles.
Autrement, tu peux utiliser une REPORT sur cette table en sortie pour les styles.

Au fait, tu as regardé si SUMSIZE=MAX ne te permet pas de supprimer le message d'erreur ?
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 07h11   #12
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Citation:
Envoyé par maverik40 Voir le message
Par contre j'ai essayé sans l'instruction MEAN, et le résultat est le même. Si j'enlève la variable "pages", le code fonctionne correctement... quand même bizarre ce comportement.
La logique de TABULATE est la suivante : avant d'attaquer l'instruction TABLE pour connaître la disposition du tableau à produire, on préconstruit des calculs avec CLASS et VAR, un peu comme pour constituer un cube OLAP.
Le message que tu as provient de cette étape-là. Donc changer des choses dans TABLE n'y fera rien.
La variable PAGES change la donne, car elle n'est utilisée nulle par dans tes tableaux. Or, avant de le savoir, SAS veut l'utiliser dans ses calculs à l'avance et s'aperçoit que ça fait exploser le nombre de croisements.
Si tu n'as effectivement pas besoin de PAGES, tu la vires du code et tout va bien. Si tu en as besoin, comme je le suppose vu son nom, pour faire autant de tableaux qu'elle a de modalités, tu la vires de CLASS et tu en fais un BY.
Bon courage.
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/06/2011, 08h54   #13
Membre à l'essai
 
Inscription : novembre 2008
Messages : 41
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2008
Messages : 41
Points : 22
Points : 22
Bonjour Messieurs,

Tout d'abord merci pour vos réponses.
J'ai testé la proc freq qui ne fonctionne pas non plus dans mon cas, avec comme insulte dans la log "ERROR: La table indiquée est trop grande pour être traitée."
L'option SUMSIZE n'y change rien non plus, j'ai les mêmes erreurs tant pour la tabulate que pour la freq.

En ce qui concerne l'utilisation du by, la tabulae s'exécute correctement, mais le résultat ne convient pas malheureusement...

Je vous remercie quand même pour votre aide toujours aussi précieuse, et vais tenter d'adapter la REPORT afin d'approcher au max la sortie de la tabulate.

Bonne journée à vous et à bientôt sur d'autres sujets !

Sylvain.
maverik40 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h16.


 
 
 
 
Partenaires

Hébergement Web