SSASdate在Excel筛选器中不起作用

在我的SSAS多维数据集中,我有一个包含6个date字段的维度。 它们都是以相同的方式定义的,具有datetypes的Key字段和格式为yyyy-mm-dd的char(10)的Name字段。

当我将这些字段包含在Excel数据透视表中时,除了一个以外,它们都可以正常工作。 该字段显示正确,但在过滤时不正确。 特别是,指定一个filter总是返回零行。 与greater thanfilter相同。 Begins with工作正常。

再次,这只发生在六个date字段中的一个。 但是,就我所知,所有六个date字段的configuration都是相同的。 什么types的错误可能导致这种情况?

编辑

使用SQLServer事件探查器,我可以看到从Excel生成的MDX对于工作date和没有工作的date是相同的(当然,字段名称改变除外)。 如果我将数据透视表限制为一个date并添加一个filter,那么MDX是:

 SELECT NON EMPTY Hierarchize({DrilldownLevel({[Participation Program].[Participation Start Date].[All]},,,INCLUDE_CALC_MEMBERS)}) DIMENSION PROPERTIES PARENT_UNIQUE_NAME,HIERARCHY_UNIQUE_NAME ON COLUMNS FROM (SELECT Filter([Participation Program].[Participation Start Date].[Participation Start Date].AllMembers, ([Participation Program].[Participation Start Date].CurrentMember.member_caption>="1985" AND [Participation Program].[Participation Start Date].CurrentMember.member_caption<="1990")) ON COLUMNS FROM [Compass3]) WHERE ([Child].[Child is Handicapped].&[T],[Measures].[Child Count]) CELL PROPERTIES VALUE, FORMAT_STRING, LANGUAGE, BACK_COLOR, FORE_COLOR, FONT_FLAGS 

这会返回[Participation Start Date]正确结果,但是如果我使用[Participation Stop Date]做同样的事情,则返回0结果。 所以这是SSAS方面的问题,而不是Excel方面。 但是我仍然可以看到在多维数据集中configuration了两个date的方式没有任何区别,并且我100%确定有数据应该与指定的date范围匹配。

我会将这些属性的Key更改为YYYYMMDD格式的date的数字表示forms。 我将通过一个SQL视图来实现这一点,我将使用CONVERT函数。

我不会在SSAS中使用date数据types,因为它的内部表示是模糊/不确定的。

我遇到了类似的问题,使用epplus。 如果您没有明确定义date,则Excel可能不会意识到数据是date。 这会导致sorting和筛选问题。 (请注意,下面的代码是C#,但其背后的思想相对于Excel公式/格式应该是相同的。)

当您生成Excel单元格时,请在单元格中明确定义date公式:

 ws.Cells[rowCount, columnCount].Formula = "=DATE(" + myDate.ToString("yyyy,M,d") + ")"; 

然后,设置单元格格式以显示您想要的方式:

 ws.Cells[rowCounter, columnCount].Style.Numberformat.Format = "d-mmm-yyyy";