【问题标题】:How can I show hierarchy wise data in SAP HANA sp12 Calculation View如何在 SAP HANA sp12 计算视图中显示层次结构数据
【发布时间】:2018-04-07 16:03:16
【问题描述】:

我有一个表 A_PRODUCT_MASTER,其中一些列是 Level1、Level2、Level3。 这样级别 1 是父节点。 和层次结构如下: 1 级 -> 2 级 -> 3 级。 我想显示 Level-wise Sale_qty。 (sale_qty 可以从 A_ITEM_SALES 表中获取)

【问题讨论】:

  • 能否提供一些示例数据?
  • 假设我的 Level1 的值为 100,200,300。每个级别 1 都有子级别 Level2 说 100:a,b,c 200:d,e,f 300:g,h,i。每个 Level2 都有子级别 Level3 说 a: 1,2,3 b:4,5,6 等等。我想要像 100 --> a,b,c ----> 1,2,3 这样的层次结构。
  • 当你写“我想展示”时,你到底是什么意思?您是在寻找层次结构数据的 UI 前端表示还是在 HANA SQL 中计算层次结构查询的方法?

标签: hana


【解决方案1】:

使用 SUM() aggregation function using Partition By 子句可以是一个选项。

请检查以下带有示例数据的 SQLScript 代码

/*
create column table PRODUCT_MASTER (
Product varchar(30),
Level1 varchar(30), 
Level2 varchar(30), 
Level3 varchar(30),
Qty int
);

insert into PRODUCT_MASTER values ('SQLScript eBook', 'Book', 'Programming', 'Database', 10);
insert into PRODUCT_MASTER values ('Lambda', 'Book', 'Programming', 'Cloud', 5);
insert into PRODUCT_MASTER values ('NoSQL with DynamoDB', 'Book', 'Programming', 'Database', 3);
insert into PRODUCT_MASTER values ('SAP SD', 'Book', 'Software', 'ERP', 8);
insert into PRODUCT_MASTER values ('Mangala', 'Game', 'BoardGame', 'Traditional', 2);
*/

select
*,
Sum(Qty) Over (Partition by Level1) Lvl_1,
Sum(Qty) Over (Partition by Level1, Level2) Lvl_2,
Sum(Qty) Over (Partition by Level1, Level2, Level3) Lvl_3
from PRODUCT_MASTER

这个查询的输出如下

希望对你有帮助,我不确定你是否想达到这个结果

【讨论】:

  • 谢谢你,你所做的很有帮助。但是,当用户提出分层要求时,我必须在计算视图中实现这一点。我找到了一个链接,我们可以在其中查看数据预览时在变量中显示层次结构,但在我的情况下我无法实现相同的功能。将在此处分享链接。
  • blogs.sap.com/2017/01/26/… 类似这样的东西。
  • 对于层次结构数据,SAP HANA 数据库中有专门的层次结构函数供开发人员使用,请参考kodyaz.com/sap-abap/… 教程中给出的示例
  • 呃,哦!我猜我的 HANA SP12 不支持这些功能 :-(
  • 据我所知 SAP HANA 2 SP02 支持此层次结构功能
【解决方案2】:

@Prathamesh H, 我使用SQL RollUp 子句为您准备了第二个解决方案。 除了 SQL 上的 RollUp 功能之外,您还可以检查其他聚合函数,例如 Group By Grouping Sets 和 Cube

select distinct
    levels.Level1, levels.Level2, levels.Level3,
    SUM(sums.Qty) as Totals
from (

    select
        distinct level1, level2, level3
    from product_master

    union all

    select
        distinct level1, level2, NULL as level3
    from product_master

    union all

    select
        distinct level1, NULL as level2, NULL as level3
    from product_master

) as levels
left join (
    select
    Level1, Level2, Level3, Qty
    from PRODUCT_MASTER
) as sums
    on  levels.level1 = sums.level1 and 
        levels.level2 = sums.level2 and
        levels.level3 = sums.level3
group by rollup ( levels.Level1, levels.Level2, levels.Level3 )
having SUM(sums.Qty) > 0
order by levels.Level1, levels.Level2, levels.Level3

输出如下

【讨论】:

    【解决方案3】:

    如果问题主要是关于分层结构的计算查询(例如,总结每个组织单位的收入),那么在 SAP HANA 2 SP02 和更新版本中使用 Hierarchy Functions 将是可行的方法。

    在 UI 方面,您需要使用像 SAP Business Analytics for Office 这样的前端,它可以理解并表示数据的层次结构。

    【讨论】:

      猜你喜欢
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多