SAP HANA 计算视图:类型及创建方法

⚡ 智能摘要

计算视图 SAP HANA 是最强大的信息视图。它通过连接、联合、投影、聚合和排名节点,将表、列视图、分析视图和其他计算视图组合在一起。

  • 🧩 核心宗旨: 能够处理需要从多个事实表中获取度量值的场景,而分析视图无法做到这一点。
  • 🗂️ 时间 Foundation: 表、列视图、分析视图和其他计算视图都可以作为数据源。
  • 🔧 五种节点类型: 连接、联合、投影、聚合和排名以图形方式构建场景。
  • 节点限制: 连接节点接受两个源;投影节点接受一个源;并集节点接受多个源。
  • 🌐 内置处理: 客户端、语言和货币转换均原生支持。
  • ✍️ 两种口味: 图形视图在编辑器中构建;基于脚本的视图用 SQLScript 编写。
  • 📊 报告灵活性: 计算视图可以包含多个度量,也可以不包含任何度量(用于列表式报表)。

SAP HANA 计算视图

什么是计算视图?

SAP HANA 计算视图是一个强大的信息视图。

SAP HANA 分析视图度量只能从一个事实表中选择。当信息视图中需要更多事实表时,计算视图就会出现。计算视图支持复杂计算。

计算视图的数据基础可以包括表、列视图、分析视图和计算视图。

我们可以创造 加入、数据源上的联合、聚合和投影。

计算视图可以包含多个度量,并且可以用于多维报告或无度量(用于列表类型报告)。

的特征 SAP HANA 计算视图如下 –

  • 支持复杂计算。
  • 支持OLTP和OLAP模型。
  • 支持客户端处理、语言、货币转换。
  • 支持 Union、Projection、Aggregation、Rank 等。

SAP HANA 计算视图有两种类型 -

  1. SAP HANA 图形计算视图(由 SAP HANA Studio 图形编辑器)。
  2. SAP HANA 基于脚本的计算视图(由 SQL 脚本创建) SAP HANA 工作室).

图形化计算视图与脚本化计算视图

这两种风格都能产生同一种类型的对象,但其构建和维护方式却截然不同,而且一旦视图投入生产,选择就很难逆转。

参数 图形 基于脚本
内置 在编辑器中拖放节点 CE_ 或 SQL 块中的 SQLScript
优化 引擎可以在运行时修剪未使用的节点。 按原样执行,优化空间较小。
可读性 场景图本身就是一个文档。 完全取决于作者
能力 满足大多数要求 处理任何节点组合都无法表达的逻辑
维护 任何模型制作者都可以遵循这个方法。 需要具备 SQLScript 技能
推荐 默认选择 只有在图形确实无法做到的情况下才会这样做。

性能是决定性因素。图形视图允许 HANA 丢弃查询不需要的输出列的节点,因此未使用的连接不会产生任何开销。而基于脚本的视图则会无条件地运行其包含的每个语句。建议先使用图形视图,仅在必要时才将单个节点迁移到脚本视图。

SAP HANA 图形计算视图

In SAP HANA 分析视图,我们只能从一个表中选择一个度量。

因此,当需要一个包含来自不同表的度量的视图时,它不能通过分析视图来实现,而只能通过计算视图来实现。

因此在这种情况下,我们可以对每个表使用两个不同的分析视图,并在计算视图中将它们连接起来。

我们将通过连接两个分析视图“AN_PUR​​CHASE_ORDER”和“AN_FI_DOCUMENT”来创建一个图形计算视图“CA_FI_LEDGER”。

CA_FI_LEDGER 将显示与采购订单相关的财务文件详细信息。

步骤1) 在此步骤中,

  1. 转到包(此处建模)并右键单击。
  2. 选择新选项。
  3. 选择计算视图。

SAP HANA 图形计算视图

将显示计算视图编辑器,其中场景面板显示如下 -

SAP HANA 图形计算视图

场景面板的详细信息如下 -

调色板: 本节包含以下节点,这些节点可用作构建计算视图的数据源。我们有 5 种不同类型的节点,它们是:

  1. 加入: 此节点用于连接两个源对象并将结果传递到下一个节点。连接类型可以是内连接、左外连接、右外连接和文本连接。 注意: 我们只能将两个源对象添加到连接节点。
  2. 联盟: 用于在多个源之间执行 union all 操作。源可以是 n 个对象。
  3. 投影: 这用于选择列、过滤数据并创建附加列,然后我们在下一个节点(如联合、聚合和排名)中使用它。 注意: 我们只能在投影节点中添加一个源对象。
  4. 聚合: 这用于根据所选属性对特定列执行聚合。
  5. 排名: 这是 SQL 中 RANK 函数的精确替代品。我们可以根据需要定义分区和 order by 子句。

步骤2)

  1. 从调色板单击 Projection 节点,然后将其从采购订单分析视图拖放到场景区域。将其重命名为“Projection_PO”。
  2. 从调色板单击 Projection 节点,然后将其拖放到 FI 文档分析视图的场景区域。将其重命名为“Projection_FI”。
  3. 将分析视图“AN_PUR​​CHASE_ORDER”和“AN_FI_DOCUMENT”从内容文件夹分别拖放到“Projection_PO”节点和“Projection_FI”节点。
  4. 从调色板中单击“加入节点”,然后将其拖放到场景区域。
  5. 将 Projection_PO 节点连接到 Join_1 节点。
  6. 将 Projection_FI 节点连接至 Join_1 节点。
  7. 从调色板单击聚合节点并将其拖放到场景区域。
  8. 将 Join_1 节点加入到 Aggregation 节点。

SAP HANA 图形计算视图

我们添加了两个分析视图,用于创建计算视图。

步骤3) 单击聚合下的 Join_1 节点,您可以看到显示了详细信息部分。

  1. 从 Projection_PO 节点中选择所有列进行输出。
  2. 从 Projection_FI 节点中选择所有列进行输出。
  3. 将 Projection_PO 节点连接到 Projection_FI 节点,连接依据是列 Projection_PO.PO_Number = Projection_FI.PO_NO。

SAP HANA 图形计算视图

步骤4) 在此步骤中,

  1. 单击“聚合”节点,详细信息将显示在窗格右侧。
  2. 从详细信息窗口右侧显示的Join_1中选择用于输出的列。

SAP HANA 图形计算视图

步骤5) 现在,单击语义节点。

SAP HANA 图形计算视图

详细信息屏幕将显示如下。定义列的属性和度量类型,并标记此输出的键。

  1. 定义属性和度量。
  2. 将 PO_Number 和 COMPANY 标记为关键。
  3. 将 ACC_DOC_NO 标记为关键。

SAP HANA 图形计算视图

步骤6) 从窗口顶部栏验证并激活计算视图。

SAP HANA 图形计算视图

  1. 单击验证图标。
  2. 点击激活图标。

计算视图将被激活,并将显示在建模包下,如下所示 -

SAP HANA 图形计算视图

选择计算视图并右键单击 -> 数据预览

我们添加了两个分析视图,并从两个分析视图中选择度量(TAX_AMOUNT,GROSS_AMOUNT)。

数据预览屏幕将显示如下内容 -

SAP HANA 图形计算视图

基于脚本的视图中的 CE 函数

⚠️ 版本说明: 计算引擎计划运算符(如下所述的 CE_ 函数)已被弃用。 SAP这些函数仍然保留在此处,因为大量现有代码都使用了它们,但新的开发应该使用标准 SQL,优化器现在至少可以很好地处理标准 SQL。在同一条语句中混合使用 CE_ 函数和 SQL 也是导致执行计划不佳的已知原因。

CE 函数也称为计算引擎计划 Opera托尔(CE Opera语法树)是 SQL 语句的替代方法。

CE 功能有两种类型 –

数据源访问函数

此函数将列式表或列式视图绑定到表变量。以下是一些数据源访问函数列表——

  • 列表
  • CE_JOIN_VIEW
  • OLAP_VIEW 视图
  • CE_CALC_VIEW

相关的 Operator 函数

通过使用关系 Opera用户可以绕过 SQL 在评估过程中,处理器直接与计算引擎通信。以下是一些关系型处理器。 Operator 函数列表 –

  • CE_JOIN(用于在两个数据源之间执行内连接,并读取所需的列/数据。)
  • CE_RIGHT_OUTER_JOIN(用于在两个数据源之间执行右外连接,并将查询到的列显示到输出。)
  • CE_LEFT_OUTER_JOIN(用于在源之间执行左外连接,并将查询的列显示到输出)。
  • CE_PROJECTION(此函数显示源数据中的特定列,并应用筛选器来限制数据。它还提供列名别名功能。)
  • CE_CALC(用于根据业务需求计算附加列。这与图形模型中的计算列相同。)

下面是一个列表 SQL 使用 CE 函数和一些示例-

查询名称 SQL查询 CE-内置功能
选择列表的查询 从“COLUMN_TABLE”中选择C,D。 CE_COLUMN_TABLE(“COLUMN_TABLE”,[C,D])
在属性视图中选择查询 从“ATTRIBUTE_VIEW”中选择 C、D CE_JOIN_VIEW(“ATTRIBUTE_VIEW”,[C,D])
在分析视图上选择查询 从“ANALYTIC_VIEW”中选择 C、D、SUM(E),按 C、D 分组 CE_OLAP_VIEW(“ANALYTIC_VIEW”,[C,D])
在计算视图上选择查询 从“CALCULATION_VIEW”中选择 C、D、SUM(E),按 C、D 分组 CE_CALC_VIEW(“CALCULATION_VIEW”,[C,D])
哪里有 SELECT C, D, SUM(E) FROM “ANALYTIC_VIEW” WHERE C = 'value' var1 = CE_COLUMN_TABLE(“COLUMN_TABLE”);
CE_PROJECTION(:var1,[C,D],'”C” = ”值”')

计算视图类型:维度、立方体和带星形连接的立方体

电流 SAP HANA 版本在创建计算视图时会要求指定数据类别,该选择决定了视图的功能以及报表工具如何处理它。

数据类别 包含措施 星形联盟现已开放 替换
维度 没有 没有 属性视图
鱼块 没有 简单的分析场景
带星形连接的立方体 分析视图

这就是为什么当前项目通常只构建计算视图的原因。类别维度视图可以完成计算视图的工作。 属性视图,而带有星形连接的立方体则完成了一个 分析视角因此,一种对象类型即可涵盖整个模型。现有的属性视图和分析视图继续有效,并且这些概念直接映射到上述类别。

计算视图性能提示

计算视图的灵活性足以使其构建得很糟糕,同样的场景运行时间可能从一秒到一分钟不等,具体取决于节点的排列方式。六条规则涵盖了大部分差异。

  1. 尽早筛选。 在最接近数据源的投影中添加过滤器。聚合后进行过滤意味着先对整个数据集进行聚合,然后丢弃大部分数据。
  2. 尽可能先聚合后连接。 将两个大型详细信息集合并后再进行聚合,比先聚合每一侧要移动更多的行。
  3. 只选择你需要的列。 节点中承载的每一列都会在整个执行过程中保存在内存中,未使用的列会阻止节点修剪。
  4. 对于合并类似数据,建议使用 union 而不是 join。 将实际值和计划值堆叠起来进行的是并集运算。如果用连接运算来表示,则会增加行数,因此需要使用过滤器来消除这种影响。
  5. 注意连接基数。 如果数据为 1..N,则声明为 1..1 会导致重复行,并使每个度量值膨胀,这是导致总计错误最常见的原因。
  6. 避免视图堆叠过深。 在分析视图上嵌套计算视图是合法的,但很难优化,也更难调试。通常两层就足够了。

请使用编辑器中的性能分析工具,而不是靠猜测。制定计划Viz 显示哪个节点消耗了时间,而答案通常是过滤器放置得太晚,晚了一个节点。更广泛的方法在……中进行了描述。 SAP HANA建模 教程和程序替代方案 SQL脚本.

常见问题

连接操作是一种二元运算,因此节点也反映了这一点。连接三个数据源意味着链接两个连接节点,这也明确了运算顺序。

不。计算引擎计划运算符已被弃用。现有代码仍可运行,但建议使用标准 SQL,通常可以生成更优的执行计划。

是的。阅读计划Viz 输出结果显示,AI 会识别出耗时的节点,并通常建议提前移动过滤器或在连接之前进行聚合。

是的。每个 CE_ 运算符都有对应的 SQL 语句,因此 AI 可以转换代码块并突出显示行为不同的少数情况。在替换生产代码之前,请先比较结果。

是的。数据类别维度的视图仅包含属性,用于列表式报表或作为其他视图的可重用主数据源。

总结一下这篇文章: