【问题标题】:IcCube + Ragged hierarchiesIcCube + 参差不齐的层次结构
【发布时间】:2016-08-30 02:14:28
【问题描述】:

IcCube 是否支持来自平面源的参差不齐的层次结构?它通常使用层次结构级别的“HideMemberIf”属性实现(如果成员与父级相同,您可以将其设置为隐藏)

微软版本(以及我目前使用的):https://msdn.microsoft.com/en-AU/library/ms365406.aspx

--编辑 1-- 这是 9 级架构中的 3 级层次结构的示例。好处是硬编码的属性和级别标识符意味着更简单的 MDX 计算,无论加载哪种层次结构

PortfolioKey,PortfolioLevel1Key,PortfolioLevel1Name,PortfolioLevel1Label,PortfolioLevel2Key,PortfolioLevel2Name,PortfolioLevel2Label,PortfolioLevel3Key,PortfolioLevel3Name,PortfolioLevel3Label,PortfolioLevel4Key,PortfolioLevel4Name,PortfolioLevel4Label,PortfolioLevel5Key,PortfolioLevel5Name,PortfolioLevel5Label,PortfolioLevel6Key,PortfolioLevel6Name,PortfolioLevel6Label,PortfolioLevel7Key,PortfolioLevel7Name,PortfolioLevel7Label,PortfolioLevel8Key,PortfolioLevel8Name,PortfolioLevel8Label,PortfolioLevel9Key,PortfolioLevel9Name,PortfolioLevel9Label
7,100001,Non-Perishable,Category,200001,Condiment,Sub Category,300007,Pepper,Product,400007,Pepper,Product,500007,Pepper,Product,600007,Pepper,Product,700007,Pepper,Product,800007,Pepper,Product,900007,Pepper,Product
8,100001,Non-Perishable,Category,200001,Condiment,Sub Category,300008,Salt,Product,400008,Salt,Product,500008,Salt,Product,600008,Salt,Product,700008,Salt,Product,800008,Salt,Product,900008,Salt,Product
5,100001,Non-Perishable,Category,200002,Soup,Sub Category,300005,Chicken,Product,400005,Chicken,Product,500005,Chicken,Product,600005,Chicken,Product,700005,Chicken,Product,800005,Chicken,Product,900005,Chicken,Product
6,100001,Non-Perishable,Category,200002,Soup,Sub Category,300006,Vegetable,Product,400006,Vegetable,Product,500006,Vegetable,Product,600006,Vegetable,Product,700006,Vegetable,Product,800006,Vegetable,Product,900006,Vegetable,Product
1,100002,Perishable,Category,200003,Dairy,Sub Category,300001,Cheese,Product,400001,Cheese,Product,500001,Cheese,Product,600001,Cheese,Product,700001,Cheese,Product,800001,Cheese,Product,900001,Cheese,Product
2,100002,Perishable,Category,200003,Dairy,Sub Category,300002,Milk,Product,400002,Milk,Product,500002,Milk,Product,600002,Milk,Product,700002,Milk,Product,800002,Milk,Product,900002,Milk,Product
3,100002,Perishable,Category,200004,Fruit,Sub Category,300003,Apple,Product,400003,Apple,Product,500003,Apple,Product,600003,Apple,Product,700003,Apple,Product,800003,Apple,Product,900003,Apple,Product
4,100002,Perishable,Category,200004,Fruit,Sub Category,300004,Orange,Product,400004,Orange,Product,500004,Orange,Product,600004,Orange,Product,700004,Orange,Product,800004,Orange,Product,900004,Orange,Product

【问题讨论】:

    标签: iccube


    【解决方案1】:

    它应该是直截了当的。让我们以一个地理维度为例,将摩纳哥作为一个没有国家的城市(为了示例)

    Europe
          Monaco  (no country)
       Spain
          Madrid
       France
          Paris
    

    我们的数据源可以这样定义(每列是一个级别):

    Continent,Country,City
    Europe,Spain,Madrid
    Europe,France,Paris
    Europe,,Monaco
    

    请注意,摩纳哥的国家是空的。

    您现在可以创建多级层次结构并查看参差不齐的版本(摩纳哥父级是欧洲):

    【讨论】:

    • 好的,所以为空/空的父母。摩纳哥的等级序数是多少? IsLeaf() 有效吗?问题是,我们使用多维数据集作为具有固定模式的计算引擎。关于“如果与父级相同则忽略”的一个好处是我们可以将 3 级层次结构加载到具有 9 个硬编码级别的模式中,并且多维数据集的行为就像 4+ 级不存在一样(例如 IsLeaf() 为 3 级返回 true 等)。我们还具有在前端/报告中调用的级别 1 到 9 的标签属性,因此数据标题不会显示为 HierarchyLevel[1-9] 所以我不确定它如何与消隐一起工作父母...
    • 级别序号将是城市之一,leaf() 将起作用。在 icCube 中,您可以在原始表上创建一个 javascript 视图来模拟这种“如果与父级相同则忽略”行为...不确定是否完全理解您的问题
    • 我们的逻辑需要 isleaf() 在“国家”级别为真,我需要能够通过索引从已知/硬编码的“顶级”级别(例如您的例子)。这有点难,因为使用我上面的 src 数据我需要投资组合级别 1 到 6 为空白。因此,MDX 立方体计算必须弄清楚第 7 级实际上是第 1 级。使用 javascript 是什么意思?作为转型?结果表会是什么样子?我尝试在示例数据中清除投资组合级别 4 到 9 的属性,但 iccube 抛出“级别没有成员”错误
    • 没有会员就不能有关卡,我猜这就是错误。摩纳哥不是一个国家,不确定是否了解 leaf() / Country 问题。 Javascript 是 ETL 层的一部分,它允许转换数据源(如果不是 SQL,可能会很方便)。构建一个 icCube In-Memory 示例可能有助于讨论
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 2014-07-19
    • 1970-01-01
    • 2015-09-02
    • 2018-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多