0

数据: 我有一行代表产品的年度订阅,它有一个整体的 startDate 和 endDate,还有第三个日期,即 startdate + 1 个月,称为 endDateNew。我还有一个不相关的日期表(称为表 X)。

我正在寻找的输出: 如果表 X 中选择的日期在 startDate 和 endDateNew 之间,我需要一个名为 Categorization 的新列,如果日期在 startDate 和 endDate 之间,则返回“现有”。

问题: 该列似乎立即评估,而不考虑非相关日期表中的日期上下文 - 我有点希望这会在 Visual Studio 中发生(它假设上下文是所有记录?)但是在 Excel 中预览时通过这个相同的值。

起作用的一点是:我有一个聚合(活跃订阅者计数),可以正确地将订阅计数为在表 X 中选择的月份内是活跃的。

单个日期的 SQL 等效项:

case 
 when '2015-10-01' between startDate and endDateNew then 'New'
 when '2015-10-01' < endDate then 'Existing'
end as Category

将为表 X 中的每个日期计算该值

谢谢!

罗斯

4

2 回答 2

1

计算列仅在模型刷新/处理时进行评估。这是设计使然。无法根据数据透视表中筛选上下文中的运行时更改来更改计算列。

于 2015-12-10T13:49:38.880 回答
0

罗斯,

计算列的工作方式与 Excel 不同。当记录第一次添加到模型中时,最好知道该值。你的例子有点类似于一个缓慢变化的维度。

有几种可能的解决方案。这里有两个半:

每次处理订阅表时对过去 32 天数据的完整处理(这可能效率低得无法接受)。

或者

使用订阅表中的主键和“订阅天数”的单个计算列创建一个新表“订阅 scd”。就像一个支腿。与重新处理订阅表相比,重新处理此表可能更有效,因此仅将订阅表作为增量处理,并在此表上对过去 32 天内的数据执行完整处理。

或者

确定在“新/现有”上下文中哪些度量是有趣的,并使用度量中日期列上的动态过滤器为它们编写显式度量

例如。定义

'Sum of Sales - New Subscriptions',
'Sum of Sales - Existing Subscriptions', 
'Distinct Count of New Subscriptions - Last 28 Days', etc
于 2016-01-11T01:33:35.587 回答