【问题标题】:MDX Query fails in Petaho BA serverPentaho BA 服务器中的 MDX 查询失败
【发布时间】:2026-01-28 21:35:01
【问题描述】:

我的数据库连接是通过 JDBC 连接的 MySQL,标准的 innodb。 由此,我创建了一个非常简单的数据源,其中包含两个维度和一个度量。

两个维度分别是:

  • 位置(字符串)
  • ddate(日期/时间,至少在Mysql中)

度量是相同的“位置”元素,设置为按计数聚合

我正在尝试按位置、星期几(周一至周日或 1-7 都可以)获取相当简单的项目计数

我已经尝试了以下几十种变体,包括“with member...as...”来提取星期几,都失败了。

SELECT
NON EMPTY Hierarchize({ datepart("d",cdate([diDate.hDate].[mDate]) }) ON COLUMNS,
NON EMPTY {Hierarchize({[diLocation.hLocation].[mLocation].Members})} ON ROWS
FROM [k_olap]

任何帮助将不胜感激。我已经为此苦苦思索了好几个小时,而且似乎对于日期的一个部分来说它应该是简单直接的,而不需要在模式中建立一个完整的时间维度,而 Pentaho BA 不需要方便在网络服务器中。

这是 Pentaho BA 从 MySQL 数据源生成的 XML 模式:

<Schema name="k_olap">
  <Dimension name="diDate">
    <Hierarchy name="hDate" hasAll="true" primaryKey="ID">
      <Table name="post" schema="kn"/>
      <Level name="mDate" uniqueMembers="false" column="ddate">
      </Level>
    </Hierarchy>
  </Dimension>
  <Dimension name="diLocation">
    <Hierarchy name="hLocation" hasAll="true" primaryKey="ID">
      <Table name="post" schema="kn"/>
      <Level name="mLocation" uniqueMembers="false" column="location" type="String">
      </Level>
    </Hierarchy>
  </Dimension>
  <Cube name="k_olap">
    <Table name="post" schema="kn"/>
    <DimensionUsage name="diDate" source="diDate" foreignKey="ID"/>
    <DimensionUsage name="diLocation" source="diLocation" foreignKey="ID"/>
    <Measure name="mesLocation" column="location" aggregator="count" formatString="Standard"/>
  </Cube>
</Schema>

【问题讨论】:

    标签: mdx pentaho olap mondrian


    【解决方案1】:

    创建一个适当的日期维度和层次结构,将星期几作为表中的列,然后使用它。

    看这里:

    http://type-exit.org/adventures-with-open-source-bi/2010/07/a-simple-date-dimension-for-mondrian-cubes/

    【讨论】:

    • 是的,但该问题与查询中的语法问题有关,并要求提供不涉及架构更改的临时解决方案。我了解正式日期维度的优点,但数据源多种多样,我无法为用户可能出于临时或一次性需求而拥有的每个电子表格或 csv 文件中的所有日期字段创建带有日期维度的架构。
    • 很公平。我没有在 MDX 中看到 datepart - 你在哪里看到这是一个有效的 mdx 函数?还要发布 MDX 错误 - 没有太多帮助,看不到。
    最近更新 更多