确定数据透视维并设置事实表
Autonomous AI Lakehouse 中的事实表存储了联合多维数据集的数据。如果您没有满足联合分段要求的事实表,并且不允许 Essbase 管理事实表,则必须创建一个事实表。
注意:
如果要让 Essbase 管理事实表,则 Essbase 会为您创建事实表。
开始阅读本节之前,请先创建 Essbase 应用程序和多维数据集(如果还没有)。
确定透视维
在设计联合多维数据集时,您需要选择透视维。透视维是基于 Essbase 多维数据集大纲指定的维,用于表示数字数据值。
-
透视维不必是度量/账户,但可以是度量/账户。
-
数据透视表维的所有存储成员必须映射到事实表列,这些事实表列表示 Autonomous AI Lakehouse 中的数字数据值。
-
如果您需要运行 Essbase 块存储 (BSO) 计算脚本,请选择密集维作为透视维。如果透视维是稀疏维,则联合多维数据集不支持计算脚本。
-
透视维应具有相当静态的成员名称,并且不应该具有大量成员。原因:更改 Essbase 多维数据集大纲中的透视维(例如,通过添加或重命名存储成员)需要对 Autonomous AI Lakehouse 中的事实表进行相应的手动更新,并且还需要重新创建联合分区。
-
不应将包含需要复杂的动态公式(以 Sample Basic 为例,例如 "Opening Inventory" 和 "Ending Inventory")的成员的 Essbase 维选为透视维。
-
在创建联合分区时要提供您选择的透视维。
-
Oracle 数据库存在 1,000 列的限制,并且透视维继承此限制。确定透视维中符合条件的列成员数,以确保不会达到或超过限制。透视维中潜在存储成员组合数加上多维数据集中的维数应不超过 1,000。
-
对于基于 ASO 的联合多维数据集,Oracle 建议不要选择包含多层存储成员层次的维作为透视维。应选择包含动态层次或属于平面单级层次的存储层次(其中所有成员都是 0 级存储成员)的透视维。
创建事实表
Autonomous AI Lakehouse 中的事实表存储了联合多维数据集的所有数据值。如果您尚未拥有所需的事实表,并且您的联合多维数据集不是由 Essbase 管理的,则必须创建一个。
在开始之前,请确保为事实表设置方案。请参阅为联合立方创建方案。
事实表必须采用 Essbase 支持的格式,这意味着其内容和配置满足以下要求:
-
多维数据集的每个(非属性)维都必须表示为单个列标题,例外是多维数据集的其中一个维(通常为包含度量/账户的维)必须透视到两列或更多列中。此例外称为透视维。
-
事实表必须包含唯一记录(无重复记录),每个 Essbase 单元格交叉点序列为一行。
如果您熟悉 Essbase 数据导出,您将注意到事实表的形状与 Essbase 列导出完全相同。
与列导出相似,事实表必须包括:
-
一个保存大纲的每个(非属性)维(透视维除外)的列
-
一个保存透视维的每个存储成员的列
下面是一个度量维已透视(意味着它是透视维)的事实表示例。透视维影响事实表的配置,例如,维的存储成员变为列标题:SALES、COGS、MARKETING、PAYROLL、MISC、INTITIAL_INVENTORY 和 ADDITIONS。

您可以使用 SQL 构建事实表,也可以通过 Essbase 数据导出创建事实表。您可以使用 Autonomous AI Lakehouse 工具或使用 Essbase 数据加载功能将数据加载到事实表中。
事实表的其他构建准则包括:
-
事实表中的列数必须少于 1000。
-
不要包含 Essbase 中将映射到属性维的列。
-
事实表的精度不应低于 IEEE binary64(双精度)。
-
事实表应对维成员使用国际化字符串,类型为 NVARCHAR2 ,字符串长度为 1024 位。
事实表创建示例
要在 Autonomous AI Lakehouse 中创建事实表,您可以使用 SQL。
-
使用 SQL Developer 或您选择的工具,以模式所有者身份登录到 Autonomous AI Lakehouse (从步骤 Create a Schema for Federated Cubes )。
-
使用 SQL 创建事实表(如果还没有)。
例如,以下 SQL 基于从 Essbase 多维数据集 Sample Basic 导出的数据创建事实表。
CREATE TABLE "SAMP_FACT" ( "PRODUCT" NVARCHAR2(1024), "MARKET" NVARCHAR2(1024), "YEAR" NVARCHAR2(1024), "SCENARIO" NVARCHAR2(1024), "SALES" NUMBER(38,0), "COGS" NUMBER(38,0), "MARKETING" NUMBER(38,0), "PAYROLL" NUMBER(38,0), "MISC" NUMBER(38,0), "INITIAL_INVENTORY" NUMBER(38,0), "ADDITIONS" NUMBER(38,0) ) NOCOMPRESS LOGGING PARALLEL 4;
注
-
在上述示例中,事实表名称为 SAMP_FACT,并基于 Sample Basic。
-
为了获得最佳性能,事实表中的所有非数字列的类型应为 NVARCHAR2(1024),所有数字列的类型应为 NUMBER。
-
Oracle 建议通过添加 PARALLEL 4 在 Autonomous AI Lakehouse 中并行创建索引。
-
元数据列不应允许包含空值。
-
如果在使用多维数据集时包含数据生成式过程(例如增量数据加载或批量脚本更新),Oracle 建议使用 NOCOMPRESS。如果多维数据集主要用于读取操作,则使用 COMPRESS 以优化事实表来进行报告。
-
如果在创建事实表时出现以下验证错误,请删除空值行。
ORA-18265: fact table key column ("<DIM_NAME>") with value ('') not in dimension("<Name_of_Column") star table key column -
为了获得最佳性能,如果没有明确需求,不要对表添加任何特定约束条件。
-
在上例中,事实表名称基于 Sample Basic,该示例位于 Essbase 文件目录的库中。您可以从此示例多维数据集或任何其他 Essbase 多维数据集导出数据,然后加载这些数据来构建事实表。在执行此操作之前,您需要设置用于将数据加载到联合多维数据集的身份证明。请参阅设置联合多维数据集的身份证明以设置身份证明,并了解如何使用 DATAEXPORT 命令将数据导出到 DBMS 格式。