Mdx-标志-实际

Mdx-标志-实际,mdx,Mdx,我有两个维度DimFlag和DimPNL,还有一个事实表FactAmount。我期待:当pnl是stat(is stat=1)时:sum(实际x FlagId) 对于pnl I,如果其值为0 X=0,则将金额乘以字段FlagId DimFlag FlagId FlagLabel ----------------- 1 NotClosed 0 IsClosed DimPNL PNLId PNLName Is Stat 1 a 1 2

我有两个维度DimFlag和DimPNL,还有一个事实表FactAmount。我期待:当pnl是stat(is stat=1)时:sum(实际x FlagId) 对于pnl I,如果其值为0 X=0,则将金额乘以字段FlagId

DimFlag

FlagId  FlagLabel
-----------------
1       NotClosed
0       IsClosed
DimPNL

PNLId  PNLName  Is Stat
1       a        1
2       test     1
3       test2    0
事实数量

  id    PNLId     FlagId  Actual
  1      1        1        100
  2      2        1        10
  3      3        0        120
我尝试了下面的MDX,但没有成功,你知道吗

Scope (
        [Dim PNL].[PNL].members,[Measures].members     

);   


this = iif([Dim PNL].[PNL].CurrentMember.Properties("Is Stat") =1 
,
aggregate([Dim PNL].[PNL].currentmember,[Measures].currentmember)* iif([Dim Flag].[Flag Label].[Flag Label].currentmember = 0, 0, 1),
aggregate([Dim PNL].[PNL].currentmember,[Measures].currentmember)
);

无法确定要聚合的内容(假设聚合函数只执行默认聚合,可以是count或其他类型)。试试这个:

with

-- check if PNL flag has IS_Stat = 1 value
-- actually it is better to add IS_Stat as attribute, but nvm
member isPNL as
(
  iif([Dim PNL].[PNL].CurrentMember.Properties("Is Stat")=1,1,0)
)

-- calculate FlagID * Actual. May require leaf level calculation, but 
-- I am not sure without checking your cube structure
member flagActualPair as
(
  [Measures].[Actual] * CINT([Dim Flag].[Flag Label].[Flag Label].currentmember.memberValue)
)

-- get sum of Actual * FlagID
member totalPNL as
(
  sum(EXISTING [Dim PNL].[PNL].members, [Measures].[flagActualPair])
)

-- final query - filter PNL axis, filtering out PNL's with IS_Stat = 0
select
{
  [Measures].[totalPNL]
} on 0,
{
  FILTER([Dim PNL].[PNL].allmembers, [Measures].[isPNL] = 1)
} on 1
from *YourCube*

ftp
命令是选项吗?或者至少
wget
?我喜欢
curl
,但我认为使用
ftp
wget
会更容易。如果这是您想要的,您可以设置一个代理:如果
是Stat
是0,结果应该是什么?从这个计算中得到的度量值应该如何命名?有什么原因让你“循环”一个关于Curl的完全不同的查询到一个关于MDX的查询?