SAP HANA 建模:完整教程
什么是 SAP HANA 建模?
SAP HANA 建模是一项活动,通过该活动我们创建信息视图。信息视图类似于 BW 的维度、立方体或信息提供程序。此信息视图用于创建多维数据模型。
SAP HANA 建模概述
建模是一项活动,用户通过根据业务场景创建信息视图来优化或切片数据库表中的数据。这些信息视图可用于报告和决策目的。
信息视图由各种内容数据组合而成,用于为业务场景创建模型。
信息视图中的内容数据有两种类型 –
- 属性:描述性且不可度量的数据。例如,供应商 ID、供应商名称、城市等。
- 度量:可量化和计算的数据。例如,收入、销售数量和计数器。度量是从分析视图和计算视图派生的。无法在属性视图中创建度量。
属性类型
SAP HANA 支持三种类型的属性 –
属性类型 | 活动 |
---|---|
简单属性 | 它源自数据基础。 |
计算属性 | 它源自一个或多个现有属性和常量。例如,算术计算或从名字和姓氏派生全名。 |
本地属性 | 它在建模视图(分析视图/计算视图)中使用,用于自定义属性的行为,因此它仅限于**建模**视图,无法从建模视图外部访问。 |
度量类型
SAP HANA 支持四种度量类型 –
属性类型 | 活动 |
---|---|
简单度量 | 它源自数据基础。 |
计算度量 | 它源自一个或多个现有度量、常量和函数。例如,算术计算。 |
受限度量 | 它用于基于用户定义的属性值规则来过滤值。 |
计数器 | 它是列的特殊类型,用于显示属性列(分析视图/计算视图)的唯一编号。它用于计算一个或多个属性列。 |
信息视图有以下三种类型 –
- 属性视图:用于主数据上下文。
- 分析视图:用于创建事实表,类似于 BW 的立方体。
- 计算视图:用于创建复杂视图,类似于 BW 中的多个提供程序。
为了在 SAP HANA 中工作,用户需要权限,以下是 SAP HANA 建模所需的权限 –
建模所需权限
权限为 SAP HANA 数据库提供安全性,授权用户只能访问授权内容。
对象权限 –
对象权限是 SQL 权限,用于提供对数据库对象的读/写访问。以下是建模所需的对象权限。
- 对 _SYS_BI Schema 的 SELECT 权限。
- 对 _SYS_BIC Schema 的 SELECT 权限。
- 对 REPOSITORY_REST (SYS) 的 EXECUTE 权限。
- 对表 Schema 的 SELECT 权限。
包权限 –
包权限用于授权对单个包的操作。以下是数据建模所需的包权限 –
- 对根包的 REPO.MAINTAIN_NATIVE_PACKAGES 权限。
- 对用于内容对象的包的 REPO.READ、REPO.EDIT_NATIVE_OBJECTS 和 REPO.ACTIVATE_NATIVE_OBJECTS 权限。
分析权限 –
要访问 SAP HANA 信息视图,需要分析权限 –
- 为了完全访问 SAP HANA 系统中的所有信息视图,需要“_SYS_BI_CP_ALL”分析权限。对于受限数据访问,需要创建分析权限并分配给用户。
其他权限-
- 为 _SYS_REPO 用户提供对自身 Schema 的 GRANT 权限,例如‘GRANT SELECT ON SCHEMA ” Schema name” TO _SYS_REPO WITH GRANT OPTION’;
- REPO.MAINTAIN_DELIVERY_UNITS 用于创建交付单元。
- REPO.IMPORT、REPO.EXPORT 用于交付单元的导入/导出。
- REPO.WORK_IN_FOREIGN_WORKSPACES 用于在外部工作空间工作。
SAP HANA 创建信息模型的最佳实践
SAP HANA 最佳实践是在 SAP HANA 数据库中创建对象时的标准。以下是对象最佳实践 –
包
- 创建一个名为“Development”的顶级包,用于开发工作。
- 在顶级包下为每个开发人员创建一个子包。
- 如果需要,还可以创建更多子包。
Schema
- 在开始项目之前设计您的 Schema 布局。例如(DS_SCHEMA、SLT_SCHEMA、FI_SCHEMA、SD_SCHEMA 等)。
- 自定义表应放在单独的 Schema 中。
表
命名约定
对象 | 格式 | 描述 |
---|---|---|
属性视图 | AT_PRODUCT | AT_….. 表示属性视图 |
分析视图 | AN_SALES | AN_….. 表示分析视图 |
计算视图 | CA_SALES | CA_….. 表示计算视图 |
分析权限 | AP_REST_AT(属性视图) AP_REST_AN(分析视图) AP_REST_CA(计算视图) |
AP_…. 表示分析权限 |
层次结构 | HI_BNAME_PC(父子)
HI_BNAME_LV(级别) |
HI_… 表示层次结构 |
存储过程 | SP_PROCEDURENAME | SP_… 存储过程 |
输入参数 | IP_PARA_NAME | IP_… 表示参数 |
变量 | VA_VNAME | VA_… 表示变量名 |
在 SAP HANA Studio 中创建包
包:它是一个容器,其中包含模型(属性视图、分析视图、计算视图等)的所有信息,并进行分组。
包类型:包有两种类型,如下所示 –
类型 | 描述 | 图标 |
---|---|---|
结构型 | 在结构型包中,只能创建子包。在结构型包中不能创建任何信息视图(属性视图、分析视图等)。
结构型包示例 – SAP、system-local、system-local.Generated、system-local.Private。 |
|
非结构型 | 非结构型包可以包含信息对象和子包。这是默认包。 |
包的用途:包将所有信息模型分组,并使模型传输更容易。两种类型的包都可以用于传输。
在 SAP HANA Studio 中创建结构型包的步骤 –
步骤 1)在此步骤中,
- 选择 Hana System,这里是 HDB。
- 转到 Content 文件夹。
步骤 2) 在此步骤中,
- 选择 New。
- 选择 Package 选项。
步骤 3) 在此步骤中,
- 输入包名。例如:“DHK_SCHEMA”。
- 输入包的描述。
- Original language 和 Person Responsible 会默认选中。
名称为“DHK_SCHEMA”的非结构型包将在 Content 节点下创建,如下所示 –
步骤 4)现在,将非结构型包转换为结构型包。
- 选择包“DHK_SCHEMA”并右键单击它。
- 转到包的编辑选项。
步骤 5)在此步骤中,
- 在 Structural Options 字段中选择“Yes”。
- 点击“确定”按钮。
我们的“DHK_SCHEMA”从非结构型包转换为结构型包后,图标样式将从 变为
。这表明非结构型包已转换为结构型包。
在结构型包下创建非结构型包作为子包的步骤。
包默认创建为非结构型。在非结构型包中,可以创建其他包和信息对象。最好先创建结构型包,然后在其中创建子结构型包。
步骤 1)在此步骤中,
- 选择结构型包“DHK_SCHEMA”并右键单击它。
- 选择 New -> package。
步骤 2) 在此步骤中,
- 在 Name 字段中输入子包名。
- 输入其描述。
- 点击“OK”按钮。
一个新的非结构型包将作为子包在 DHK_SCHEMA 包下创建。
SAP HANA 性能优化技术
性能优化技术有以下规则 –
- 所有信息视图和表视图都应与投影节点一起使用。投影节点通过缩小列集来提高性能。
- 通过在投影节点上应用过滤器。
- 避免在计算视图中使用 JOIN 节点,而是使用 UNION。
- 使用输入参数/变量来限制分析/计算视图中的数据集。
- 计算应在聚合之前完成。
- 层次结构需要在计算视图中重新定义,属性视图的层次结构在计算视图中不可见。
- 属性视图的层次结构在分析视图中可见。
- 在属性视图、分析视图和计算视图中定义的属性标签和度量描述在计算视图中不会显示。我们需要重新映射它。
- 不要在信息模型中混合 CE 函数和 SQL 脚本。