我正在创建一个将由包装器应用程序使用的SSRS报告。此应用程序将传递一个字符串参数,该参数可选地指定是否应该对“常规员工”或“临时员工”(temp是一组员工类型)过滤查询,并且我正在努力将最佳方法编码到MDX查询。
可能的字符串参数值:
我的参数表达式修改传递给查询的参数值:
=SWITCH(
Parameters!t.Value = "Regular Employee",
"{[Employee Type].[Hierarchy].[Employee Type].&[2]
,[Employee Type].[Hierarchy].[Employee Type].&[3]}",
Parameters!t.Value = "Temporary Employee",
"[Employee Type].[Hierarchy].[Employee Type].&[1]",
1=1,
"[Employee Type].[Hierarchy].[Employee Type].&[99999]"
)
请注意,我正在指定反向并使用排除,以便我的catch-all实际上不包括任何内容
最后是MDX查询:
SELECT
[Measures].[Headcount] ON COLUMNS,
Except([Employee Type].[Hierarchy].children, {StrToSet(@t)}) ON ROWS
FROM [GER]
现在,这很好用,我只是不喜欢这个查询的可维护性。
所以我意识到它很难看,它只是我现在唯一的工作示例。假设我无法修改包装器应用程序以更改参数值的传递方式,那么任何人都可以看到更好的方法来为此方案编写MDX,这是更具未来性的证据吗?我真的希望这个数据模型的键使用字符串值而不是递增数字键。这将是更安全的imo,我应该能够通过引用名称来实现这种类型的过滤器....不知怎的?