MDX错误divide函数需要字符串或数字
我有MDX中的表达式MDX错误divide函数需要字符串或数字,mdx,Mdx,我有MDX中的表达式 IIF ( IsEmpty ( Filter ( [Measures].[Actual Hours] , [WORK ACTUAL].[MAINT D].[Maintenance Code] = 'PRO' ) / [Measures].[Actual Hours] * 100 ) ,0 , Filt
IIF
(
IsEmpty
(
Filter
(
[Measures].[Actual Hours]
,
[WORK ACTUAL].[MAINT D].[Maintenance Code] = 'PRO'
)
/
[Measures].[Actual Hours]
* 100
)
,0
,
Filter
(
[Measures].[Actual Hours]
,
[WORK ORDER ACTUAL].[MAINT D].[Maintenance Code] = 'PRO'
)
/
[Measures].[Actual Hours]
* 100
)
我得到了以下错误:
MdxScript(test)除法函数需要字符串或数字
1参数的表达式。使用了元组集表达式
Filter函数返回一个集合,因此返回错误消息:
返回根据搜索条件筛选指定集而得到的集 因此,您试图将一组成员除以一个数字 要解决它,您需要一个数值表达式,而不是一个集合。数值表达式为以下任一表达式:
([WORK ACTUAL].[MAINT D].&[PRO],[Measures].[Actual Hours])
([WORK ACTUAL].[MAINT D].&[PRO])
这也是一个元组和数值表达式:
([WORK ACTUAL].[MAINT D].&[PRO],[Measures].[Actual Hours])
([WORK ACTUAL].[MAINT D].&[PRO])
它将只使用脚本上下文中使用的度量值或多维数据集默认度量值
在过滤器的定义中,您还可以看到它的签名如下:
过滤器(集合表达式、逻辑表达式)
在脚本中,您有以下内容
Filter
(
[Measures].[Actual Hours] //<<measures are numeric_expression
,
[WORK ACTUAL].[MAINT D].[Maintenance Code] = 'PRO'
)
您没有正确使用筛选功能。Filter函数通常用于通过度量或某些其他计算逻辑过滤一组元组。为了按特定成员过滤度量值(我认为您正在尝试这样做),您只需创建一个元组
([WORK ACTUAL].[MAINT D].&[PRO],[Measures].[Actual Hours])
这将使用与[Work actual]维度中[Maint D]属性的[PRO]成员关联的事实记录计算实际小时数(使用定义的聚合函数,该函数很可能是总和)。根据维度/属性/etc的设置方式,这可能不是精确的语法…但希望您能理解
MEMBER [Measures].[<calc-measure-stage1>]
IIF(
[Measures].[Actual Hours] = 0
,NULL
,(
(
[WORK ACTUAL].[MAINT D].&[PRO]
,[Measures].[Actual Hours]
)
/
[Measures].[Actual Hours]
) * 100
)
MEMBER [Measures].[<calc-measure-stage2>]
IIF(
[Measures].[Actual Hours] = 0
,NULL
,(
(
[WORK ORDER ACTUAL].[MAINT D].&[PRO]
,[Measures].[Actual Hours]
)
/
[Measures].[Actual Hours]
) * 100
)
MEMBER [Measures].[<calc-measure>]
IIF(
IsEmpty([Measures].[<calc-measure-stage1>]
,[Measures].[<calc-measure-stage2>]
,[Measures].[<calc-measure-stage1>]
)
成员[度量].[]
IIF(
[度量值].[实际小时数]=0
无效的
,(
(
[实际工作][维护D]和[专业]
,[措施][实际时数]
)
/
[措施][实际时数]
) * 100
)
成员[措施].]
IIF(
[度量值].[实际小时数]=0
无效的
,(
(
[实际工单].[MAINT D]和[PRO]
,[措施][实际时数]
)
/
[措施][实际时数]
) * 100
)
成员[措施].]
IIF(
IsEmpty([Measures].[]
,[措施].[]
,[措施].[]
)
将CoalesceEmpty(表达式,NumaricValue)用于数字度量
同时使用除法(分子、分母、0)自动处理0异常的devided by 0 exception我想提供帮助,但不是猜测,你能告诉我这个计算的预期结果吗?你能用文字解释一下吗?还有上下文-这是一个更大脚本的一部分,还是这个逻辑进入了另一个工具,例如ssrs?提供了这个答案账单-尽管很难理解解释问题并准确了解用户希望从该计算中得到什么。当计算包括元组中的[Measures].[Actual Hours]
,然后除以[Measures].[Actual Hours]
时,答案不仅仅是1?不……因为被除数是除数的子集。它类似于父计算的百分比。