相对日期过滤问题 Pentaho Workspace(Mondrian) AnalyzerDateFormat 周重叠两个月仅显示一周的开始日期

Posted

技术标签:

【中文标题】相对日期过滤问题 Pentaho Workspace(Mondrian) AnalyzerDateFormat 周重叠两个月仅显示一周的开始日期【英文标题】:Issue with relative date filtering Pentaho Workspace(Mondrian) AnalyzerDateFormat Week overlaps two Months only showing beginning days of the week 【发布时间】:2021-12-06 16:14:32 【问题描述】:

我有一个正确构建的表 dimDate。我在事实表中使用代理键 DC_tk('20211202') 映射到与 dimDate 中的 date_tk 相关的 dimDate CCYYMMDD('20211202') 中的主键。问题是当在分析器过滤器中选择前一周时,Pentaho 分析器中显示的月份是 11 月而不是 12 月,换句话说,只有一周的开始日期。我怀疑这是因为第 49 周与 11 月和 12 月重叠。如果“从列表中选择”过滤器值设置为第 49 周,则可以过滤两行 49 行。 代码如下:

<Dimension type="TimeDimension" visible="true" highCardinality="false" name="EXCREATEDDATE">
<Hierarchy name="Created Date" visible="true" hasAll="true" primaryKey="date_tk">
  <Table name="DimDate" schema="dbo">
  </Table>
  <Level name="Created Year" visible="true" column="YEAR" type="String" uniqueMembers="true" levelType="TimeYears" hideMemberIf="Never">
    <Annotations>
      <Annotation name="AnalyzerDateFormat">
        <![CDATA[[yyyy]]]>
      </Annotation>
    </Annotations>
  </Level>
  <Level name="Created Month" visible="true" column="MONTH" type="String" uniqueMembers="false" levelType="TimeMonths" hideMemberIf="Never" captionColumn="month_short_desc">
    <Annotations>
      <Annotation name="AnalyzerDateFormat">
        <![CDATA[[yyyy].[M]]]>
      </Annotation>
    </Annotations>
  </Level>
  <Level name="Created Week" visible="true" column="week_of_year" type="String" uniqueMembers="false" levelType="TimeWeeks" hideMemberIf="Never">
    <Annotations>
      <Annotation name="AnalyzerDateFormat">
        <![CDATA[[yyyy].[M].[w]]]>
      </Annotation>
    </Annotations>
  </Level>
  <Level name="Created Day" visible="true" column="day_of_month" type="String" uniqueMembers="false" levelType="TimeDays" hideMemberIf="Never">
    <Annotations>
      <Annotation name="AnalyzerDateFormat">
        <![CDATA[[yyyy].[M].[w].[d]]]>
      </Annotation>
    </Annotations>
  </Level>
  <Level name="Created Date" visible="true" column="DateCCYYMMDD" type="String" uniqueMembers="false" levelType="TimeDays" hideMemberIf="Never">
    <Annotations>
      <Annotation name="AnalyzerDateFormat">
        <![CDATA[[yyyy].[M].[w].[d].[yyyyMMdd]]]>
        </Annotation>
        </Annotations>
  </Level>
</Hierarchy>
<DimensionUsage source="EXCREATEDDATE" name="EXCREATEDDATE" visible="true" foreignKey="DC_tk" highCardinality="false"></DimensionUsage>

在使用 Pentaho 内置的相对日期过滤时如何防止这种情况发生? 对此问题的任何帮助表示赞赏。

【问题讨论】:

【参考方案1】:

我意识到,由于月份有两个值,这会扭曲层次结构。 The recognized hierarchy is:

[yyyy](年) [yyyy].[q](季度) [yyyy].[q].[M](月) [yyyy].[q].[M].[w](周) [yyyy].[q].[M].[w].[yyyy-MM-dd](日)

但如果将一周延长两个月以上,这将失败。

通过将月和周的顺序切换为如下所示来修改层次结构将起作用:

[yyyy](年) [yyyy].[q](季度) [yyyy].[q].[w](周) [yyyy].[q].[w].[M](月) [yyyy].[q].[w].[M].[yyyy-MM-dd](日)

【讨论】:

以上是关于相对日期过滤问题 Pentaho Workspace(Mondrian) AnalyzerDateFormat 周重叠两个月仅显示一周的开始日期的主要内容,如果未能解决你的问题,请参考以下文章

mondrian mdx 过滤日期维度中年份级别的集合

过滤行 - Pentaho

为啥我在 pentaho 中过滤行年龄 > 0 时会减号?

如何在 Kettle 中过滤 Mongodb INPUT 时传递变量

Pentaho 水壶勺日期操作

Pentaho 报告:日期选择器参数未解析为用户控制台网页报告