我如何构建我的数据以将超过 Days/Months/Years 的不同值预聚合到一个 table 中?

How can I structure my data to pre-aggregate distinct values over Days/Months/Years in one table?

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

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

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

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 内存的机器。

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

首先,考虑 built-in Power BI aggregations 特征。尽管您会使用三个单独的隐藏 table,但该功能会自动在 table 之间切换,因此相同的视觉对象可以从正确的 table 自动呈现,而不会在 DAX 中增加额外的复杂性。如果日期是您想要切片的唯一维度,我会推荐这种方法。

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