数据:我有一行代表产品的年度订阅,它有一个整体的startDate和endDate,还有第三个日期,即startdate + 1个月,名为endDateNew。我还有一个不相关的日期表(称为表X)。
输出我正在寻找:我需要一个名为Categorization的新列,它将返回' New'如果表X中选择的日期在startDate和endDateNew之间,并且'现有'如果日期在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中的每个日期计算值
谢谢!
罗斯
答案 0 :(得分:1)
计算列仅在模型刷新/处理时评估。这是设计的。根据数据透视表中过滤器上下文中的运行时更改,无法进行计算列更改。
答案 1 :(得分:0)
罗斯
计算列的工作方式与Excel不同。当记录首次添加到模型时,最佳值是已知的。 你的例子有点类似于缓慢变化的维度。
有几种可能的解决方案。这是两个半:
每次处理订阅表时,过去32天的数据都会完整处理(可能效率低得令人无法接受)。
OR
创建一个新表&#39; Subscription scd&#39;使用订阅表中的主键和您的单个计算列“订阅年龄天数”。像一个支腿。可以比重新处理订阅表更有效地重新处理此表,因此仅将订阅表作为增量处理,并在此表上针对过去32天内的数据执行完整处理。
OR
确定哪些措施在新的/现有的&#39;中有用。上下文并使用度量
中日期列的动态过滤器为它们写明确的度量例如。定义
'Sum of Sales - New Subscriptions',
'Sum of Sales - Existing Subscriptions',
'Distinct Count of New Subscriptions - Last 28 Days', etc