SAP HANA 计算视图教程
什么是计算视图?
SAP HANA 计算视图是一个强大的信息视图。
SAP HANA 分析视图的度量只能从一个事实表中选择。当信息视图中需要更多事实表时,就会用到计算视图。计算视图支持复杂的计算。
计算视图的数据基础可以包括表、列视图、分析视图和计算视图。
我们可以在数据源上创建连接、联合、聚合和投影。
计算视图可以包含多个度量,用于多维报表;也可以不包含度量,用于列表类报表。
SAP HANA 计算视图的特性如下:
- 支持复杂计算。
- 支持 OLTP 和 OLAP 模型。
- 支持客户端处理、语言、货币转换。
- 支持联合、投影、聚合、排名等。
SAP HANA 计算视图有两种类型:
- SAP HANA 图形计算视图(由 SAP HANA Studio 图形编辑器创建)。
- SAP HANA 基于脚本的计算视图(由SAP HANA Studio通过 SQL 脚本创建)。
SAP HANA 图形计算视图
在SAP HANA 分析视图中,我们只能从一个表中选择度量。
因此,当需要一个包含来自不同表度量的视图时,分析视图无法实现,但计算视图可以。
在这种情况下,我们可以为每个表使用两个不同的分析视图,并在计算视图中将它们连接起来。
我们将创建一个名为“CA_FI_LEDGER”的图形计算视图,通过连接两个分析视图“AN_PURCHASE_ORDER”和“AN_FI_DOCUMENT”来创建。
CA_FI_LEDGER 将显示与采购订单相关的财务文档详细信息。
步骤 1)在此步骤中,
- 转到包(此处为建模)并右键单击。
- 选择新建选项。
- 选择计算视图。
将显示计算视图编辑器,其中场景面板显示如下:
场景面板的详细信息如下:
- 调色板: 此部分包含可用于构建计算视图的以下节点作为源。
我们有 5 种不同类型的节点,它们是:
- Join: 此节点用于连接两个源对象并将结果传递到下一个节点。连接类型可以是内连接、左外连接、右外连接和文本连接。注意:我们只能向连接节点添加两个源对象。
- Union: 用于在多个源之间执行 union all 操作。源可以是任意数量的对象。
- Projection: 用于选择列、过滤数据并在将其用于联合、聚合和排名等下一个节点之前创建附加列。注意:我们只能向投影节点添加一个源对象。
- Aggregation: 用于基于所选属性对特定列执行聚合。
- Rank: 这是 SQL 中 RANK 函数的精确替代。我们可以根据需求定义分区和排序子句。
步骤 2)
- 从调色板中单击投影节点,然后将其从 Purchase order 分析视图拖放到场景区域。将其重命名为“Projection_PO”。
- 从调色板中单击投影节点,然后将其从 FI Document 分析视图拖放到场景区域。将其重命名为“Projection_FI”。
- 将内容文件夹中的分析视图“AN_PUCHASE_ORDER”和“AN_FI_DOCUMENT”分别拖放到投影节点和“Projection_FI”节点。
- 从调色板中单击连接节点,然后将其拖放到场景区域。
- 将 Projection_PO 节点连接到 Join_1 节点。
- 将 Projection_FI 节点连接到 Join_1 节点。
- 从调色板中单击聚合节点,然后将其拖放到场景区域。
- 将 Join_1 节点连接到聚合节点。
我们已添加两个分析视图,以创建计算视图。
步骤 3) 单击聚合下的 Join_1 节点,您将看到详细信息部分已显示。
- 从 Projection_PO 节点中选择所有列用于输出。
- 从 Projection_FI 节点中选择所有列用于输出。
- 将 Projection_PO 节点连接到 Projection_FI 节点,基于列 Projection_PO. PO_Number = Projection_FI.PO_NO。
步骤 4) 在此步骤中,
- 单击聚合节点,详细信息将显示在窗格的右侧。
- 在右侧的详细信息窗口中,从 Join_1 中选择用于输出的列。
步骤 5) 现在,单击语义节点。
将显示详细信息屏幕,如下所示。为列定义属性和度量类型,并为此输出标记键。
- 定义属性和度量。
- 将 PO_Number 和 COMPANY 标记为键。
- 将 ACC_DOC_NO 标记为键。
步骤 6) 从窗口顶部栏验证并激活计算视图。
- 单击验证图标。
- 单击激活图标。
计算视图将被激活,并将显示在建模包下,如下所示:
选择计算视图,右键单击 -> 数据预览
我们已添加两个分析视图,并从两个分析视图中选择了度量(TAX_AMOUNT、GROSS_AMOUNT)。
数据预览屏幕将显示如下:
CE 函数,也称为计算引擎计划运算符(CE 运算符),是 SQL 语句的替代方案。
CE 函数有两种类型:
数据源访问函数
此函数将列表或列视图绑定到表变量。
以下是一些数据源访问函数列表:
- CE_COLUMN_TABLE
- CE_JOIN_VIEW
- CE_OLAP_VIEW
- CE_CALC_VIEW
关系运算符函数
通过使用关系运算符,用户可以绕过 SQL 处理器进行评估,并直接与计算引擎通信。
以下是一些关系运算符函数列表:
- CE_JOIN(用于在两个源之间执行内连接并读取所需的列/数据。)
- CE_RIGHT_OUTER_JOIN(用于在两个源之间执行右外连接,并将查询的列显示到输出。)
- CE_LEFT_OUTER_JOIN(用于在源之间执行左外连接,并将查询的列显示到输出。)
- CE_PROJECTION(此函数显示源中的特定列并应用过滤器来限制数据。它还提供列名别名功能。)
- CE_CALC(用于根据业务需求计算附加列。这与图形模型中的计算列相同。)
以下是包含 CE 函数的 SQL 列表以及一些示例:
查询名称 | SQL 查询 | CE-内置函数 |
---|---|---|
选择列表查询 | SELECT C, D From “COLUMN_TABLE”。 | CE_COLUMN_TABLE(“COLUMN_TABLE”,[C,D]) |
选择属性视图查询 | SELECT C, D From “ATTRIBUTE_VIEW” | CE_JOIN_VIEW(“ATTRIBUTE_VIEW”,[C,D]) |
选择分析视图查询 | SELECT C, D, SUM(E) From “ANALYTIC_VIEW” Group By C,D | CE_OLAP_VIEW(“ANALYTIC_VIEW”,[C,D]) |
选择计算视图查询 | SELECT C, D, SUM(E) From “CALCULATION_VIEW” Group By C,D | CE_CALC_VIEW(“CALCULATION_VIEW”,[C,D]) |
Where Having | SELECT C, D, SUM(E) From “ANALYTIC_VIEW” Where C = ‘value’ | Var1= CE_COLUMN_TABLE(“COLUMN_TABLE”); CE_PROJECTION(:var1,[C,D],“C” =“value”/ |