IcCube - 具有父/子维度的树图

时间:2015-12-11 09:22:00

标签: parent-child treemap iccube

我目前正尝试在IcCube中构建谷歌树形图。我是否使用多级维度并分别定义每个级别的向下钻取(如图所示) herehere),一切正常。 我想要做的是使用父/子维度并告诉树形图,只需在钻入树形图表时沿着这个层次结构下去。

这可能吗?

这是我使用的(不工作)MDX,其中[categories]是父/子维度:

WITH
  MEMBER [category_name] as [categories].[categories].currentmember.name 
SELECT
  {[category_name],[Measures].[count_clicks]} on 0,
  non empty [categories].[categories] on 1
FROM
  [Cube]

2 个答案:

答案 0 :(得分:1)

Treemap是一个棘手的可视化。您需要将两个第一列定义为定义父/子关系。例如:

>>> i = 1,
>>> i
(1,)  # tuple with single element

第一列是构造Axis(1)名称,因此秒必须是父名称而不是成员名称。类似的东西:

$lines = str_replace("<ul>", "", $lines);
$lines = str_replace("</ul>", "", $lines);
$lines = str_replace("<li>", "<span>", $lines);
$lines = str_replace("</li>", "</span>", $lines);

你可以用作:

$array = array("<ul>", "</ul>", "<li>", "</li>");
$replace = array("", "", "<span>", "</span>");
$lines = str_replace($array, $replace, $lines);

这应该会更好。

希望它有所帮助。

答案 1 :(得分:0)

在用我自己的数据挣扎了一段时间之后,我采用了父/子Dimension(http://www.iccube.com/support/documentation/user_guide/schemas_cubes/dim_parentchild.php)的IcCube示例。然后我尝试了你的例子:

WITH
  MEMBER [parent_name] as IIF( [dim (ALL)].[Hierarchy].currentmember 
  is  [dim (ALL)].[Hierarchy].[ALL],'',
  [dim (ALL)]. [Hierarchy].currentmember.parent.name )
SELECT
  {[parent_name],[Measures].[value]} on 0,
  non empty [dim (ALL)].[Hierarchy] on 1
FROM
  [Cube]  

(NULL值必须替换为&#39;&#39;)

第一个维度有效,但如果我尝试深入到地图中,系统会告诉我,没有一行带有id&#39; World&#39;。你有任何想法,如何解决这个问题?

编辑: 在父/子维度中使用实名而不是ids(子:西班牙;父:欧洲,值:3)并用[dim(ALL)]替换[dim(ALL)]。[Hierarchy]。[Hierarchy]。代码中的members(),到目前为止我得到了一个树形图:

WITH
  MEMBER [parent_name] as IIF( [dim (ALL)].[Hierarchy].currentmember 
  is [dim (ALL)].[Hierarchy],'',
  [dim (ALL)].[Hierarchy].currentmember.parent.name )
SELECT
  {[parent_name],[Measures].[value]} on 0,
  non empty [dim (ALL)].[Hierarchy].members() on 1
FROM
  [Cube]

现在深入到下一级别后,这是一条错误消息,未能找到ID为&#34;欧洲&#34;&#39;的行。我在我的数据中添加了3级(孩子:马德里;父母:西班牙,价值:5),但我无法达到这个水平。点击&#34;西班牙&#34;没有改变任何事情。