2016-08-31 1 views
4

J'ai une table Table1:nombre Distinct de la colonne F1 basée sur l'agrégation de la colonne F2 groupped par colonne F1

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

je voudrais définir une MyMeasure de mesure qui me permettrait de générer une table:

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

Lorsque les valeurs comte proviendraient de la fonction CUBEVALUE comme:

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

La logique de mon La mesure doit être:

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

2) Distinction des éléments de compte dans F1 pour une valeur spécifiée à partir du point précédent.

J'ai été capable de le faire en utilisant une colonne d'aide dans le modèle de données mais je voudrais le réaliser avec une seule mesure.

La dernière tentative est:

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

Comme je comprends que je suis la pagaille dans le contexte et par conséquent, je reçois:

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

Dans T-SQL que 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 

Répondre

0

J'ai peut-être mal compris votre problème, mais je le ferais avec une formule matricielle en colonne Hird du Tableau 1 que vous pouvez ensuite résumer facilement par F2 dans le cadre du modèle de données:

{=IF([@F2]=MIN(IF([F1]=[@F1],[F2])),1,0)} 
1

je mets mes deux cents, vous pouvez créer une table calculée qui renvoie les [F2] distinctes valeurs et le nombre de leurs occurrences minimales dans deux colonnes. Je ne suis pas certain que vous puissiez obtenir les valeurs minimales à partir d'une seule mesure.

CalculatedTable = 
GROUPBY (
    GROUPBY (Table, Table[F1], "Minimum", MINX (CURRENTGROUP(), Table[F2])), 
    [Minimum], 
    "MinCount", COUNTAX (CURRENTGROUP(), [Minimum]) 
) 

Faites-moi savoir si cela aide.