想知道是否可以在SSAS多维数据集处理后从SSAS多维数据集中删除时间维度条目,例如“DEC-2014”。
Oracle查找表提供时间维度值,但每个相应月份的数据可能尚不可用。想要在处理后手动删除Time维度,但不能从底层Oracle表中删除。
Time
-> All Time
-> 2014
-> Q1 2014
-> JAN-2014
-> FEB-2014
-> MAR-2014
-> Q2 2014
-> APR-2014
-> MAY-2014
-> JUN-2014
-> Q3 2014
-> JUL-2014
-> AUG-2014
-> SEP-2014
-> Q4 2014
-> OCT-2014
-> NOV-2014
-> DEC-2014 (Would like to delete this entry)
答案 0 :(得分:0)
在项目的数据源视图(DSV)中执行此操作。如果您的数据源表当前以表格形式出现,请右键单击DSV中的日期维度表,然后选择“替换表格>使用新命名查询...”并将where子句设置为以下内容:
WHERE YEAR(DateField)*100 + MONTH(DateField) <= YEAR(GETDATE())*100 + MONTH(GETDATE())
这会将当月后的所有月份排除在日期维度之外。
请注意,如果您的事实表中的排除月份中的值包含日期维度的外键,则在未找到密钥时会导致处理错误。我会改变你的事实表ETL,以便不接受当前月份以外的行,以解释这种可能性。
编辑:另一种可能的解决方案是:
WHERE DateKey BETWEEN (SELECT MIN(DateKey) From FactTable) AND (SELECT MAX(DateKey) From FactTable)
如果您的事实表中没有任何有关违规月份的记录,则此方法有效。