powerbi - PowerBI:如何获取表中列的不同计数,同时分别对许多列进行分组
问题描述
我有一个包含多个日期列和一个标签列的表,如以下代码所示
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] ) ) )
和
Date2_Count = ADDCOLUMNS ( ALL ( Data[Date2] ), "Count", CALCULATE ( DISTINCTCOUNT ( Data[Label] ) ) )
然后我创建第三个带有日期的表,
Final_Counts = CALENDAR("2020-01-01", "2020-01-04")
接下来,我添加三个日期之间的关系,即。Date1_Count 表、Date2_Count 表和 Final_Counts 表
最后,我使用
RELATED
函数组合数据如下value1 = RELATED(Date1_Count[Count]) value2 = RELATED(Date2_Count[Count])
问题
是否有更简单的解决方案不需要为每个日期列创建一个表?当前方法不能扩展到许多日期列。
解决方案
可以一步获得 Final_Counts 计算表,使用 ADDCOLUMNS 迭代 Data[Date1],然后将 Value1 计算为在当前迭代 Date1 上过滤的 Data 表上的 DISTINCTCOUNT。
这项工作得益于触发上下文转换的 CALCULATE 语句。
获取 Value2 需要使用当前迭代的 Date1 在 Date2 上创建一个新的过滤上下文。
首先,我们将当前的 Date1 保存在一个变量中,以便在 Date2 上的过滤器表达式中的 CALCULATE 中使用。
我们还需要 REMOVEFILTERS(Data) 来删除上下文转换设置的 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
)
)
推荐阅读
- python - 更改 collections.deque 的 maxlen 属性
- javascript - 为什么 return db.set(...).then 不是函数?
- c++ - OpenSSL 可以使用 RSA-PSSR 验证和恢复 Crypto++ 签名的文件吗?
- node.js - 如何在不发送电子邮件的情况下测试 Sendgrid api 密钥是否有效?
- django - django 使用锚标签传递数据
- python - 在 Python 中创建“Typeracer”的问题
- excel - 循环遍历 excel 单元格强制至少有 2 个活动单元格
- python - 使用 matplotlib 在对数刻度上居中注释
- jenkins - 如何在 Jenkins 的管道执行期间将动态值传递给环境块?
- flutter - Flutter - 更新到 v1.17 后构建失败