跳到主要内容 跳到补充内容

Store

Store 语句创建 QVDParquetCSVTXT 文件。

语法:  

Store [ fieldlist from] table into filename [ format-spec ];

该语句将创建一个明确命名的 QVDParquet 或文本文件。

该语句仅会从一个数据表格中导出字段。如果要从多个表格中导出字段,必须明确命名之前在脚本中生成的 join 以创建应导出的数据表。

文本值将以 UTF-8 格式导出至 CSV 文件。可以指定一个分隔符,请参阅 LOADstore 语句不支持将 CSV 导出至 BIFF 文件。

信息注释在某些数据格式不正确的情况下,字段将被双引号包围,以确保数据得到正确解释。例如,当字段包含引号、逗号、空格或换行符等字符时,就会发生这种情况。

参数:  

存储命令参数
参数 说明
fieldlist::= ( * | field) { , field } )

要选择的字段列表。使用 * 作为字段列表,则其表示全部字段。 

field::= fieldname [as aliasname ]

fieldname是指与table中的字段名完全相同的文本。(请注意,如果字段名包含空格或其他非标准字符,则必须使用双引号或方括号括起来。)

aliasname 是指生成的 QVDCSV 文件中所用字段的替代名称。

table 脚本标签表示要用作数据源的已加载表格。
filename

目标文件的名称,包括现有文件夹数据连接的有效路径。

示例: 'lib://Table Files/target.qvd'

在传统脚本模式下,同时支持以下路径格式:

  • 绝对

    示例: c:\data\sales.qvd

  • 相对于 Qlik Sense 应用程序工作目录。

    示例: data\sales.qvd

    如果路径被省略,Qlik Sense 则在由 Directory 语句指定的目录中存储文件。如果没有 Directory 语句,那么 Qlik Sense 将在工作目录 C:\Users\{user}\Documents\Qlik\Sense\Apps 中存储文件。

format-spec ::=( ( txt | qvd | parquet),压缩为编码解码器)

您可以将格式规范设置为这些文件格式之一。如果省略格式规范,则假定为 qvd

  • CSVTXT 文件的 txt

  • qvd 用于 QVD 文件。

  • parquet 用于 Parquet 文件。

如果使用 parquet,还可以设置用于压缩为的压缩编解码器。如果不是用压缩为指定压缩编解码器,则使用 snappy。有以下压缩设置可用:

  • uncompressed

  • snappy

  • gzip

  • lz4

  • brotli

  • zstd

  • lz4_hadoop

示例:

Store mytable into [lib://DataFiles/myfile.parquet] (parquet, compression is lz4);

示例:

Store mytable into xyz.qvd (qvd);

Store * from mytable into 'lib://FolderConnection/myfile.qvd';

Store Name, RegNo from mytable into xyz.qvd;

Store Name as a, RegNo as b from mytable into 'lib://FolderConnection/myfile.qvd';

Store mytable into myfile.txt (txt);

Store mytable into myfile.parquet (parquet);

Store * from mytable into 'lib://FolderConnection/myfile.qvd';

信息注释DataFiles 连接的文件扩展要区分大小写。例如:.qvd

存储在 Parquet 文件中

Parquet 是一种强类型文件格式,其中每个字段都包含一种特定类型的数据(如 32、double、timestamp 或 text)。Qlik Sense 将内部数据存储为松散类型的 dual 数据,其中来自不同源的数据可以混合到相同的字段中。由于 Parquet 中的每个字段中只能存储 dual 数据的一部分,因此了解每个字段包含的内容很重要。默认情况下,Qlik Sense 使用字段类型来确定字段的存储方式。以特定格式将数据存储在 Parquet 文件中时,必须指定加载字段时的数据类型。如果您试图将数据存储到 Parquet 文件中不兼容的字段中,例如文本字段中的数字或时间戳字段中的文本,则最终会得到 null 值。

加载要存储在 Parquet 中的数据时,可以更改默认行为。您可以格式化它以更改数据类型,也可以标记它以强制执行 Parquet 中的特定列类型。

格式化数据以存储在 Parquet 中

您可以使用 Qlik Sense 格式化功能对数据进行分类。例如, Text()Num()Interval()Timestamp() 可以在 Parquet 中存储数据时强制执行数据格式。Qlik Sense 可以根据字段属性和自动字段标签将数据存储为近 20 种数据类型。有关更多信息,请参阅解释函数

示例: 使用 Num()Text() 进行格式设定

以下示例演示了准备数据以存储在 Parquet 中。Num() 应用于 num 字段。Text() 同时应用于文本和混合字段。在混合字段的情况下,Text() 防止将其视为 Parquet 中的数字字段,并将文本值更改为 null 值。

Data: LOAD * INLINE [ num, text, mixed 123.321, abc, 123 456.654, def, xyz 789.987, ghi, 321 ]; Format:
NoConcatenate LOAD num, text, Text(mixed) as mixed RESIDENT Data; STORE Format INTO [lib://DataFiles/Tmp.parquet] (parquet);

标记数据以存储在 Parquet 中

在以 Parquet 中存储数据时,可以使用 $parquet 标记对数据进行标记,以强制使用特定的列类型。每种数据类型都可以通过添加相应的控制标签来强制执行。例如,要在 Parquet 中将字段存储为 INT32,请在加载脚本中将其标记为 $parquet-int32。根据数据类型,将存储字符串或 dual 数据的数字表示。

以下 Parqout 控制标记可用于标记存储在 Parquet 文件中的字段。

Parquet 控制标记
控制标记物理类型逻辑类型转换的类型
$parquet-boolean数字BOOLEANNONENONE
$parquet-int32数字INT32NONENONE
$parquet-int64数字INT64NONENONE
$parquet-float数字FLOATNONENONE
$parquet-double数字DOUBLENONENONE
$parquet-bytearray字符串BYTE_ARRAYNONEUTF8
$parquet-bytearrayfix数字FIXED_LEN_BYTE_ARRAYNONEDECIMAL
$parquet-decimal数字INT64DECIMALDECIMAL
$parquet-date数字INT32DATEDATE
$parquet-time数字INT64TIMETIME_MICROS
$parquet-timestamp数字INT64TIMESTAMPTIMESTAMP_MICROS
$parquet-string字符串BYTE_ARRAYSTRINGUTF8
$parquet-enum字符串BYTE_ARRAYENUMENUM
$parquet-interval数字FIXED_LEN_BYTE_ARRAYINTERVALINTERVAL
$parquet-json字符串BYTE_ARRAYJSONJSON
$parquet-bson字符串BYTE_ARRAYBSONBSON
$parquet-uuid字符串FIXED_LEN_BYTE_ARRAYUUIDNONE

示例: 标记数据以存储在 Parquet 中

在本例中,使用了两个标记来定义 Parquet 的数据。该字段 num 被标记为 $parquet-int32,以将其定义为一个数字字段,该字段将在 Parquet 中设置为 INT32。

Data: LOAD * INLINE [ num, text, 123.321, abc 456.654, def 789.987, ghi ]; TAG num WITH '$parquet-int32'; STORE Data INTO [lib://DataFiles/Tmp.parquet] (parquet);

本页面有帮助吗?

如果您发现此页面或其内容有任何问题 – 打字错误、遗漏步骤或技术错误 – 请告诉我们如何改进!