MDX-IF函数或声明
来源:互联网 发布:淘宝一键傻瓜上传软件 编辑:程序博客网 时间:2024/05/19 03:43
大家都知道,在SCOPE应尽量避免使用IF函数或声明。为什么?
IF内部会被重写为IIF,假设SCOPE内,
EVALUATION NODE
SUBSPACE S0
IF CONDITION;
THIS=CALC1; HIGHER PRIORITY
END IF
SUBSPACE S1
THIS = CALC2; LOWER PRIORITY
SUBSPACE S2
实际上,MDX ENGINGE 并不考虑在SCOPE内IF的条件,只有在运行时才评价它的条件。
一个问题是,为什么CACL1,CALC2有自己的SUBSPACE1,SUBSPACE2,而不是和EVALUATION的SUBSPACE0 一样?
原因在于,计算的范围可能低于评价的层次。例如,查询在年的层次,但计算需要月的层次。
上面的IF内部会重写成IIF,
EVALUATION NODE
SUBSPACE S0
THIS = IIF(CONDITION,CACL1,NULL);
SUBSPACE S1
THIS = IIF(DISJOINTTEST,CACL2,NULL);
SUBSPACE S2
注意: DISJOINTTEST 是一个内部函数,它输入一个单元,如果这个单元不在高优先级计算内,返回结果TRUE。
当S1,S2处于同一个层次,如果IF条件返回FALSE,它返回TRUE,这样,它退回到NOT 条件;
当S2低于S1,它首先会发现S1内单元包括S2的单元,接着评价被包括的单元的NOT条件。
这点不同于IIF,处于同一个SUBSPACE. 所以,IF可能会评价比原先更多的单元。
例外的是:
如果CALC2是SEMI-ADDITIVE MEASURE,UNARY OPERATOR, STORAGE ENGINE QUERY,S2并不会被重写为IIF。
CACL2并评价为一个更大的SUBSPACE,
如果仅是取数据,即STORAGE ENGINE QUERY,没有问题,除非数据巨大,需要大量的DISK IOS;
如果是SEMI-ADDITIVE MEASURE, OR UNARY OPERATOR, S2会成为不准确,因为它的SUBSPACE大。
一个不准确的SUBSPACE 会导致MDX在S2建立子树时,采用 CELL-BY-CELL MODE。
- MDX-IF函数或声明
- MDX 函数参考 (MDX)
- MDX 函数参考 (MDX)
- MDX-IIF函数和CASE声明的执行计划
- MDX 函数参考 (MDX)--MSDN
- [SQL Server2008]MDX 函数参考 (MDX)
- MDX函数参考
- MDX函数参考
- MDX函数集合
- OLAP-mdx函数参考
- MDX标准函数列表
- MDX函数之 - Descendants
- MDX Aggregate函数
- MDX中或的问题
- MDX 函数的使用介绍
- MDX函数的一些用法
- 什么函数不能声明或定义为虚函数
- JSP声明定义网页范围的变量、函数或类
- vw虚拟机下CentOS6.2用锐捷xrgsu或mentohust 认证上网
- ORACLE解决登陆em状态暂挂方法
- C#中索引器的实现过程
- 嘿牛程序员_成都传智博客_讨论字符串中字符出现的次数
- IEC 61850通信协议体系介绍和分析
- MDX-IF函数或声明
- Windows 2008 R2 强制删除Cluster
- Android ApiDemos示例解析(23):App->Intents
- 如何学习h.264协议
- Android OpenGL ES->Textured Triangle
- Silverlight 引路蜂二维图形库示例:线段末端形状(LineCap)
- 引路蜂地图API:Java ME地图应用开发环境
- mac系统如何显示和隐藏文件
- 数组初始化的失误