Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
stephane_kosior
Creator
Creator

Problème 'Une ou plusieurs boucles ...'

Bonjour,

J'ai besoin d'un coup de main pour me sortir de ce problème de boucles   ... à chaque fois que je lance le rechargement j'ai un message d'erreur

Je vous expose mon projet :

Je dispose de 5 tables dont :

* 1 table 'tblAnalytic' qui récupère les données comptables (requête SQL) :

* 1 table 'tblBudget' qui récupère les données Excel du budget :

*3 tables de mapping :

Si vous pouviez me donner un coup de main ce serait formidable ...

Merci Stéphane

8 Replies
Anonymous
Not applicable

Salut,

Tu dois revoir ton modèle de données.

Tu as des problèmes de boucles mais aussi de clés synthétiques.

Principe de QlikView: l'association entre deux table ne doit se faire que sur un champ pour éviter les clés synthétiques.

Or dans ton modèle plusieurs de tes tables sont reliés par 2 champs (par exemple: FY,Date)

La solution:

- soit il suffit d'associer avec un seul champ, dans ce cas tu renommes le deuxième champ en préfixant par le nom de la table par exemple: FY as tblAnalytic.FY

- soit il faut que les deux champs soit associés pour lier les tables, dans ce cas tu créés un nouveau champs concaténant les deux autres et l'association se fera sur ce nouveau champ. Bien sûr tu renommes les deux champs d'origine sinon la jointure va se faire sur les 3 champs...

Par exemple:

dans ta table tblAnalytic:

FY&Date as KEY_FY_DATE,

FY as tblAnalytic.FY,

Date as tblAnalytic.Date

dans ta tblBudget:

FY&Date as KEY_FY_DATE,

FY as tblBudget.FY,

Date as tblBudget.Date

Concernant ton problème de boucle, repère où se trouve la boucle et coupe l'association entre deux tables là où tu le peux en renommant le champs à ne pas associer pour ne pas créer de boucle.

stephane_kosior
Creator
Creator
Author

Merci je n'ai effectivement plus de boucles cependant lorsque je fais une sélection de mois (provenant de la table tblAnalytic), les calculs ne sont pas sur la table tblBudget

Si aucune sélection de mois, je n'ai pas de souci.

Par contre, si je sélectionne un mois précis (de la table tblAnalytic), je n'ai plus le budget ??

une idée ??

Merci encore. Votre explication m'a permis de comprendre les problèmes de boucles !

Merci

Stéphane

Anonymous
Not applicable

Tout dépend du modéle de données encore une fois.

Si l'association a été faite sur le champs mois alors ça devrait marcher mais vu le problème que vous décrivez je pense que ce n'est pas le cas justement.

Si vous souhaitez que l'association soit faite sur la date et un autre champ en commun, il faudra créer une clé avec la concaténation de ces deux champs et ensuite créer une table pivot qui va réccupérer cette clé provenant des deux table et en extraire le champ date.

Les graphe auront alors pour dimension ce champ date réccupéré à partir de la table pivot qui contiendra donc les dates provenant des deux tables

Un modèle qui ressemble à ça:

exemple.JPG

stephane_kosior
Creator
Creator
Author

ok je comprends mais comment écrire ça dans le script :

Merci

Anonymous
Not applicable

exactement comme dans le schéma:

FY&' - '&Date as KEY_FY_Date

et subfield(KEY_FY_Date,' - ',2) as Date

Not applicable

Bonjour,

Je vous conseille egalement d'utiliser les fonctions QUALIFY et UNQUALIFY.

Cela aide beaucoup!

flochi75
Creator III
Creator III

bonjour Stéphane,

toutes ce réponses sont sans doute correcte, mais quand je suis confronté à ce pb, je fais en sorte qu'une clé ne soit présente que dans 2 tables et je fabrique d'autres clés (même champ mais nom différent) pour lier à l'une de ces tables une troisième table, et ainsi de suite.

par ex dans ton cas : le champ "Date"

dans CommonCalendar : Date as @CLE_DATE_CALANA,

                                          Date as DATE_CALENDAR,

dans TblAnalytic : Date as @CLE_DATE_CALANA,

                          Date as @CLE_DATE_ANABUD,

                          Date as DATE_ANALYTIC,

dans tblBudget : Date as @CLE_DATE_ANABUD,

                             Date as DATE_BUDGET,

idem pour FY entre tblAnalytic et tblBudget.

c'est assez fastidieux mais boucle par boucle tu fais le ménage.

Je conseille juste comme montré au dessus de conserver tous tes champs initiaux en les renommant (notamment pour contrôle de cohérence)

Je ne sais pas si j'ai été assez clair, et je ne sais pas non plus pour les autres tables "mapping" et "BFC" quels sont liens hiérarchiques...

Florent

flochi75
Creator III
Creator III

ce qui revient à la proposition de sbobbyraj