是否有可能在 icCube 仪表板的过滤器列表中动态 disable/hide 手动过滤项目?

Is there a possibility to dynamically disable/hide manual filter items in a filter list in icCube dashboards?

我们为所有客户使用一组仪表板;在开始 HTML 中,我们将基础模型切换到用户被授权的模型。

仪表板大量使用具有 层次结构级别 的过滤器列表作为选择项。例如,参见随附的屏幕打印。

一切正常,

除了...

其中一位客户要求从多个列表中删除某些筛选项,因为他们的模型没有这些层次结构级别填充数据并且全部是 "n/a" 或“-”。但是,如果我们为他们破例并保存专门为他们设置的仪表板副本,我们 'kill' 可以为所有客户提供全球可重复使用的仪表板集。我们不想那样做。

我们已尝试在架构定义中设置静态 SET,但这行不通,因为它不允许组合层次项。

我们可以采用哪些其他选项来为特定客户隐藏某些过滤器元素?

"manual" 过滤器一旦创建就不会向服务器发送任何请求,因此无法过滤所选项目。因此,您应该使用使用自定义 MDX 的过滤器,该过滤器会发回过滤器小部件所需的度量。

像这样:

WITH
  MEMBER ic3Name       AS strToLevel([Filters].currentMember).name
  MEMBER ic3UName      AS strToLevel([Filters].currentMember).uniqueName
  MEMBER ic3PName      AS strToLevel([Filters].currentMember).hierarchy.name
  MEMBER ic3Measure    AS 0
  MEMBER ic3IsSelected AS false
  MEMBER ic3FilterName AS [Measures].[ic3Name]
  MEMBER ic3Key        AS [Measures].[ic3Name]
SELECT
  {[Measures].[ic3Name],[Measures].[ic3UName],[Measures].[ic3PName],[Measures].[ic3Measure],[Measures].[ic3IsSelected],[Measures].[ic3FilterName], [Measures].[ic3Key]} ON 0, 
  { report-xyz-filter-xyz } ON 1
FROM [Cube]

诀窍是在您的模式中创建级别集 report-xyz-filter-xyz:绕过 MDX 限制(集是来自同一组的成员列表层次结构),此集合将包含 'fake' 个计算成员(不能是 [Measures],因为 MDX 查询不能在两个轴上包含 [Measures])。这些成员的评估是一个字符串,表示级别的唯一名称。

create measure [Filter].[report-xyz-filter-xyz Region]  as [Customers].[Geography].[Region].uniqueName, VISIBLE=0
create measure [Filter].[report-xyz-filter-xyz Product] as [Product].[Product].[Product].uniqueName, VISIBLE=0
....

然后:

create set report-xyz-filter-xyz  as { ... } 

你可以自由地为每个客户模式定义一个集合,创建那些假计算成员的广泛列表,或者更好地使用 MDX 表达式设置(过滤)正确列表的单个定义根据 'current' 客户的说法,那些假会员。

未经测试,因此您可能需要对其进行调整,但我想您已经大致了解了。

希望对您有所帮助。