Excel 2013数据透视表,来自SQL Server Analysis Service 2008的日期分组

时间:2015-11-24 10:15:43

标签: excel ssas grouping excel-2013 ssas-2008

我正在使用:SSAS版本2008和Excel版本2013

我从Excel连接到SSAS多维数据集,我有4个字段的日期维度(我有其他但我不在这种情况下使用它)。我创建了4个字段,以测试我能想到的所有可能情况:

  1. DateKey:

    • 类型:System.Integer
    • 价值:yyyyMMdd
  2. 日期:

    • 类型:System.DateTime
  3. DateStr0:

    • 类型:System.String
    • 价值:dd / MM / yyyy(注意:我没有使用美国文化)
    • 示例:01/11/2015
  4. DateStr1:

    • 类型:System.String
    • 价值:%d /%M / yyyy(注意:我没有使用美国文化)
    • 示例:2015年1月11日
  5. 过滤日期工作正常:

    最初,在excel中,过滤日期不起作用。但是,在将维度类型更改为时间并将数据类型设置为日期后,如https://download.microsoft.com/download/7/d/f/7df964aa-08d9-4b65-b952-c9a529fa635b/Excel2007AnalysisServicesCubesPivotTables.docx中所述,过滤器工作正常,如图所示。

    Date filters working fine

    按日期分组无效:

    我的日期维度中有层次结构,我可以根据层次结构进行分组,没问题。 但是用户习惯于预先构建excel的分组功能,并且他想使用它。 Excel,Group和ungroup的预构建函数似乎可用,如下图所示:

    Group ungroup seems to appear correctly

    但是当用户点击“群组”时,Excel会将其分组,就好像它是一个字符串一样,这就是问题。用户希望使用数据透视表中提供的预构建分组功能进行分组。

    我还发现 Power Pivot Table 不支持此excel分组功能。如果我理解的话,excel的这种预构建分组功能需要在运行时进行计算,如果你有数百万行,那就不是可行的解决方案。因此Power pivot表不支持excel的预构建分组功能,因此我们需要使用维度层次结构来进行分组。

    但我没有使用Power Pivot表,我使用简单的数据透视表。所以我希望分组功能能够正常工作。

    然后我尝试做简单的测试。我在excel中创建了一个简单的数据源。并将其用作我的Pivot表的源。然后分组工作正常。我能看到的唯一区别是(当双击Excel中的Measure值时),

    1. 对于我的简单测试的日期值,excel将其视为“日期”。

    2. 对于来自多维数据集的数据的日期值,excel将其视为 '一般'

      • 但这里的价值与简单测试中的价值相同。
      • '日期过滤器'工作得很好。
      • 如果我只是选择此单元格并取消选择它,则excel会将类型更改为“日期”,但对于该单元格。
      • 我在日期维度中创建了4种不同类型的字段,认为我的维度的属性值可能是问题,但是excel考虑所有这些字段的“常规”。
      • 此值(双击度量时可以看到)来自属性的“名称列”。和DataType 定义是WChar。我认为这可能是问题的原因。 然后我将其更改为“日期”。但是SSAS不允许它改为 'Date'给出错误:不允许使用'Date'数据类型 'NameColumn'财产;应该使用'WChar'。
    3. NameColumn must be WChar

      所以,我不知道,我错过了什么拼图。

      1. 日期过滤器有效,组不起作用
      2. Excel将其视为“常规”字符串。
      3. SSAS不允许将“NameColumn”更改为Date。
      4. 你能告诉我吗?

        阿吉特

1 个答案:

答案 0 :(得分:0)

经过进一步的研究,我得出的结论是既不可能,也不可能。原因是:

使用源表为普通数据的数据透视表

当我们使用数据源不是OLAP多维数据集的Pivot表时,excel负责创建和管理多维OLAP多维数据集(在内存中),并且excel具有创建OLAP多维数据集所需的所有数据。当我们在“日期”字段中单击组时,excel正在其多维数据集的维度中创建一个属性(请参阅它如何在数据透视表字段中添加新字段)。因此,分组日期' column在Pivot表中的工作方式工作,其源代码在普通数据中。在创建新属性之后,它就像是普通属性一样,我们可以将它用于切片和切块。

使用源表为OLAP多维数据集的数据透视表

当我们使用数据源为OLAP cube的Pivot表时,excel不负责创建或管理多维数据集。它没有创建OLAP多维数据集所需的所有数据,它只是获取它发送给OLAP的查询结果(这也是Excel在使用外部OLAP多维数据集时可以处理数十亿行的原因)。因此,当使用源为OLAB cube的Pivot表时,我们负责在我们的多维数据集中创建和管理这些属性/层次结构。

因此,我不能也不应该使用预先构建的' group' excel在日期列上的功能(当使用OLAP多维数据集作为我的数据源时)。

参考: http://excelcentral.com/excel2013/expert/lessons/06070-understand-olap-pivot-table-limitations.html