是否可以在SSAS中手动删除时间维度条目?

时间:2014-11-07 15:03:28

标签: sql-server ssas mdx cube xmla

想知道是否可以在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)

1 个答案:

答案 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)

如果您的事实表中没有任何有关违规月份的记录,则此方法有效。