首页 > 解决方案 > 如何构建我的数据以在一张表中预聚合不同的天数/月数/年数?

问题描述

我有一个非常大的数据集(每月 4 亿条记录),在使用 Power BI 中的数据之前,我需要将其预先聚合到一个表中。聚合表将在 Power BI 中运行得更快,但我需要在一个视觉对象中具有向下钻取功能,以便我逐年逐月向下钻取。问题是,当计算一天的不同客户和一个月的不同客户时,你本质上应该得到不同的数字。

是否可以创建一个表格,在一个视觉对象中呈现每个时间段的不同客户?

我已经尝试为每个时期创建一个表格,一个用于每年的不同客户,一个用于一个月,一个用于一天,但我无法将它们相互连接以在一个视觉效果中显示它们。

select  event_year,
        event_month,
        Event_day,
        AgeBracket,
        gender,
        race_desc,
        count(distinct ucn) as UniqueCustomers

from bistg.dbo.clickstreammonthsample a

group by 
        event_year,
        event_month,
        event_day,
        AgeBracket,
        gender,
        race_desc

不幸的是,在不使用多维数据集的情况下,不可能以任何方式对一段时间内的不同值进行求和、计数或聚合,以便在新的时间段内找到新的不同值。

问题是为了让我们使用多维数据集,我们需要一台具有 600GB 内存的机器。

标签: sqlpowerbidistinct-values

解决方案


我建议您考虑两种不同的可能方法。

首先,考虑内置的Power BI 聚合功能。尽管您将使用三个单独的隐藏表,但该功能会自动在表之间切换,因此可以从正确的表中自动呈现相同的视觉效果,而不会在 DAX 中增加复杂性。如果 Date 是您要分割的唯一维度,我会推荐这种方法。

其次,考虑我在博客中提到的自定义解决方案,它将日/月/年聚合添加到单个表中,并执行一些复杂的 DAX 和数据建模以自动显示正确的聚合。该解决方案专为 Azure 分析服务(分析服务表格模型)而设计,但同样的方法适用于 Power BI。如果您的仪表板允许对日期维度、客户维度和其他维度进行切片,我会推荐此解决方案。


推荐阅读