Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Grouper des dimensions dès le chargement

Bonjour,

Je suis utilisateur récent de qlik sense et je suis confronté à la difficulté suivante. A partir d'un fichier Excel, j'effectue le chargement suivant :

[Disponibilité des ressources$]:

LOAD

                [Etablissement Fournisseur],

                [Spécificité],

                [Ressource affectée],

                [Me 01/06],

                [Je 02/06],

                [Ve 03/06],

                [Sa 04/06],

….

                [Je 30/06],

[Ve 01/07],

                [Commentaire affectation]

FROM [lib://01-Taux Saturation/ PlanDeCharge_Ressource_20160428_1133910.xls]

(biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);

Ma difficulté réside dans le fait que j'aimerais grouper puis additionner toutes les données des dimensions d'un même mois (exemple : [ **/06] ) dans une ou des nouvelles dimensions du type [Total Mois 06] et [Total Mois 07].

Est-ce que vous sauriez m'aider ?

Un grand merci d'avance pour votre aide.

Franck

1 Solution

Accepted Solutions
christophebrault
Specialist
Specialist

Bonjour,

Il semble que ta source de donnée soit "croisée". C'est à dire que la donnée que tu souhaite analyser est en colonne et non en ligne.

La dimension est la date et la valeur la quantité affectée.

Dans Qlik, il y a une fonction CrossTable() qui permet de décroiser un tableau de la manière suivante dans ton cas :

Crosstable(DATE,Quantité,3)

[Disponibilité des ressources$]:

LOAD

                [Etablissement Fournisseur],

                [Spécificité],

                [Ressource affectée],

                [Me 01/06],

                [Je 02/06],

                [Ve 03/06],

                [Sa 04/06],

….

                [Je 30/06],

[Ve 01/07]

FROM [lib://01-Taux Saturation/ PlanDeCharge_Ressource_20160428_1133910.xls]

(biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);

Le résultat à la fin du script sera un champs avec les dates et un autre avec les quantités.

J'ai enlever la colonne commentaire du chargement.

Une fois cette opération effectuée, il est possible d'additionner les quantités de chaque jours.

Est ce que je réponds au besoin ?

Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin

View solution in original post

7 Replies
christophebrault
Specialist
Specialist

Bonjour,

Il semble que ta source de donnée soit "croisée". C'est à dire que la donnée que tu souhaite analyser est en colonne et non en ligne.

La dimension est la date et la valeur la quantité affectée.

Dans Qlik, il y a une fonction CrossTable() qui permet de décroiser un tableau de la manière suivante dans ton cas :

Crosstable(DATE,Quantité,3)

[Disponibilité des ressources$]:

LOAD

                [Etablissement Fournisseur],

                [Spécificité],

                [Ressource affectée],

                [Me 01/06],

                [Je 02/06],

                [Ve 03/06],

                [Sa 04/06],

….

                [Je 30/06],

[Ve 01/07]

FROM [lib://01-Taux Saturation/ PlanDeCharge_Ressource_20160428_1133910.xls]

(biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);

Le résultat à la fin du script sera un champs avec les dates et un autre avec les quantités.

J'ai enlever la colonne commentaire du chargement.

Une fois cette opération effectuée, il est possible d'additionner les quantités de chaque jours.

Est ce que je réponds au besoin ?

Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin
Not applicable
Author

C'est parfait

Merci beaucoup beaucoup 😉

Très bonne journée.

Not applicable
Author

Re bonjour Christophe,


Je me permets une question complémentaire suite à la réponse précédente !


La réponse répond parfaitement à mes attentes mais cette solution ne me permet pas de garder la notion de date au sens de mois du calendrier.

Dans mes graphiques, j'utilise pour d'autres calcul une petite table simple à deux colonnes avec "N° de Mois" et "Nb de jours du Mois".

J'aurais besoin de pouvoir joindre cette petit table ou l'une de ces 2 colonnes à chacun des "Crosstable" que je vais générer mois après mois. 

Je pensais créer une nouvelle dimension lors de mon chargement "Crosstable" du type : [N° de Mois] = right (de tous les [****/06]. ensuite Qlik Sense aurait créé une clé entre les [N° de Mois] de toutes mes sources. ...

Malheureusement, malgré ma lecture intensive de l'aide et de nombreux essais,  je vois que mes lacunes en  SQL sont trop importantes pour être autonome dès le début 🙂

Sauriez vous m'aider ?

Encore merci d'avance

Franck

christophebrault
Specialist
Specialist

Il serait possible de créer cette table "calendrier" directement à partir de la précédente en faisant :

CALENDRIER:

LOAD DATE,

          Month(Date(Right(DATE,5),'DD/MM')) as Mois,        

          Num(Month(Date(Right(DATE,5),'DD/MM'))) as NoMois,

          Day(MonthEnd(Date(Right(DATE,5),'DD/MM'))) as NbJoursDuMois


Resident [Disponibilité des ressources$];

Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin
Not applicable
Author

Merci beaucoup mais....,

Ceci semble répondre à ma question à 100% mais je viens d'essayer et je n'ai pas de valeur !

Aurais-je fait une erreur dans la position de ce script ?

Je ne l'ai pas mis dans MAIN, mais je l'ai répété dans chacune des sections de chargement mensuelles comme ci-dessous. Je n'ai pas de message d'erreur. Je retrouve bien les dimensions "MOIS","NbJoursduMOIS" et "NoMOIS" dans la liste des dimensions mais elles sont vides quelques soient la sélection active ou pas ????

Crosstable(DATE,Qte_juin,22)

[Disponibilité des ressources$]:

LOAD

[ID Activité],

    [Structure Responsable],

    [Libellé Activité],

    [Jour/

Nuit],

    [N° Compte],

    [Statut],

    [Besoin capacité],

    [Code ligne],

    [Libellé ligne],

    [Libellé voie],

    [PK début],

    [PK fin],

    [Durée],

    [Début],

    [Fin],

    [Commentaire],

    [Type ressource],

    [Statut1],

    [Code

ressource] as [Code Ress],

    [Etablissement Fournisseur],

    [Spécificité],

    [Ressource affectée],

    [Me 01/06],

    [Je 02/06],

    [Ve 03/06],

    [Sa 04/06],

    [Di 05/06],

    [Lu 06/06],

    [Ma 07/06],

    [Me 08/06],

    [Je 09/06],

    [Ve 10/06],

    [Sa 11/06],

    [Di 12/06],

    [Lu 13/06],

    [Ma 14/06],

    [Me 15/06],

    [Je 16/06],

    [Ve 17/06],

    [Sa 18/06],

    [Di 19/06],

    [Lu 20/06],

    [Ma 21/06],

    [Me 22/06],

    [Je 23/06],

    [Ve 24/06],

    [Sa 25/06],

    [Di 26/06],

    [Lu 27/06],

    [Ma 28/06],

    [Me 29/06],

    [Je 30/06]

FROM [lib://01-Taux Saturation/PlanDeCharge_Ressource_20160428_1133910.xls]

(biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);

CALENDRIER:

LOAD DATE,

    Month(Date(right(DATE,5),'DD/MM')) as Mois,

    Num(Month(Date(right(DATE,5),'DD/MM'))) as NoMois,

    Day(MonthEnd(Date(right(DATE,5),'DD/MM'))) as NbJoursDuMois

   

Resident [Disponibilité des ressources$];

christophebrault
Specialist
Specialist

Oui c'est normal le format de date n'est pas correct désolé.

De ce que je vois, je te propose ceci :

A partir de plusieurs fichier mensuels formatés de la même manière (Même champs, règle de nommage du fichier), on peut utiliser '*' pour charger à la volée.

Sans reprendre tous les champs ca donnerait :

Crosstable(DATE,Qte_juin,23)

TEMP_TABLE:

LOAD Left(Subfield(Filebasename(),'_',3),4) as AnnéeFichier, // récupère l'année à partir du nom du fichier

     * // charge tous les champs

FROM [lib://01-Taux Saturation/PlanDeCharge_Ressource_*.xls]

(biff, embedded labels, header is 3 lines, table is [Disponibilité des ressources$]);

Noconcatenate

TABLE:

LOAD *,

Makedate(AnnéeFichier,right(right(DATE,5),2),left(right(DATE,5),2)) as Date

resident TEMP_TABLE;

drop table TEMP_TABLE;

CALENDRIER:

LOAD Date,

    Month(Date) as Mois,

    Num(Month(Date)) as NoMois,

    Day(MonthEnd(Date)) as NbJoursDuMois

Resident TABLE;

Inscrivez vous à ma Newletter Qlik
DoNotMissQlik- Connect with me on Linkedin
Not applicable
Author

Merci beaucoup