PowerBI:如何获得表中一列的不同计数,同时分别对多个列进行分组
我有一个包含多个日期列和一个标签列的表,如下代码所示PowerBI:如何获得表中一列的不同计数,同时分别对多个列进行分组,powerbi,dax,Powerbi,Dax,我有一个包含多个日期列和一个标签列的表,如下代码所示 Data = DATATABLE ( "Date1", DATETIME, "Date2", DATETIME, "Label", STRING, { { "2020-01-01","2020-01-02", "A" }, { "2020-01-01","2020-01-01&q
Data = DATATABLE (
"Date1", DATETIME,
"Date2", DATETIME,
"Label", STRING,
{
{ "2020-01-01","2020-01-02", "A" },
{ "2020-01-01","2020-01-01", "A" },
{ "2020-01-01","2020-01-02", "B" },
{ "2020-01-01","2020-01-01", "D" },
{ "2020-01-01","2020-01-02", "E" },
{ "2020-01-02","2020-01-01", "A" },
{ "2020-01-02","2020-01-02", "B" },
{ "2020-01-02","2020-01-01", "C" }
}
)
我想在考虑date1和date2时,绘制一张每天不同标签的计数图。它们需要与聚集条形图位于同一个图中,如下所示。这意味着我需要获取新日期列上的值
预期结果如下所示:
Date | value1 | value2
---------------------------------
1/1/2020 12:00:00 AM | 4 | 3 |
1/2/2020 12:00:00 AM | 3 | 3 |
当前解决方案:
Date1_Count =
ADDCOLUMNS (
ALL ( Data[Date1] ),
"Count",
CALCULATE (
DISTINCTCOUNT ( Data[Label] )
)
)
value1 = RELATED(Date1_Count[Count])
value2 = RELATED(Date2_Count[Count])
及
Final_Counts = CALENDAR("2020-01-01", "2020-01-04")
RELATED
函数组合数据,如下所示
Date1_Count =
ADDCOLUMNS (
ALL ( Data[Date1] ),
"Count",
CALCULATE (
DISTINCTCOUNT ( Data[Label] )
)
)
value1 = RELATED(Date1_Count[Count])
value2 = RELATED(Date2_Count[Count])
是否有一种更简单的解决方案不需要为每个日期列创建一个表?当前方法无法扩展到多个日期列。可以一步获得最终的_计数计算表,使用ADDCOLUMNS迭代数据[Date1],然后计算Value1作为在当前迭代日期1上筛选的数据表的DISTINCTCOUNT 这项工作得益于触发上下文转换的CALCULATE语句
Final_Counts =
ADDCOLUMNS(
ALL( Data[Date1] ),
"Value1",
CALCULATE(
DISTINCTCOUNT( Data[Label] )
),
"Value2",
VAR CurrentDate = Data[Date1]
RETURN
CALCULATE(
DISTINCTCOUNT( Data[Label] ),
REMOVEFILTERS( Data ),
Data[Date2] = CurrentDate
)
)
获取Value2需要使用当前迭代的Date1在Date2上创建新的筛选器上下文
首先,我们将当前Date1保存在一个变量中,该变量将在Date2的过滤器表达式中的CALCULATE中使用
我们还需要REMOVEFILTERS(数据)来删除上下文转换设置的Date1上的筛选器上下文
Final_Counts =
ADDCOLUMNS(
ALL( Data[Date1] ),
"Value1",
CALCULATE(
DISTINCTCOUNT( Data[Label] )
),
"Value2",
VAR CurrentDate = Data[Date1]
RETURN
CALCULATE(
DISTINCTCOUNT( Data[Label] ),
REMOVEFILTERS( Data ),
Data[Date2] = CurrentDate
)
)
假设只有少数几个日期列,那么只需要一个日期维度表和每个日期列一个度量值 定义要在x轴上使用的日期表(与其他表没有关系): 然后定义将各个日期列与日期表相匹配的度量:
value1 =
CALCULATE (
DISTINCTCOUNT ( Data[Label] ),
Data[Date1] IN VALUES ( DimDate[Date] )
)
及
如果您有多个
DateN
列,那么最好是在取消所有这些列的位置重塑数据
对于你所拥有的两个人来说,数据看起来就像
在这种情况下,您使用Unpivot[Column]
作为图例,只需要一个度量:
value =
CALCULATE (
DISTINCTCOUNT ( Unpivot[Label] ),
Unpivot[Date] IN VALUES ( DimDate[Date] )
)
这会产生类似的结果: