Ssas 在MDX查询中结合度量和kpi目标时如何去除空单元格
我在MDX查询中遇到了这个问题,在向查询中添加KPI目标、趋势和状态后,NON-EMPTY子句没有按照我的预期工作。 基本查询如下所示Ssas 在MDX查询中结合度量和kpi目标时如何去除空单元格,ssas,mdx,Ssas,Mdx,我在MDX查询中遇到了这个问题,在向查询中添加KPI目标、趋势和状态后,NON-EMPTY子句没有按照我的预期工作。 基本查询如下所示 SELECT NON EMPTY({[Measure1], [Measure2], KPIValue('MyKpi')}) ON COLUMNS, NON EMPTY [Dim Country].[Name].[Name].ALLMEMBERS ON ROWS FROM [BIA CO] 返回类似这样的内容,这很好: Measu
SELECT
NON EMPTY({[Measure1], [Measure2], KPIValue('MyKpi')})
ON COLUMNS,
NON EMPTY [Dim Country].[Name].[Name].ALLMEMBERS ON ROWS
FROM [BIA CO]
返回类似这样的内容,这很好:
Measure1 Measure2 MyKpi
Canada 7977 4487 3231
USA 6 14 6
UK 442 1179 180
返回类似于:
Measure1 Measure2 MyKpi MyKpi Goal MyKpi Status MyKpi Trend
Mexico (null) (null) (null) 40300 -1 -1
Cuba (null) (null) (null) 40300 -1 -1
Canada 7977 4487 3231 40300 -1 1
Portugal (null) (null) (null) 40300 -1 -1
China (null) (null) (null) 40300 -1 -1
USA 6 14 6 40300 -1 1
UK 442 1179 180 40300 -1 1
措施1措施2我的KPI我的KPI目标我的KPI状态我的KPI趋势
墨西哥(空)(空)(空)40300-1-1
古巴(空)(空)(空)40300-1-1
加拿大79774487323140300-11
葡萄牙(空)(空)(空)40300-1-1
中国(空)(空)(空)40300-1-1
美国614640300-11
英国442 1179 180 40300-1
除了目标、状态和趋势之外,我如何删除所有带空的行?只需将空添加到KPI中即可。如果设置Measure1,将过滤掉所有空元组。它将从Measure1继承非空行为。您还可以在具有类似逻辑的行上返回以下集合(输出将相同):
我有一个类似的问题,这就是我所做的。就我而言,我无法控制立方体的设计。我不是专家,所以在使用之前,请等待一些有经验的反馈
WITH
MEMBER [KPIValue(ReservaKPI)] as KPIValue('ReservaKPI')
MEMBER [KPIGoal(ReservaKPI)] as CASE WHEN ISEMPTY([KPIValue(ReservaKPI)]) THEN NULL ELSE KPIGoal('ReservaKPI') END
MEMBER [KPIStatus(ReservaKPI)] as CASE WHEN ISEMPTY([KPIValue(ReservaKPI)]) THEN NULL ELSE KPIStatus('ReservaKPI') END
MEMBER [KPITrend(ReservaKPI)] as CASE WHEN ISEMPTY([KPIValue(ReservaKPI)]) THEN NULL ELSE KPITrend('ReservaKPI') END
SELECT
NON EMPTY({[Cant Adultos], [Cant Noches], [KPIValue(ReservaKPI)], [KPIGoal(ReservaKPI)], [KPIStatus(ReservaKPI)], [KPITrend(ReservaKPI)]})
ON COLUMNS,
NON EMPTY [Dim Mun].[NOMBRE].[NOMBRE].ALLMEMBERS ON ROWS
FROM [BIA CO]
我有时喜欢这样使用
HAVING
子句:
SELECT
NON EMPTY
{
[Measure1]
,[Measure2]
,KPIValue('MyKpi')
,KPIGoal('MyKpi')
,KPIStatus('MyKpi')
,KPITrend('MyKpi')
} ON COLUMNS
,NON EMPTY
[Dim Country].[Name].[Name].ALLMEMBERS HAVING
(NOT IsEmpty([Measure1])) AND (NOT IsEmpty([Measure2])) ON ROWS
FROM [BIA CO];
但是您可以按照@user1998299的建议,将该逻辑移动到WITH
子句中-我可能会做一个自定义设置:
WITH
SET [SmallSet] AS
NonEmpty
(
NonEmpty
(
[Dim Country].[Name].[Name].ALLMEMBERS
,[Measure1]
)
,[Measure2]
)
SELECT
NON EMPTY
{
[Measure1]
,[Measure2]
,KPIValue('MyKpi')
,KPIGoal('MyKpi')
,KPIStatus('MyKpi')
,KPITrend('MyKpi')
} ON COLUMNS
,NON EMPTY
[SmallSet] ON ROWS
FROM [BIA CO];
SELECT
NON EMPTY
{
[Measure1]
,[Measure2]
,KPIValue('MyKpi')
,KPIGoal('MyKpi')
,KPIStatus('MyKpi')
,KPITrend('MyKpi')
} ON COLUMNS
,NON EMPTY
[Dim Country].[Name].[Name].ALLMEMBERS HAVING
(NOT IsEmpty([Measure1])) AND (NOT IsEmpty([Measure2])) ON ROWS
FROM [BIA CO];
WITH
SET [SmallSet] AS
NonEmpty
(
NonEmpty
(
[Dim Country].[Name].[Name].ALLMEMBERS
,[Measure1]
)
,[Measure2]
)
SELECT
NON EMPTY
{
[Measure1]
,[Measure2]
,KPIValue('MyKpi')
,KPIGoal('MyKpi')
,KPIStatus('MyKpi')
,KPITrend('MyKpi')
} ON COLUMNS
,NON EMPTY
[SmallSet] ON ROWS
FROM [BIA CO];