2017-10-04 6 views
0

Permettez-moi de commencer par un exemple. Supposons que j'ai l'extrait suivant d'un contenant table de dimension changeant lentement informations sur les clients:Sisense: Jointure de table automatique pour le rapport de données historiques

key id  name country  valid_from valid_to version 
1 abcxyz John Switzerland 2012/01/01 2014/01/01 1 
20 abcxyz John Germany  2014/01/01 2017/01/01 2 
... 

Comme vous pouvez le voir, tous les changements dans les informations d'un client est enregistré comme une nouvelle entrée dans la table avec le même identifiant, mais la version incrémentée par 1 (clé champ est la clé primaire de la table)

Cette table est ensuite importée dans un Sasense ElastiCube, puis j'ai accès à partir de l'application web Dashboard.

Ma question est: Comment puis-je créer un widget qui me montre tous les clients qui ont déménagé du pays A au pays B? (Si A était la Suisse et B l'Allemagne, John apparaîtrait dans le rapport)

Répondre

0

En supposant que (id, version) est unique et qu'il n'y a pas de trous dans la séquence de version, cette requête vous donnerait les clients qui déplacé d'un pays à l'autre.

Veuillez noter que ce n'est pas et non que vous obtenez la version la plus récente de l'enregistrement client, mais plutôt la version de l'enregistrement lorsque le changement est survenu. John pourrait vivre en Italie dans la version 3, mais la requête vous donnerait toujours le record de l'Allemagne.

select a.key as moved_from_key 
     ,b.key as moved_to_key 
    from customers a 
    join customers b on(
     b.id  = a.id 
    and b.version = a.version + 1 -- The version following A 
) 
where a.country = 'Switzerland' 
    and b.country = 'Germany'; 
+0

Salut à tous, Ronnis. Oui, c'est correct, mais je ne suis pas intéressé par la résolution du problème avec le code SQL, je voudrais créer un widget dans le tableau de bord de Sisense pour le faire. Je n'ai pas pu le faire, car je ne peux pas mettre 2 filtres différents sur le même terrain (pays) à Sisense –