SSAS/MDX:使用计数覆盖格式_字符串进行除法?
我在SSAS(多维)中格式化计算成员时遇到了一个奇怪的问题 我有一个每年定义的预算金额,然后通过将年度金额除以成员数量,将其分配到季度、月份或周级别 将作用域与DIVIDE and COUNT MDX函数一起使用时,将不再应用已定义的度量值格式(FORMAT_STRING) 下面是代码和示例:SSAS/MDX:使用计数覆盖格式_字符串进行除法?,ssas,mdx,Ssas,Mdx,我在SSAS(多维)中格式化计算成员时遇到了一个奇怪的问题 我有一个每年定义的预算金额,然后通过将年度金额除以成员数量,将其分配到季度、月份或周级别 将作用域与DIVIDE and COUNT MDX函数一起使用时,将不再应用已定义的度量值格式(FORMAT_STRING) 下面是代码和示例: CREATE MEMBER CURRENTCUBE.[Measures].[VA Budget] AS NULL, FORMAT_STRING = "#,#.00", VISIBLE = 1;
CREATE MEMBER CURRENTCUBE.[Measures].[VA Budget]
AS
NULL,
FORMAT_STRING = "#,#.00",
VISIBLE = 1;
([Measures].[VA Budget], [Datum].[Datum JQMT].[Jahr].Members) = [VA Jahresbudget];
([Measures].[VA Budget], [Datum].[Datum JQMT].[Quartal].Members) = DIVIDE([VA Jahresbudget], COUNT( Descendants(Ancestor([Datum].[Datum JQMT].CurrentMember, [Datum].[Datum JQMT].[Jahr]), [Datum].[Datum JQMT].[Quartal]) ));
([Measures].[VA Budget], [Datum].[Datum JQMT].[Monat].Members) = DIVIDE([VA Jahresbudget], COUNT( Descendants(Ancestor([Datum].[Datum JQMT].CurrentMember, [Datum].[Datum JQMT].[Jahr]), [Datum].[Datum JQMT].[Monat]) ));
([Measures].[VA Budget], [Datum].[Datum JQMT].[Tag].Members) = DIVIDE([VA Jahresbudget], COUNT( Descendants(Ancestor([Datum].[Datum JQMT].CurrentMember, [Datum].[Datum JQMT].[Jahr]), [Datum].[Datum JQMT].[Tag]) ));
([Measures].[VA Budget], [Datum].[Datum JWT].[Woche].Members) = DIVIDE([VA Jahresbudget], COUNT( Descendants(Ancestor([Datum].[Datum JWT].CurrentMember, [Datum].[Datum JWT].[Jahr]), [Datum].[Datum JWT].[Woche]) ));
[]
但是,当我没有在DIVIDE函数中使用计数时,它是正确应用的:
([Measures].[VA Budget], [Datum].[Datum JQMT].[Monat].Members) = DIVIDE([VA Jahresbudget], 12 ));
[]
此外,如果我定义了另一个计算成员并引用了前一个成员,则格式将再次正确应用:
CREATE MEMBER CURRENTCUBE.[Measures].[VA Budget2]
AS
[Measures].[VA Budget],
FORMAT_STRING = "#,#.00",
VISIBLE = 1;
[]
这里发生了什么事?这是虫子吗?如何在不定义其他计算成员的情况下使格式正确
(SSAS版本为2016-13.0.5206)MDX函数Divide()似乎会导致结果丢失格式 解决方法是创建一个新的(不可见)计算成员,该成员仅包含DIVIDE定义;然后在计算成员中使用它。这里有一个例子:
CREATE MEMBER CURRENTCUBE.[Measures].[My measure YTD]
AS NULL,
FORMAT_STRING = "0.0000",
VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = 'MeasureGroup';
CREATE MEMBER CURRENTCUBE.[Measures].[My measure YTD DIVIDE YMD]
AS DIVIDE (
AGGREGATE (
PeriodsToDate([Date].[Year-Month-Day].[Year YMD],
[Date].[Year-Month-Day].CurrentMember),
[Measures].[Dividend]
),
AGGREGATE (
PeriodsToDate([Date].[Year-Month-Day].[Year YMD],
[Date].[Year-Month-Day].CurrentMember),
[Measures].[Divisor]
)
),
FORMAT_STRING = "0.0000",
VISIBLE = 0 , ASSOCIATED_MEASURE_GROUP = 'MeasureGroup';
CREATE MEMBER CURRENTCUBE.[Measures].[My measure YTD DIVIDE YQMD]
AS DIVIDE (
AGGREGATE (
PeriodsToDate([Date].[Year-Quarter-Month-Day].[Year YQMD],
[Date].[Year-Quarter-Month-Day].CurrentMember),
[Measures].[Dividend]
),
AGGREGATE (
PeriodsToDate([Date].[Year-Quarter-Month-Day].[Year YQMD],
[Date].[Year-Quarter-Month-Day].CurrentMember),
[Measures].[Divisor]
)
),
FORMAT_STRING = "0.0000",
VISIBLE = 0 , ASSOCIATED_MEASURE_GROUP = 'MeasureGroup';
SCOPE ( [Measures].[My measure YTD] );
SCOPE ( [Date].[Data YMD].MEMBERS, [Date].[Year YMD].[Year YMD].MEMBERS );
THIS = [My measure YTD DIVIDE YMD];
END SCOPE;
SCOPE ( [Date].[Data YQMD].MEMBERS, [Date].[Year YQMD].[Year YQMD].MEMBERS );
THIS = [Measures].[My measure YTD DIVIDE YQMD];
END SCOPE;
END SCOPE;
MDX函数Divide()似乎会导致结果丢失格式 解决方法是创建一个新的(不可见)计算成员,该成员仅包含DIVIDE定义;然后在计算成员中使用它。这里有一个例子:
CREATE MEMBER CURRENTCUBE.[Measures].[My measure YTD]
AS NULL,
FORMAT_STRING = "0.0000",
VISIBLE = 1 , ASSOCIATED_MEASURE_GROUP = 'MeasureGroup';
CREATE MEMBER CURRENTCUBE.[Measures].[My measure YTD DIVIDE YMD]
AS DIVIDE (
AGGREGATE (
PeriodsToDate([Date].[Year-Month-Day].[Year YMD],
[Date].[Year-Month-Day].CurrentMember),
[Measures].[Dividend]
),
AGGREGATE (
PeriodsToDate([Date].[Year-Month-Day].[Year YMD],
[Date].[Year-Month-Day].CurrentMember),
[Measures].[Divisor]
)
),
FORMAT_STRING = "0.0000",
VISIBLE = 0 , ASSOCIATED_MEASURE_GROUP = 'MeasureGroup';
CREATE MEMBER CURRENTCUBE.[Measures].[My measure YTD DIVIDE YQMD]
AS DIVIDE (
AGGREGATE (
PeriodsToDate([Date].[Year-Quarter-Month-Day].[Year YQMD],
[Date].[Year-Quarter-Month-Day].CurrentMember),
[Measures].[Dividend]
),
AGGREGATE (
PeriodsToDate([Date].[Year-Quarter-Month-Day].[Year YQMD],
[Date].[Year-Quarter-Month-Day].CurrentMember),
[Measures].[Divisor]
)
),
FORMAT_STRING = "0.0000",
VISIBLE = 0 , ASSOCIATED_MEASURE_GROUP = 'MeasureGroup';
SCOPE ( [Measures].[My measure YTD] );
SCOPE ( [Date].[Data YMD].MEMBERS, [Date].[Year YMD].[Year YMD].MEMBERS );
THIS = [My measure YTD DIVIDE YMD];
END SCOPE;
SCOPE ( [Date].[Data YQMD].MEMBERS, [Date].[Year YQMD].[Year YQMD].MEMBERS );
THIS = [Measures].[My measure YTD DIVIDE YQMD];
END SCOPE;
END SCOPE;
尝试在定义中添加SOLVE\u ORDER=0。尝试在定义中添加SOLVE\u ORDER=0。