Schéma en étoile, [Part1] Concaténation de tables

Ce tutoriel s'inscrit dans une série de tutoriels sur la modélisation en étoile dans QlikView.

Le modèle de données en QlikView doit être en étoile pour qu'il soit cohérent et performant. Dans le cas contraire, QlikView créera des tables de synthèse (ce qui est fortement déconseillé).


Une des solutions à cette problématique, est de concaténer (unir) ces deux tables (par exemple) pour en créer une seule table. QlikView permet d'unir deux tables même si elles n'ont pas les mêmes noms et nombres de colonnes (contrairement à UNION en sql). Dans les prochains tutoriels, nous verrons d'autres astuces pour garder notre schéma en étoile.

Pour concaténer deux tables dans QlikView, on a deux façons de faire.

  1. Forcer la concaténation de deux tables avec l'agrégat "Concatenate" si les tables ne contiennent pas les mêmes colonnes.

  2. Concaténer deux tables qui contiennent les mêmes nom de colonnes en les identifiant avec une colonne Flag.

Voyons voir...

1-Forcer la concaténation de deux tables avec l'agrégat "Concatenate" si les tables ne contiennent pas les mêmes colonnes.

QlikView permet d'unir deux tables de colonnes différentes en forçant la concaténation avec l'agrégat "Concatenate". Cet agrégat vient toujours devant les instructions LOAD et SQL. Voir exemple ci-dessous.

[Ventes et Achat]:
LOAD
Ventes_key, MontantVentes, RemiseVente, ProduitVendu_key, QuatitéVendue, PrixUnitaireVente
FROM Table_ventes; Concatenate
LOAD
Ventes_key, MontantAchats, RemiseAchats, ProduitAcheté_key, QuatitéAchetée, PrixUnitaireAchat
FROM Table_achats;

Le résultat et le suivant :

Ainsi, le nombre de ligne de cette nouvelle table est égale à la somme des lignes de la table ventes et ceux de la table achats.

2-Concaténer deux tables qui contiennent les mêmes noms de colonnes en les identifiant avec une colonne Flag

Pour simplifier davantage notre modèle de donnée, nous allons cette fois ci mettre les données (de même type) de la table "ventes" et de la tables "achats" dans une même colonne. On ajoutera une colonne flag pour identifier les deux tables.

[Ventes et Achats]:
LOAD
Ventes_key as ID, Montant, Remise, Produit_key, Quatité, PrixUnitaire
'Ventes' as TypeOpération FROM Table_ventes;

Cette fois, nous n'avons pas besoin de l'agrégat "Concatenate" car les noms des colonnes des deux tables sont tous identiques.

Important : La colonne "TypeOpération" va nous permettre d'identifier les tables, notamment lors de expressions, en utilisant "L'analyse d'ensemble ou le SET Analysis".

Voila le résultat :

Cette fois, le nombre de colonne de la table résultante est égale au nombre de colonne d'une des tables plus une colonne Flag.

On remarque que cette présentation est plus simple. Néanmoins, n'oubliez pas que dans ce cas vous devez à chaque fois utiliser le SET Analysis lors de vos expressions.

Par exemple, si vous voulez calculer la somme des montants de ventes vous ne pouvez pas faire un simple Sum(Montant) (ce qu'est possible avec la méthode 1). Dans ce cas vous êtes obligé de faire : Sum( {$<TypeOpération= {"Ventes"}>} Montant).

Voila, je vous laisse choisir le méthode qui convient le mieux à votre problématique.

Si vous avez besoin de plus d'éclaircissements ou des questions, n'hésitez pas ...




Saisissez une adresse Email pour être averti de publication d'un nouvel article.



Laissez un commentaire :

Chargement en cours ...