文本和日期度量上的数据库操作

您对具有日期度量的 Essbase 多维数据集执行的常见操作与其他多维数据集类似。可以加载、清除和导出文本和日期值。可以合并评级。您可以在 MDX、 Smart ViewReport Writer 或其他网格客户机中查询数据。

加载、清除和导出文本和日期度量

将任何级别的 Essbase 键入的度量值加载到 BSO 多维数据集,或在输入级别加载到 ASO 多维数据集。对于 ASO,最好提交单个负载缓冲区,指定替换选项。您可能需要使用 #Txt: 标记作为前缀来区分文本或日期值与成员名称。

要将数据加载到文本或日期度量,请遵循与将数据加载到具有数字度量的成员相同的过程。输入数据应包含与文本度量关联的文本列表对象相对应的格式化日期值或文本值。

如果您尝试加载与该成员关联的文本列表对象中不存在的文本值,则 Essbase 会发出警告消息。

在聚合存储 (ASO) 多维数据集中,值只能在输入级别加载;此限制同样适用于文本和日期度量。在块存储 (BSO) 多维数据集中,可以在任何级别加载文本和日期值。

您可以清除、锁定、发送和导出文本或日期值,就像对数值执行这些操作一样。

数据导出和自由形式数据导入中的文本度量格式

可以加载包含或不包含规则文件的文本或日期值。未使用规则文件(在自由格式数据加载中)时,在某些情况下,必须使用字符串 #Txt: 作为文本或日期值的前缀,并将前缀和文本值括在双引号中,从而区分文本或日期值与成员名称;例如:"#Txt:Highly Satisfied"

注意:

整个字符串(包括前缀)必须用引号引起来。

下面是自由格式数据加载文件中一行数据的示例。在使用文本度量从聚合存储多维数据集导出数据时,数据导出文件的格式也采用以下方式:

"100-10" "New York" "Cust Index" "#Txt:Highly Satisfied"

文本值 Highly Satisfied 是文本列表对象名称,以标记 #Txt: 为前缀,以将其与成员名称(如“纽约”)区分开来。

在加载日期度量、#Missing 值和 #OutOfRange 值时,#Txt: 前缀也适用。

导出的文本度量在导出文件中标记为文本列表对象名称之前的前缀为 #Txt:。例如:

"100-10" "New York" "Cust Index" "#Txt:Highly Satisfied"

使用无规则文件的自由格式数据加载将文本度量重新导入到多维数据集时,需要使用 #Txt: 标记来区分文本列表对象名称与其余数据。

用于加载文本和日期值的附加聚合存储准则

将文本和日期值加载到聚合存储多维数据集时,请使用以下准则。这些准则将有助于消除无效的聚合。

  • 在输入级别加载值。

  • 提交加载缓冲区时使用替换模式。

    要在提交缓冲区时设置替换模式,请在 MaxL 中使用 import data 语句的 override values 语法。在 REST API 中,使用 Execute JobasoBufferCommit jobType,在提交缓冲区时将 termOption 指定为 INCR_TO_NEW_SLICE(或 1)(有关详细信息,另请参见 REST API 文档中的“创建缓冲区端点”)。在 Essbase Java API 中,使用 IEssCube.loadBufferTerm 方法的 commitType 参数。在 C API 中,使用 EssLoadBufferTerm 函数的 ulCommitType 字段。

  • 使用单个加载缓冲区加载与日期/文本度量关联的所有值。

  • 在初始化加载缓冲区时,将重复聚合方法设置为 "use last",以帮助消除无效的聚合。

    注意:

    aggregate_use_last 方法具有显著的性能影响,并且不适用于大型数据加载。如果数据加载超过一百万个单元格,请考虑将数字数据分隔成单独的数据加载流程(从任何键入的度量数据)。单独的数据加载可以改用 aggregate_sum。

    要在 MaxL 中指定 "use last" 选项,请参阅 alter database 语句中 initialize load_buffer 子句中的 PROPS 终端。在 REST API 中,在初始化缓冲区时将 duplicateAggregationMethod 指定为 USE_LAST(请参阅 REST API 文档中的“Create Buffer Endpoint(创建缓冲区端点)”。在 Essbase Java API 中,使用 IEssCube.loadBufferInit 方法的 duplicateAggregationMethod 参数。在 C API 中,使用 EssLoadBufferInit 函数的 ulDuplicateAggregationMethod 字段。

  • 避免在增量数据加载模式下将 #MISSING 值加载到文本/日期度量。将 #MISSING 值加载到增量加载中具有非缺失值的单元格时,该值将替换为零值。零值不能与日期/文本度量的 #MISSING 值具有相同的含义。如果需要将 #MISSING 值加载到日期/文本度量,请使用完整数据加载。

如果正在加载混合(数字和文本或日期)数据,请确保“替换”模式足以容纳数字数据,或者为数字数据创建单独的数据加载处理。

文本和日期度量的合并系数

默认情况下,文本度量会分配 ^ 运算符(从不合并)。文本和日期度量不会合并到非账户维中的较高级别成员。如果度量用于排名,则您可能有理由在 Essbase BSO 多维数据集中合并文本度量。

如果使用 ^ 以外的运算符标记文本或日期度量,它将根据其内部数字值与其他维合并。不建议对聚合存储多维数据集执行此操作,因为合并仅支持 + 运算符,并且聚合值可能对文本或日期度量没有任何有效性。此外,在合并期间, Essbase 不会将范围外的值转换为 #OUTOFRANGE。

对于块存储多维数据集,您可以编写计算脚本,以自定义方式合并文本度量。您可能希望在文本度量表示评级度量时合并文本度量。例如,考虑名为 "CustomerSatisfaction" 的文本列表,该列表包含诸如 Excellent=5、Good=4、Fair=3、Poor=2、Bad=1 等映射。值在 0 级加载。通过在子层计算平均值,可以将值合并到父层。例如,[Qtr1] 的 "CustomerSatisfaction" 值是 [Jan]、[Feb]、[Mar] 的平均值。

查询具有文本和日期度量的数据

可以使用 Smart View 、MDX、 Report WriterEssbase Web 界面中的“分析”视图,以与数值度量相同的方式检索/查询文本或日期度量。将显示相应的单元格,其中包含相应的文本值或格式化日期值。

例如,以下 Smart View 网格来自“设施评级”多维数据集,您可以从“所有文件”>“库”>“应用程序”>“设施评级”下的“文件”目录下载该网格。答案成员是度量维中的文本度量。


Smart View 网格,其中显示“解答”文本度量,供用户对业务单位设施的商品进行评级;例如 User1/Cafeteria/No Opinion。User1/Commute/Very 错误。用户 1/会议室/漂亮。

MDX 函数 ENUMVALUE 和计算函数 @ENUMVALUE 用于获取文本度量的数值。当您需要根据成员的数值而不是其文本值执行操作时,这些函数在 MDX 脚本、计算脚本或公式中很有用。

以下 Report Writer 命令用于处理数值数据,文本或日期度量不支持这些命令:

  • 限制

  • TOP

  • 底部

  • SORT* 命令

  • 计算列

  • 计算列

文本和日期度量的限制

如果更新文本列表对象,请将项添加到顶部或底部,以避免 Essbase 大纲重构可能产生的影响。共享成员与原型成员具有相同的文本或日期类型。

大纲重构不会重构文本列表。如果更改了文本列表中数字值到文本值的映射,则该更改将反映在该文本列表中已经存在的文本数据中。因此,将项添加到文本列表时,请将其添加到列表的顶部或底部,以避免更改现有文本列表项的映射编号。

文本和日期度量不支持跨分区。

共享成员和隐含的共享成员继承原型成员的文本或日期类型。