icCube - 基于最小值和最大值插值 RGBColors?
icCube - InterpolateRGBColors based on min & max values?
我知道 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;
有办法吗?
我不知道 icCube
所以以下可能不起作用,即使我使用了标准函数。正如@George 评论的那样,您可以使用标准 RANK
函数来查找每个成员的相对位置。
您需要将该值输入 [Measures].[color]
的定义...
WITH
SET [estMembersOrdered] AS
ORDER(
[Etablissement].[Etablissement].[Etablissement].ALLMEMBERS
,[Measures].[NbSejours]
,BDESC
)
MEMBER [Measures].[rnkEtablissement] AS
RANK(
[Etablissement].[Etablissement].CURRENTMEMBER
, [estMembersOrdered]
)
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]
,[Measures].[rnkEtablissement]
} 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()
....
一旦我有一点时间,我将使用 Vectors (here and here) 编写一个版本,该版本的性能更高,如上例所示,我们每次都计算集合的值。
希望对您有所帮助
我知道 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;
有办法吗?
我不知道 icCube
所以以下可能不起作用,即使我使用了标准函数。正如@George 评论的那样,您可以使用标准 RANK
函数来查找每个成员的相对位置。
您需要将该值输入 [Measures].[color]
的定义...
WITH
SET [estMembersOrdered] AS
ORDER(
[Etablissement].[Etablissement].[Etablissement].ALLMEMBERS
,[Measures].[NbSejours]
,BDESC
)
MEMBER [Measures].[rnkEtablissement] AS
RANK(
[Etablissement].[Etablissement].CURRENTMEMBER
, [estMembersOrdered]
)
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]
,[Measures].[rnkEtablissement]
} 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()
....
一旦我有一点时间,我将使用 Vectors (here and here) 编写一个版本,该版本的性能更高,如上例所示,我们每次都计算集合的值。
希望对您有所帮助