【发布时间】:2020-08-03 19:55:20
【问题描述】:
希望能快速解释一下我希望完成的工作,然后是我们一年多来一直在研究的方法。
想要的结果 我有一个包含两列 SCD_Valid_From 和 SCD_Valid_To 的 SCD 值表。有没有办法在我的模型中加入日期表(或者只是使用没有连接的切片器)以便能够选择两个 SCD 列之间的特定日期并返回该行数据?
原表
ID | SCD_Valid_From | SCR_Valid_To | Cost
1 2020-08-01 2020-08-03 5.00
选择的切片器日期是 2020-08-02。我希望返回此 ID=1 记录。
到目前为止我们所做的尝试 我们请来了一位顾问,帮助我们在去年推出了 Power BI。他的解决方案是创建一个扩展表,其中包含每个 ID/Date 组合的一行。
扩展的原始表格
ID | SCD_Valid_Date | Cost
1 2020-08-01 5.00
1 2020-08-02 5.00
1 2020-08-03 5.00
这最初是在 Power BI 端发生的,我们将使用增量刷新来控制每天推送该表的多少。长话短说,这效率极低,并且刷新速度太慢而无法生效 - 对于 5 年的数据,我们需要每个 ID 超过 2000 行才能选择维度记录。
有没有办法使用切片器,Power BI 可以选择所选日期介于表的两列日期之间的记录?
【问题讨论】:
-
据我所知,这是满足您要求的唯一选择。你是如何创建扩展表的?使用 CROSSJOIN 是一种选择。
-
问题:您的切片器中有单日选择吗?如果是,可能有解决方法。
-
@mkRabbani,是的,切片器有单独的日期。因此,在我的示例中,用户希望选择 2020-08-02 并希望查看返回的 ID=1 记录。
-
在 SQL 端使用 CROSS JOIN 不是问题,我们就是这样做的。相反,一个相当小的表会爆炸超过 30 亿行,每天增加 2-3 百万行。考虑到我们数据仓库的规模,将构成我们现在仓库规模的约 50%。
-
是的,他们一次只会选择 1 天。让我在下面尝试您的解决方案,我会尽快回复您。谢谢。