java - Mondrian的schema中,如何做到同一纬度的不同level数据作为查询条件来用?
PHP中文网
PHP中文网 2017-04-18 10:51:49
0
2
526

如下schema代码片段:

<?xml version="1.0"  encoding="UTF-8" ?>
<Schema name="报表">
    <cube name="cube_qc_pass_item" caption="报表1" encoding="UTF-8">
        <table name="fact_qc_pass_record_item_join">
        <Dimension name="models" foreignKey="model_id" caption="模板">
            <Hierarchy hasAll="true" allMemberName="model_name" primaryKey="id" primaryKeyTable="dim_qc_model">
                <Table name="dim_qc_model" />
                <Level name="model_name" column="name" caption="模板"/>
                <Level name="model_id" column="id" caption="model_id"/>
            </Hierarchy>
        </Dimension>
        <Measure name="times" column="id" aggregator="count" formatString="#,###0" datatype="Numeric" caption="总量"/>
    </cube>
</Schema>

我想要在使用mdx查询的时候,使用model_name显示,使用model_id作为查询条件限制某个model_id,该如何书写mdx语句?

已经有如下错误的mdx语句了

mdx查询语句1:

mdx语句

SELECT
NON EMPTY {Hierarchize({{[Measures].[times], [Measures].[notPass], [Measures].[pass]}})} ON COLUMNS,
NON EMPTY {Hierarchize([models].[model_name].Members)} ON ROWS
FROM [cube_qc_pass_model] where [models].[model_id].[5cda6afa-f837-4603-af27-0915cfb812fd]

如下查询报错:

MondrianException: Mondrian Error:Hierarchy '[models]' appears in more than one independent axis.

mdx查询语句2:

mdx语句

SELECT
NON EMPTY {Hierarchize({{[Measures].[times], [Measures].[notPass], [Measures].[pass]}})} ON COLUMNS,
NON EMPTY Hierarchize(Union(CrossJoin([models].[model_name].Members, CrossJoin([times].[minute].Members, [agent_nos].[agent_no].Members)), CrossJoin([models].[model_id].[5cda6afa-f837-4603-af27-0915cfb812fd], CrossJoin([times].[minute].Members, [agent_nos].[agent_no].Members)))) ON ROWS
FROM [cube_qc_pass_model]

结果:
无法进行查询

PHP中文网
PHP中文网

认证高级PHP讲师

모든 응답(2)
大家讲道理
  1. 실제로 MDX의 구문에 따르면 행과 열에 하나, 행이나 열에 하나, 위치에 하나 등 여러 위치에 동일한 위도의 서로 다른 수준을 배치할 수 없습니다. 절.

  2. 질문의 첫 번째 실패한 문과 같습니다.
  3. 교차 쿼리 중에는 동일한 차원의 서로 다른 수준이 사용되므로(여기서 두 수준이 실제로 일대일 대응이라는 것은 말할 것도 없습니다) 한 수준은 필터링되고 다른 수준은 필터링되지 않습니다. 필터링됨,

迷茫

아직 좋은 해결책을 찾지 못해 방향을 바꾸게 되었고 그 요구를 깨닫게 되었습니다.

먼저 스키마 파일을 다시 작성하고 model_name과 model_id를 두 차원으로 분할합니다.

으아악

다음 쿼리를 사용하여 데이터를 쿼리할 수 있습니다.

으아악
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿