4 votes

Compte distinct de la colonne F1 basé sur l'agrégation de la colonne F2 groupée par la colonne F1.

J'ai une table Table1 :

F1 | F2
-------
a  | 1
a  | 2
b  | 1
c  | 2

Je voudrais définir une mesure MyMeasure qui me permettrait de générer un tableau :

F2 | Count
----------
1  | 2
2  | 1

Où les valeurs dans Count proviendraient de la fonction CUBEVALUE comme :

=CUBEVALUE("ThisWorkbookDataModel","[Measures].[MyMeasure]","[Table1].[F2].&[1]")
=CUBEVALUE("ThisWorkbookDataModel","[Measures].[MyMeasure]","[Table1].[F2].&[2]").

La logique de MyMeasure devrait être :

1) Trouver la valeur minimale F2 pour chaque groupe de F1 (a -> 1, b -> 1, c -> 2).

2) Éléments de comptage distincts en F1 pour une valeur spécifiée à partir du point précédent.

J'ai réussi à le faire en utilisant une colonne d'aide dans le modèle de données, mais j'aimerais y parvenir avec une seule mesure.

La tentative la plus récente est :

=COUNTROWS(
    GENERATE(
        all(Table1[F2])
        ,SUMMARIZE(
            all(Table1),Table1[F1],"sth",min(Table1[F2])
        )
    )
)

Si je comprends bien, je me trompe dans le contexte et j'obtiens donc.. :

F2 | Count
----------
1  | 6
2  | 6

En T-SQL, je peux générer la sortie en utilisant une requête :

select distinct
    t1.F2
    ,count(*) over (partition by t1.F2)
from (select distinct F2 from Table1) t1
    right join (select F1, min(F2) as MyMin from Table1 group by F1) t2
    on t1.F2 = t2.MyMin

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X