我知道 InterpolateRGBColors 函数通过 0 和 1 之间的值位置返回颜色......所以它似乎只能用百分比而不是数字来实现......
有没有办法具有相同的功能,但基于集合中返回的最小值和最大值?
我想要的是将颜色归因于我的度量,但在 min([Measures].[NbSejours]) 到 max([Measures].[NbSejours])(不是 0 到 1)的范围内......
WITH
MEMBER [Measures].[color] AS
InterpolateRGBColors(
[Measures].[NbSejours]
,rgb(176,224,230)
,rgb(135,206,235)
,rgb(0,191,255)
,rgb(100,149,237)
,rgb(0,0,255)
,rgb(0,0,139)
,rgb(25,25,112)
), BACK_COLOR=currentCellValue()
SELECT
{
{[Measures].[NbSejours]}
,[Measures].[color]
} ON COLUMNS
,{
NonEmpty
(
[Etablissement].[Etablissement].[Etablissement].ALLMEMBERS
,[Measures].[NbSejours]
)
} ON ROWS
FROM
(
SELECT
{{[Periode].[Periode].[All-M].&[2013]}} ON 0
FROM [Cube]
)
CELL PROPERTIES
STYLE
,CLASSNAME
,VALUE
,FORMATTED_VALUE;
有没有办法做到这一点 ?
最佳答案
InterpolateRGBColors 期望一个介于 0 和 1 之间的数值用于插值。所以我们需要调整我们的度量以确保我们得到正确的颜色。
我们的现场演示中有一个示例 here 。
我们需要的是在 0,1 之间缩放 [Measures].[NbSejours]。 icCube DistributionFlat 和 DistributionRank 中有两个没有记录的函数。
一个效率低下的版本
WITH
SET [AxisX] AS NonEmpty([Etablissement].Etablissement].Etablissement].ALLMEMBERS,[Measures].[NbSejours])
FUNCTION distr(x_) as DistributionFlat( [AxisX], [Measures].[NbSejours], x_ )
MEMBER [Measures].[color] AS
InterpolateRGBColors(
distr([Measures].[NbSejours])
,rgb(176,224,230)
,rgb(135,206,235)
,rgb(0,191,255)
,rgb(100,149,237)
,rgb(0,0,255)
,rgb(0,0,139)
,rgb(25,25,112)
), BACK_COLOR=currentCellValue()
....
一旦我有一点时间,我将使用向量( here 和 here )编写一个版本,它的性能更高,就像上面的例子一样,我们每次计算集合的值。
希望能帮助到你
关于colors - icCube - 基于最小值和最大值的 InterpolateRGBColors?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28319252/