Envision 中的读取选项

Envision 中的读取选项


首页 » 资源 » 此处

Envision 中的 read 语句为加载一个或多个文件到一个表中提供了可能。本页集中介绍了与 read 语句相关的各种选项。


语法概述

在 Envision 中读取文件的常用语法如下:
read "/sample/Lokad_Orders.csv.gz" as Orders(*) with
  "Order Date" as OrderDate : date
  "Quantity" as Qty
read 关键字后面紧跟的文本被称为路径。路径用于匹配与给定 Lokad 帐户关联的文件存储中存在的文件。

with 关键字后面无需明确列出列。在这种情况下,列可以位于 Envision 脚本中,只要列名是有效的变量名称(例如,列名中不允许有空格)。关键字 as 的主要用途是重命名表和列。

如果 read 后面的 as 选项被省略,则 Envision 会将此文件作为项目表的一部分进行读取。

读取多个文件

在指定路径中使用通配符 (*) 即可同时读取多个文件:
read "/sample/Lokad_Orders*.gz" as Orders(*)
允许使用多个通配符。

从多个文件中筛选出一个文件

为了将最初经由通配符捕获的文件集限定到某一个文件,read 支持 3 种不同的修饰符:
  • min:仅保留根据文件名排序的文件集中的第一个文件。
  • max:仅保留根据文件名排序的文件集中的最后一个文件。
  • latest:仅保留文件集中最近更新的文件。

使用修饰符时可以进行如下处理:
read max "/sample/Lokad_Orders*.gz" as Orders(*)

从多个文件中筛选出多个文件

要将最初经由通配符捕获的文件集限定到某一组位于相同文件夹中的文件,read 语句可以使用百分号 (%)(最多使用一个百分号)来指示匹配的文件夹。
read max "/%/Lokad_Orders*.gz" as Orders(*)

read 语句将捕获所有匹配修饰符所限定文件夹的文件。由于在 Lokad 中文件夹没有上次更新日期,所以存在百分号时仅允许使用 minmax 修饰符。相反,存在百分号时,也应当有一个read 修饰符。

表级选项

read 语句支持多种选项:
  • skip(数值):指示读取文件时在文件开头应跳过多少行。如果省略此选项,则默认值为 0。
  • separator (文本):指示解析文件时单元值之间使用的分隔符。如果省略此选项,Envision 将采用自动检测试探来确定最有可能的分隔符。
  • quotes(布尔值):如果使用 false,单元标记中的外项引号视为标记的一部分,不会转义。如果省略,则默认值为 true 并且 Envision 会将外项引号转义,就和 CSV(逗号分隔值)文件通常的处理一样。
  • encoding(文本):解析文件时使用的文本编码。接受的编码值有:UTF-8UTF-16latin1。如果省略此选项,Envision 将采用自动检测试探来确定最有可能的编码。

以下脚本说明了上述选项的指定方式:
read "/sample/Lokad_Orders.csv.gz" skip:0 separator:"\t" quotes:false encoding:"UTF-8"

表类型选项

Envision 提供了为表定义主键的功能,方法就是在指定表名后在括号中列出主键。允许使用的主键组合只有 7 种:
read "a.csv" as A(*)
read "b.csv" as B(Id)
read "c.csv" as C(Id, *)
read "d.csv" as D(Date)
read "e.csv" as E(Date,*)
read "f.csv" as F(Id, Date)
read "g.csv" as G(Id, Date,*)

表类型选项可以省略。在本例中,应用的默认值为(Id, Date, *)

列级选项

对于要读取的每一列,同样支持多种选项:

  • 列的数据类型,可以是 textnumberdatebooldistribution。数据类型在列名后面的分号 (:) 后面指出。
  • date:日期格式字符串
  • number:数值格式字符串

以下脚本说明了列选项的用法:
read "/sample/Lokad_Orders.csv.gz" as Orders(*) with
  date:"dd-MM-yyy" as OrderDate : date
  number:"1,000.00" as Qty

是否指定列任选。即便指定了列,也可以任选是否指定此列的数据类型。如果未用 read 语句指定数据类型,则会根据 Envision 脚本中的用法来推断列的数据类型。

分布是一种高级数据类型,只有 Lokad 的 Ionic 文件格式支持该种数据类型。

数值选项

数值格式字符串仿效数值实际所需的输出:
  • 第一个 1 后面的字符为千位分隔符。可以省略。
  • 最后一个 0 前面的字符为小数点分隔符。可以省略。

日期选项

date 选项的格式字符串可以根据以下标记来构建:

  • d:月份中的某一天,范围为 1 至 31
  • dd:与 d 相同但带前缀 0
  • ddd:星期几的缩写(如 Mon、Tue...)
  • dddd:星期几的完整表示(Monday...)
  • MM:月份,范围为 1 至 12
  • MMM:月份名称缩写(如 Jun)
  • MMMM:完整的月份名称(例如 June)
  • yy:年份,范围为 00 至 9;忽略百位和千位
  • yyyy:四位数的年份