【问题标题】:How can I sort time dimensions in SSAS cubes? Poor sort is causing issues with ParallelPeriod()如何对 SSAS 多维数据集中的时间维度进行排序?糟糕的排序导致 ParallelPeriod() 出现问题
【发布时间】:2020-12-09 21:02:54
【问题描述】:

我有一个内置在 SSAS 中的旧多维数据集。我们将收入分解为时间维度,如下所示:

fiscal week Date Revenue Prior Year Revenue
53 2020-12-31 $5000 ????
49 2020-12-03 $1000 $200 (should be $100)
50 2020-12-10 $2000 $300
51 2020-12-17 $3000 $400
52 2020-12-24 $4000 $500

如您所见,第 53 个会计周未按正确的排序顺序显示。

由于我们使用的维度“上一年,周”,这已成为一个问题。这试图从同一财政周而不是上一年获取收入。它通过调用ParallelPeriod([FiscalWeek], 52), [Measures].[Revenue]) 来完成此操作。

我认为正在发生的事情是因为第 53 周是在月初,ParallelPeriod 将其计为它跳过的间隔之一。这会导致“上一年度”列显示第 50 个财政周,应该是 51,第 51 个应该是 52,等等。

有没有办法对这些日期进行排序?我已经尝试了明显的KeyColumnstuff 并检查了源视图,似乎没有什么应该导致这种糟糕的排序。

提前致谢——我对这些东西知之甚少,我有点被抛到这里了。

编辑:

我在这里取得了一些进展,但仍有问题。似乎每年有 53 个会计周都会出现这个问题——第 53 周的排序不正确。

时间维度分解如下:

  • 年份
  • 季度
  • 周数
  • 账单日期

账单日期按顺序排序,但出于某种原因,浏览器中的星期如下所示:

  • 53
  • 1
  • 2
  • 3
  • ...

Week Number 属性似乎是关闭的。 OrderBy 属性设置为AttributeKeyOrderByAttribute 属性设置为Bill Date attribute。但是,仅查看发布日期就会发现它们已正确排序。

编辑:

按照以下响应的建议将OrderBy 设置为Key 后,某些月份层次结构似乎出现故障。例如,某些月份包含不属于的星期。例如:

* Sep
  * 35
    * 2020-08-27
  * 36
    * 2020-09-03
  * 37
    * 2020-09-10
  * 38
    * 2020-09-17
  * 39
    * 2020-09-24

这是月份属性的 XML:

<Attribute>
                    <ID>Month attribute</ID>
                    <Name>Month attribute</Name>
                    <Type>Months</Type>
                    <EstimatedCount>48</EstimatedCount>
                    <KeyColumns>
                        <KeyColumn>
                            <DataType>WChar</DataType>
                            <Source xsi:type="ColumnBinding">
                                <TableID>dbo_dim_time</TableID>
                                <ColumnID>fiscalmonth</ColumnID>
                            </Source>
                        </KeyColumn>
                    </KeyColumns>
                    <NameColumn>
                        <DataType>WChar</DataType>
                        <Source xsi:type="ColumnBinding">
                            <TableID>dbo_dim_time</TableID>
                            <ColumnID>fiscalmonth</ColumnID>
                        </Source>
                    </NameColumn>
                    <AttributeRelationships>
                        <AttributeRelationship>
                            <AttributeID>Pubdate attribute</AttributeID>
                            <Name>Pubdate attribute</Name>
                        </AttributeRelationship>
                    </AttributeRelationships>
                    <OrderBy>AttributeKey</OrderBy>
                    <OrderByAttributeID>Pubdate attribute</OrderByAttributeID>
                    <MembersWithData>NonLeafDataHidden</MembersWithData>
                    <MembersWithDataCaption>(* data)</MembersWithDataCaption>
                    <AttributeHierarchyVisible>false</AttributeHierarchyVisible>
                </Attribute>

【问题讨论】:

    标签: sql-server ssas cube


    【解决方案1】:

    您描述的参考账单日期OrderBy设计对于您的要求来说似乎过于复杂。

    对于 Week Number 属性,我只需将 OrderBy 属性设置为 Key

    【讨论】:

    • 进行此更改后是否必须处理所有使用此维度的多维数据集?
    • 不确定。为了安全起见,可能最好这样做。
    • 您对如何处理我的编辑中描述的日期被分类到错误的会计月份有任何建议吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 2010-10-13
    • 2013-04-26
    • 2015-09-09
    相关资源
    最近更新 更多