云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云服务器_华为的云服务在哪里_安全稳定

小七 141 0

SAP HANA提供多种访问选项来查询数据库中可用的SAP HANA视图:

HANA SQL访问(主要HANA访问)允许您使用SQL查询语言查询HANA视图。此访问针对本地解决方案进行了优化。HANA MDX access为HANA模型提供多维概念,允许您通过多维表达式(MDX)查询语言以多维数据集(包括HANA层次结构)的形式查询HANA视图。HANA InA access是为Web应用程序或解决方案设计的,它允许您使用SAP HANA Info access(InA)HTTP服务提供对存储在HANA数据库中的信息的实时访问。SAP HANA info access HTTP服务包装SQL查询并通过HTTP接口公开它们。

本文档描述了在HANA SQL/InA和HANA MDX的同一HANA视图上运行相同查询规范时查询结果的差异。

用例描述

为了说明这种差异,让我们考虑一个包含以下维度和度量值的HANA视图(此处命名为FINANCE):

在这个HANA视图中,您还可以创建以下HANA层次结构并将其与维度关联:

在HANA SQL中,以获取每个组织的金额的查询结果,您编写以下脚本:

并得到以下结果:

在HANA MDX中,物联网操作系统,您编写以下MDX脚本来表示相同的查询规范:

结果,您将收到:

这两个查询返回的Amount值不同(请注意,HANA InA access提供的查询结果与HANA SQL相同)。

为什么SQL和MDX查询会有这种差异?

SQL和MDX的范例差异

上面显示的查询结果都是对HANA SQL和HANA MDX的更正。但是,SQL和MDX有不同的范例需要理解。

在上面的查询规范中,您只想查询每个组织的金额。

在SQL范例中,这意味着忽略所有其他维度(即帐户、部门、场景和时间),只隐式地聚合它们上面的金额。

在MDX世界中,范式是不同的。实际上,MDX范式就像笛卡尔(x,y)轴坐标。假设你有一个函数f,比如Amount=f(x,返利机器人,y)(即Amount是x和y的函数)。x=10的数量是多少?它不能被定义,因为数量是x和y的函数,y是未知的。由于x和y的值都是必需的,因此无法确定数量。MDX标准在此模式下工作。

因此,在MDX中,对于上面定义的HANA视图,金额度量取决于维度Account、Department、Organization、Scenario和Time。因为上面的MDX查询只显式包含要获取金额的组织维度,因此查询结果是不确定的。

对于这种用例,在MDX中,当查询轴中没有显式包含依赖维度来计算度量值时,该维度的默认成员隐式包含在切片器轴中以完成坐标(请参见https://msdn.microsoft.com/en-us/library/ms146047.aspx)

在SAP HANA中确定默认成员

在HANA MDX中,每个维度都有一个与之关联的默认层次结构。这些默认层次结构可以由HANA MDX隐式生成,也可以由设计器在HANA视图中编写。这些层次结构中的每一个都可能有一个默认成员。

在HANA中,层次结构的默认成员默认为属性成员序数为0的成员。

对于HANA MDX隐式生成的层次结构,默认成员对应于层次结构根节点,即"ALL"成员。但是,对于在HANA视图中编写的层次结构,默认成员取决于层次结构设置。

要知道MDX中HANA视图中与层次结构关联的默认成员,可以运行以下查询:

返回以下结果:

在上面的查询结果中,您可以观察到所有层次结构都有一个根节点(即all成员)作为默认成员;除Accounts和Departments层次结构外,Accounts和Departments层次结构分别将Accounts.&[1]和Departments.&[1]作为默认成员

这意味着上面的MDX查询对应于Accounts.&[1]和DEPARTMENT.&[1]的金额,即金额将在所有SCENARIO和TIME维度成员(如SQL中)上聚合,大数据查询平台,但不会聚合到所有帐户或部门。

这解释了为什么MDX查询结果的金额小于您在SQL中观察到的金额–但这是正确的。

解决方案

HANA建模器(HANA Studio或SAP HANA的Web IDE)提供了各种方法,可以显式或隐式地为HANA视图中编写的HANA层次结构设置默认成员。

到从HANA SQL和HANA MDX运行时产生相同的查询结果,云服务器品牌,解决方案包括使用默认成员创建层次结构,大数据分析培训机构,将所有其他层次结构成员作为其子代。

最简单的解决方法是为您创建的层次结构添加根节点作为默认成员:

确实,为根节点可见性选项设置"添加根节点"时,如果默认成员字段为空,则会将所有成员添加为默认成员。对于父子层次结构,如果为"根节点可见性"选项设置了"如果已定义,则添加根节点",则只有在创建父子层次结构时定义了根节点值,才会添加根节点。

因此,如果为"帐户"和"部门"层次结构设置了这些选项,然后MDX查询返回与SQL查询相同的结果。

祝HANA玩得开心!