在将HANA作为数据库创建universe建模时,有一条最佳实践,利用JOIN_BY_SQL特性。
这要从头说起,从一个另外相关的设置 - "Multiple SQL statements for each measure"。它的作用如同名字所表示的,对于使用的每一个measure单独生成一条SQL语句。目的是什么的?在基于数据库表设计universe建模的时候,有时候会遇到CHASM。在某些特殊场合下,报表的结果会不准确,比如产生笛卡尔积。解决方案之一便是将分别存在于不同表中的measure单独取出并在WEBI里面进行UNION操作。仅仅勾选这样一个选项,很棒。
我们看下面这样的例子来更好地理解(这里没有CHASM或者FAN,只是为了演示这个参数)
这是一个很简单的data foundation,而measure存在于两张表中
如果在WEBI的query panel里选择了这两个measure,而没有勾选这个选项,那么生成的SQL是什么样的呢?
- SELECT
- sum(Table__2."Quantity"),
- sum(Table__1."GrossAmount"),
- Table__1."OrderId",
- Table__2."OrderItem"
- FROM
- "OPENSAP.workshop::header" Table__1 INNER JOIN "OPENSAP.workshop::item" Table__2 ON (Table__1."OrderId"=Table__2."OrderId")
- GROUP BY
- Table__1."OrderId",
- Table__2."OrderItem"
我们看到是一条SQL语句,利用INNER JOIN来连接的,这就是可能产生CHASM的SQL。
那么我们勾选这个选项,再次运行同样的WEBI,结果如何呢?我们发现WEBI生成了两条SQL,然后用自己的UNION操作将他们组合起来。
但是如果每个查询返回的数据很多会怎样?在WEBI里面做UNION效率一定不高,这时就可能产生性能问题。
这时候我们就可以借助JOIN_BY_SQL,将操作推到数据库层面去做。那么问题是,这与最开始没有勾选‘Multiple SQL statements for each measure“默认产生INNER JOIN语句时的区别在哪呢?我们先去universe里设置一下看看结果再说。
再次运行同样的WEBI报表,获得的SQL语句:
- SELECT
- COALESCE( F__1.Axis__1,F__2.Axis__1 ),
- COALESCE( F__1.Axis__2,F__2.Axis__2 ),
- F__1.M__3,
- F__2.M__3
- FROM
- (
- SELECT
- Table__1."OrderId" AS Axis__1,
- Table__2."OrderItem" AS Axis__2,
- sum(Table__1."GrossAmount") AS M__3
- FROM
- "OPENSAP.workshop::header" Table__1 INNER JOIN "OPENSAP.workshop::item" Table__2 ON (Table__1."OrderId"=Table__2."OrderId")
- GROUP BY
- Table__1."OrderId",
- Table__2."OrderItem"
- )
- F__1
- FULL OUTER JOIN
- (
- SELECT
- Table__1."OrderId" AS Axis__1,
- Table__2."OrderItem" AS Axis__2,
- sum(Table__2."Quantity") AS M__3
- FROM
- "OPENSAP.workshop::header" Table__1 INNER JOIN "OPENSAP.workshop::item" Table__2 ON (Table__1."OrderId"=Table__2."OrderId")
- GROUP BY
- Table__1."OrderId",
- Table__2."OrderItem"
- )
- F__2
- ON ( F__1.Axis__1=F__2.Axis__1 AND F__1.Axis__2=F__2.Axis__2 )
我们看到操作是通过数据库的FULL OUTER JOIN进行的。这样既保证了单独为每一个measure取数又能够保证整个操作在数据库层面进行,提高效率。
由于HANA处理的高效率,所以在基于HANA建模时,我们都建议利用这样的设置进行操作。
不过没有万能的设计。如果取回的数据量足够小,小到WEBI可以很快速的处理UNION,而数据库本身处理UNION操作又造成了一定的问题,比如大量内存的消耗,CPU时间的消耗,这个时候就不要坚持JOIN_BY_SQL了。
相关推荐
标题中提到的"SAP_HANA_SQL_Reference_Guide_en.pdf"是关于SAP HANA平台的SQL参考指南,文档版本为2.0SPS04,发布日期为2019年10月31日。SAP HANA是一个高性能的数据库,它支持复杂的分析处理,并且能够处理大量的...
本文主要基于提供的文件《SAP_HANA_SQL_Script_Reference_en.pdf》的内容,详细介绍了SAP HANA SQL脚本的相关知识点。 SQL脚本是SAP HANA中用于编写和执行数据库过程的脚本语言。它包含了一系列的声明和指令,可以...
1. **HANA_Configuration_Parameters_1.00.90+.txt**:这个文件可能包含了HANA系统配置参数的检查脚本,版本号1.00.90及以上,用于检查和对比HANA实例的配置是否符合最佳实践和安全标准。 2. **HANA_Configuration_...
3. **开发工具**:HANA Studio支持开发基于HANA的应用程序,包括使用XS Advanced应用程序开发、ABAP开发和SQLScript。开发者可以使用内置的编辑器、调试器和测试工具来构建和测试应用程序。 4. **生命周期管理**:...
在SAP HANA系统中,SQL(Structured Query Language)是用来管理和操作数据库的标准编程语言。SAP HANA SQL及系统视图参考手册是该平台下详尽的SQL语言和系统视图资源文档。这份文档不仅提供SQL语句大全,还包括了...
这个限制背后的逻辑是,如果某个表在join路径中被重复引用,那么在构建SQL查询时,可能会产生无法正确解析的循环连接,造成查询错误,或者在执行查询计划时产生大量的数据冗余和不必要的计算开销。例如,如果数据库...
HANA中的表达式是由一个或多个常量、列名、函数、运算符和括号组成的式子,用于构造SQL语句中的WHERE、ORDER BY和HAVING等子句,为数据库系统提供操作指令。 函数是数据库操作中不可或缺的一部分,HANA支持多种SQL...
SAP HANA Studio是另一个重要的管理工具,提供了一个更全面的视图,允许执行SQL语句、管理SAP HANA系统并配置管理偏好。 管理员在部署SAP HANA时还需要考虑硬件和云测量工具的使用,确保满足SAP的Tailored Data ...
8. **HANA数据库备份和还原.pdf**:这个PDF文件很可能是详细的教程或文档,涵盖了HANA数据库的备份和恢复步骤、最佳实践以及可能遇到的问题解决方案。 总的来说,理解和实施HANA数据库的备份和恢复策略是确保业务...
SAP HANA Studio是SAP公司为开发和管理SAP HANA数据库系统提供的一款集成开发环境(IDE)。这个2.3.15_X64版本是专为64位操作系统设计的,它集成了多种工具,帮助开发者进行高效的数据模型设计、应用程序开发以及...
HANA培训_基础架构,技术架构,组件,配置,日志,存贮点,介绍分布式体系架构
HANA SQL Statement - HANA_ABAP_ApplicationLog_OrphanRecords
在SAP HANA体系中,SQL语言的使用规则十分关键,它规定了如何在SAP HANA中执行数据的增加、删除、修改和查询操作。 在SAP HANA中,SQL语句的编写遵循一定的规则,包括标识符的使用、注释的书写方式、数据类型的确切...
### SAP HANA数据库SQL参考手册知识点解析 #### 一、SAP HANA 概述 - **SAP HANA**(High Performance Analytic Appliance)是SAP公司开发的一款高性能分析应用平台,它将数据库、数据处理和分析功能集成到一个...
https://help.sap.com/viewer/e9146b36040844d0b1f309bc8c1ba6ab/3.2/en-US/734759c0c1c9440c857da0d366e47dda.html
标题中的"HA200_ZH_Col16_SAP_HANA_2.0_SPS04_安装和管理"表明这是一个关于SAP HANA 2.0 Service Pack 4 (SPS04)的中文教程,专注于系统的安装与管理工作。SAP HANA是一款高性能的数据处理平台,专为实时分析和...
标题“SAP_HANA_CLIENT64”表明我们讨论的是64位版本的SAP HANA客户端,这通常适用于64位操作系统。在描述中提到的“Power BI连接sap hana数据库所需的ODBC驱动”,提示了SAP HANA客户端的一个关键功能,即通过ODBC...
4. HANA_SQL_StatementHash_DataCollector_2.00.034+.txt、2.00.040+.txt:这些文件可能包含 SAP HANA SQL 语句哈希数据收集器的输出,该工具用于追踪和分析系统中执行的 SQL 语句,以便于性能优化和资源管理。...
【描述】"SAP_HANA_CLIENT_32bit.zip" 的描述简单明了,意味着压缩包内含有32位架构的 SAP HANA 客户端组件。这通常包括驱动程序、安装程序和其他必要的支持文件,以确保在32位操作系统上顺利运行和配置 SAP HANA ...