尝试创建要在KPI中使用的计算度量。该度量应计算运行时间大于7天的所有调用(服务台票证)。
使用此查询测试该度量,该查询运行速度快(<3秒)。
WITH MEMBER [Measures].[Count of Calls long runtime] AS
Count(
Filter(
[Call Details].[Call Number].MEMBERS
, [Measures].[Closed Call Run Time (days)] > 7
)
)
SELECT
{
[Count of Calls long runtime]
} ON 0
FROM
[Business Intelligence]
但是,在向查询添加其他成员时,突然需要永远完成:
WITH MEMBER [Measures].[Count of Calls long runtime] AS
Count(
Filter(
(
{
[Ipc Categorisation].[Categorisation].[Subcategory].&[222]
,[Ipc Categorisation].[Categorisation].[Subcategory].&[484]
}
, [Call Details].[Call Number].[Call Number].MEMBERS
)
, [Measures].[Closed Call Run Time (days)] > 7
)
)
SELECT
{
[Count of Calls long runtime]
} ON 0
,
{
[Customer].[Customer].[Customer]
} ON 1
FROM
[Business Intelligence]
WHERE
[Date].[Month Calendar].[Year].&[2016]
应该有大约40个电话出现,超过50个客户。
当我将[调用长时间运行时间]更改为另一个度量(计算或事实表)时,查询运行得很快。
我想了解为什么会这样。我该怎么做才能解决这个问题?
答案 0 :(得分:0)
FILTER
。它强制计算以逐个单元格模式运行。让我们尝试将计算更改为以块计算模式运行:
WITH MEMBER [Measures].IsGrt7 AS
IIF
(
[Measures].[Closed Call Run Time (days)] > 7,
1,
NULL
)
MEMBER [Measures].[Count of Calls long runtime] AS
SUM
(
{
[Ipc Categorisation].[Categorisation].[Subcategory].&[222]
,[Ipc Categorisation].[Categorisation].[Subcategory].&[484]
} * [Call Details].[Call Number].[Call Number].MEMBERS
,
[Measures].IsGrt7
)
要了解有关此主题的更多信息,请see here。
答案 1 :(得分:0)
还值得尝试在击中计算之前将其输入非空命名集:
WITH
SET [CallNonEmpty] AS
NONEMPTY(
{
[Ipc Categorisation].[Categorisation].[Subcategory].&[222]
,[Ipc Categorisation].[Categorisation].[Subcategory].&[484]
}
*[Call Details].[Call Number].[Call Number].MEMBERS
, [Measures].[Closed Call Run Time (days)]
)
MEMBER [Measures].[Count of Calls long runtime] AS
SUM(
EXISTING [CallNonEmpty],
IIF(
[Measures].[Closed Call Run Time (days)] > 7
,1
,NULL
)
)
SELECT
[Count of Calls long runtime] ON 0,
[Customer].[Customer].[Customer] ON 1
FROM [Business Intelligence]
WHERE
[Date].[Month Calendar].[Year].&[2016];