亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

java - Mondrian的schema中,如何做到同一緯度的不同level數(shù)據(jù)作為查詢條件來用?

瀏覽:106日期:2024-01-17 09:34:10

問題描述

如下schema代碼片段:

<?xml version='1.0' encoding='UTF-8' ?><Schema name='報(bào)表'> <cube name='cube_qc_pass_item' caption='報(bào)表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查詢的時(shí)候,使用model_name顯示,使用model_id作為查詢條件限制某個(gè)model_id,該如何書寫mdx語句?

已經(jīng)有如下錯(cuò)誤的mdx語句了mdx查詢語句1:

mdx語句

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

如下查詢報(bào)錯(cuò):

MondrianException: Mondrian Error:Hierarchy ’[models]’ appears in more than one independent axis.mdx查詢語句2:

mdx語句

SELECTNON 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 ROWSFROM [cube_qc_pass_model]

結(jié)果: 無法進(jìn)行查詢

問題解答

回答1:

其實(shí)根據(jù)MDX的語法,是不能將同一緯度的不同level放在多處地方的,如一個(gè)在rows中一個(gè)在columns中,或者一個(gè)在rows中或columns一個(gè)放在where子句中,就像提問中的第一個(gè)失敗的語句

交叉查詢的時(shí)候,由于使用了統(tǒng)一維度的不同level(更何況這里的兩個(gè)level其實(shí)是一一對應(yīng)的),并且一個(gè)level進(jìn)行篩選,一個(gè)level沒進(jìn)行篩選,

回答2:一直沒有找到好的解決辦法,變向?qū)崿F(xiàn)了需求,來分享下:

首先改寫schema文件,將model_name和model_id拆分成兩個(gè)維度:

<?xml version='1.0' encoding='UTF-8' ?><Schema name='報(bào)表'> <cube name='cube_qc_pass_item' caption='報(bào)表' 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='模板'/> </Hierarchy></Dimension><Dimension name='model_ids' foreignKey='model_id' caption='模板id'> <Hierarchy hasAll='true' allMemberName='model_id' primaryKey='id' primaryKeyTable='dim_qc_model'><Table name='dim_qc_model' /><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>

使用如下語句查詢,是可以查詢到數(shù)據(jù)的:

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

標(biāo)簽: java
主站蜘蛛池模板: xxxxx大片在线观看 | 国产乱码精品一区二区三区卡 | 99国产精品热久久久久久夜夜嗨 | 国产最新在线视频 | 精品国产麻豆免费网站 | 日本免费黄网站 | 日韩在线观看网址 | 国产大战女模特在线视频 | 日韩一区二区在线观看 | 美女二区 | 亚洲国产精品乱码在线观看97 | 毛片xxxx | 免费人成黄页在线观看日本 | 成 人色 网 站www | 牛牛影院成人免费网页 | 午夜色大片在线观看 | 日本视频中文字幕一区二区 | 1级黄色 | 亚洲欧美另类在线观看 | 国产精品99久久免费黑人 | 国产午夜免费一区二区三区 | 久久久久久国产精品三级 | 国产精品一级香蕉一区 | 青青青免费视频精品99 | 亚洲精品一二三四区 | 国产网红主播精品福利大秀专区 | 第一页综合 | 国产日韩一区二区三区在线播放 | 91成人在线视频 | x8x8国产在线观看2021 | 伊人久久精品成人网 | 欧美日韩高清一区 | 亚洲国产网 | 国产精品国产香蕉在线观看网 | 欧美啊啊| 日本特黄的免费大片视频 | 欧美精品免费一区欧美久久优播 | 永久免费看电视网站 | 国产特级毛片aaaaaaa高清 | 大色香蕉色视频大全 | 婷婷月|