sql - SSAS 日期存储为文本
问题描述
我有一个预测度量表,其中 MMM-YY 日期存储为文本;
Period Forecast
-------------------
Jan-20 200
Feb-20 300
我的模型中还有一些其他表格具有类似的日期格式,即。(1/2020)或 2020_1。因此,我创建了一个将时间段映射到实际日期时间的日期维度,并将其链接到事实表;
Period (Month/Year) Year_Month MonthEnd
---------------------------------------------------
Jan-20 (1/2020) 2020_1 31/01/2020
Feb-20 (2/2020) 2020_2 28/02/2020
这给我带来了两个问题;
如果我按时段划分预测,我会得到正确的答案,但如果我按日期时间字段“MonthEnd”划分,SSAS 无法跨属性分配成本,我每个月都会得到总计(所以 1 月和 2 月都是 500在这个例子中)。为什么?
我无法将时间作为参考维度连接到日期维度,因此我无法使用任何时间智能功能。
我可以将 ETL 上的时间段 ID 换成日期时间,以标准化模型中的日期字段,但我想知道是否有一种标准的方法来解决这个问题?
解决方案
在 Analysis Services 多维模型中,您需要标准化一种格式来表示一个时期,并让所有度量值组都使用它。我建议您更改实际值度量组的 SQL 查询,以返回连接到日期表中的期间列的值。
了解其工作原理意味着了解属性关系和IgnoreUnrelatedDimensions设置。如果设置为 true,则按“不相关”属性(低于粒度或不相关或不相关维度的属性)进行切片只会导致测量重复。如果设置为 false,那么它将变为 null。
我不清楚你为什么需要时间作为参考维度。它似乎还包含一个日期层次结构。通常日期是几天、几周、几个月和几年。通常时间是小时分钟和秒。出于处理性能的原因,我会避免参考尺寸。他们的麻烦多于他们的价值。将时间维度键添加到事实表。
推荐阅读
- c# - 从 C# 中的另一个类调用非静态 void 方法
- linker - ld:找不到库
- python - 在 Django 中,我可以只使用一个类来对函数进行分组吗?
- python - 在pygame中双击键盘,而不是双击
- jquery - Datatables JQuery 库 - 响应式表
- boolean-logic - 简化布尔 (X + Y)(X' + Z) = XZ + X'Y
- kubernetes - 从服务帐户对受 Google IAP 保护的资源的编程访问被拒绝并出现无效签名错误
- python-3.x - 元组集之间的区别,删除公共元素
- node.js - NODE JS:如何使以下调用等待被调用函数完成后再继续
- list - 如何使用“减少”来获取 Dart/Flutter 中对象列表中的值的总和