sql - 如何构建我的数据以在一张表中预聚合不同的天数/月数/年数?
问题描述
我有一个非常大的数据集(每月 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 内存的机器。
解决方案
我建议您考虑两种不同的可能方法。
首先,考虑内置的Power BI 聚合功能。尽管您将使用三个单独的隐藏表,但该功能会自动在表之间切换,因此可以从正确的表中自动呈现相同的视觉效果,而不会在 DAX 中增加复杂性。如果 Date 是您要分割的唯一维度,我会推荐这种方法。
其次,考虑我在博客中提到的自定义解决方案,它将日/月/年聚合添加到单个表中,并执行一些复杂的 DAX 和数据建模以自动显示正确的聚合。该解决方案专为 Azure 分析服务(分析服务表格模型)而设计,但同样的方法适用于 Power BI。如果您的仪表板允许对日期维度、客户维度和其他维度进行切片,我会推荐此解决方案。
推荐阅读
- javascript - 删除 Slick Slider 淡入淡出过渡上的白色闪光
- html - 如何在 Angular 中调整 videogular2 组件的大小?
- javascript - es6 { [a]: b } 解构是什么意思?
- javascript - 未调用覆盖的 toString
- powershell - Powershell - Register-ObjectEvent mstsc 问题 - 事件未在正确的时间触发
- javascript - 为每个 Firebase 条目填充一个条目
- python - Scipy ode 根据解的大小积分到 t 的未知极限
- c++ - 使用 -mfma 编译时的非法指令
- ios - 如何为 AppStore 上部署的应用启用 AirWatch MDM 功能
- vbscript - 打开禁用网络安全的 chrome 浏览器