Mondrian的schema中,如何做到同一纬度的不同level数据作为查询条件来用?
来源:互联网 发布:cctv下载网络电视下载安装 编辑:程序博客网 时间:2024/06/14 09:00
如下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:
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]
如下查询报错:
MondrianException: Mondrian Error:Hierarchy '[models]' appears in more than one independent axis.
mdx查询语句2:
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]
结果: 无效过滤
一直没有找到好的解决办法,变向实现了需求,来分享下:
首先改写schema文件,将model_name和model_id拆分成两个维度:
<?xml version="1.0" encoding="UTF-8" ?><Schema name="报表"> <cube name="cube_qc_pass_item" caption="报表" 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>
使用如下语句查询,是可以查询到数据并实现了过滤的:
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]
by 刘迎光@萤火虫工作室
OpenBI交流群:495266201
MicroService 微服务交流群:217722918
mail: liuyg#liuyingguang.cn
博主首页(==防止爬虫==):http://blog.csdn.net/gsying1474
2 0
- Mondrian的schema中,如何做到同一纬度的不同level数据作为查询条件来用?
- Mondrian系列(三)-如何设计Mondrian的Schema(1)
- mysql实现同一张表内,统计不同条件的数据
- 超长查询,不同的查询条件,不同的参数,查出来的数据放在一个临时表中的方法
- mondrian的schema配置文件demo
- 同一进程中同一端口如何区分不同的Socket
- 同一进程中同一端口如何区分不同的Socket
- 用level-list让同一个ImageView根据条件来显示不同的内容
- SQL通过经度和纬度(已知的一个点)来查询方圆4km内符合条件的信息
- Mondrian系列(三)-如何设计Mondrian的Schema(2)-逻辑模型
- 同一数据中中插入符合条件的数据
- Oracle中不同条件的日期查询
- Oracle中不同条件的日期查询
- 【mysql】根据不同条件查询表中同一字段
- Hive作为Mondrian的数据源
- Union all的使用实现一条sql把不同表里面的数据查出来,或者按照不同的查询条件查出来的sql累加起来
- mondrian中schema文件生成工具schema-workbench的介绍和使用
- 如何动态选择字段作为条件来查询
- mybatis 打印sql log配置
- 【MIT 公开课】Computer Science and Programing Lession7
- 《圈圈教你玩USB》 第三章 USB鼠标的实现——看书笔记(1)
- svn 如何解决冲突
- js获取上传文件内容(未完待续)
- Mondrian的schema中,如何做到同一纬度的不同level数据作为查询条件来用?
- mac磁盘满解决方案
- 机器学习项目实战之用户流失预警
- mysql 索引建立
- 学习写一个操作系统(类UCOS和源码)
- linux搜索jar内容
- matlab中生成无重复随机整数的方法
- java异步任务处理
- eclipse插件开发(一)