跳转到内容

将 PlaidCloud 项目表作为 CSV(逗号分隔值)文件写入文档账户。这是最常见的导出格式 — 几乎所有下游系统、电子表格工具和 BI 平台都支持。

可配置项:分隔符(逗号、制表符、竖线、自定义)、引用行为、标题行和编码。

导出文件选择器

导出文件选择器

此转换中的文件选择器用于选择目标位置,将导出结果存储在 PlaidCloud 文档中。

您需要选择一个目录,并为目标文件指定文件名。

源表

动态选项

动态选项允许使用文本(包括变量)指定表。在由变量驱动的工作流中,如果表和视图的引用需要随所指定的变量而变化,此选项会很有用。

以下示例使用 current_month 变量动态指向源表:

legal_entity/inputs/{current_month}/ledger_values

静态选项

如果希望使用特定表作为导出的源,请不要勾选Dynamic复选框,直接选择源表。

任何表选择旁都可使用表资源管理器。单击表选择右侧的表资源管理器按钮,即可打开表资源管理器窗口。

选择文档账户

选择您有权访问的 PlaidCloud 文档账户。这样您就可以在下一项选择中选取目录。

在项目内,列表顶部还提供Project Default,代表项目当前设置为默认的账户。当项目设有默认账户时,新步骤会预先选中 Project Default;现有步骤会保留其已保存的账户,直到您更改为止。设为Project Default的步骤在运行时使用当时项目的默认账户;如果未设置默认账户,运行会失败并指明该项目,而不会回退到其他账户。

目标目录路径

选择目标目录路径右侧的 浏览 图标,然后导航到要保存文件的位置。

目标文件名

指定导出文件的保存名称。

所有导出的文件默认不压缩,但可使用以下压缩选项:

  • 不压缩
  • Zip
  • GZip
  • BZip2

导出 CSV 数据格式

导出 CSV 转换用于将数据表导出为保存在 PlaidCloud 文档中的分隔文本文件。这包括但不限于以下分隔符类型:

  • Excel CSV(逗号分隔)

  • Excel TSV(制表符分隔)

  • 用户定义分隔符 –>

    • 逗号 (,)
    • 竖线 (|)
    • 分号 (;)
    • 制表符
    • 空格 ( )
    • 其他/自定义(波浪号、短横线等)

要指定自定义分隔符,请选择 User Defined Separator –>,然后选择 Other –>,并在文本框中输入自定义分隔符。

特殊字符部分允许用户指定如何处理包含引号和转义字符的数据。可从以下设置中选择:

  • 特殊字符 (QUOTE_MINIMAL):为包含特殊字符的字段加引号(即任何会使以相同方言和选项配置的解析器产生混淆的内容)。这是默认设置。
  • 全部 (QUOTE_ALL):无论类型如何,所有内容都加引号。
  • 非数字 (QUOTE_NONNUMERIC):为所有不是整数或浮点数的字段加引号。与读取器一起使用时,未加引号的输入字段会被转换为浮点数。
  • 无 (QUOTE_NONE):输出时不加任何引号。引号字符会连同用户提供的转义字符一起包含在输出中。请注意,只能提供一个转义字符。

默认情况下,带引号字段内的引号会写成两个("")。开启 escape_quotes 后,会改为使用转义字符写入,与 Spark 相同:以 \ 作为转义字符时,字段 say "hi" 会写成 "say \"hi\""。该设置默认关闭,因此现有的导出不受影响。

默认情况下,包含引号字符的值仅因此就会被加引号。清除为包含引号字符的值加引号可在不加外围引号的情况下写入此类值,与 Spark 关闭 escapeQuotes 时相同;包含分隔符或换行符的值仍会被加引号。该复选框默认选中。清除后,文件由 PlaidCloud 而不是仓库写入。

将引号字符留空可原样写入每个值:不加引号,也不转义。此时包含分隔符或换行符的值读回时会变成更多字段,因此请选择数据中不包含的分隔符。

如果选中此复选框,表标题将导出到第一行。否则导出的文件中不会有标题。

如果选中此复选框,导出文件的标题将包含该列的数据类型。

最后,Use Windows Compatible Line Endings 复选框默认选中,以确保与 Windows 系统兼容。除非在仅使用 unix 的环境中工作,否则建议保持此设置开启。

在更多 CSV 选项中,已存在的文件(if_exists)决定文件已存在时的处理方式:replace(默认)写入新文件,append 将行添加到现有文件末尾且不带标题行,fail 则停止步骤且不写入任何内容。追加会下载该文件、添加行后再上传,因此当两次运行同时向同一个文件追加时,最后完成的那次生效。使用 append 时,选中在已有行下方再次写入标题(header_on_append),即可在已有行下方再次写入标题行。

更多 CSV 选项还包含以下字段:

  • 行排序依据(sort_columns)— 按这些源列对写入的行排序,第一个键优先,每个键都有列、升序和空值设置。键列不必写出。空值默认为升序时在前、降序时在后。不与汇总或非重复一起使用。
  • 行尾(line_ending)— 每一行的行尾,\n、\r\n 或 \r,用于替代 Use Windows Compatible Line Endings。
  • 加引号(quote_mode)— 哪些值要加引号:从不、始终、除数字和布尔值外的所有值或包含分隔符的值。默认情况下,值在需要时才加引号。
  • 结束引号(quote_end)— 结束引号,当它与起始引号不同时使用。
  • 值内的结束引号(quote_replacement)— 写在带引号的值内的结束引号位置。留空则将引号写成两个。
  • 值内的分隔符(delimiter_replacement)— 加引号设置为从不时,写在值内的分隔符位置。
  • 在文件开头写入字节顺序标记(write_bom)— 以字节顺序标记开始文件。
  • 小数分隔符(decimal_separator)— 为数字的小数点写入的字符。
  • 标题前的行(comment_lines)— 在标题之前原样写入的行的 JSON 数组。
  • Write decimal numbers as Java does(scientific_numbers)— 对 1000 万及以上和 0.001 以下的小数以科学计数法写入,例如 1.0E10。
  • 按给定名称写入每个文件名,不添加 .csv 或 .tsv(keep_file_extension)— 完全按给定名称写入每个文件名。
  • 使用 gzip 时,按给定名称存储文件,不添加 .gz(exact_file_name)— 使用 gzip 压缩时,按给定名称存储文件。

数据映射器配置

Table Data Mapper

数据映射器用于将源数据中的列映射到目标数据表。

检查并填充映射器

使用 检查源 菜单按钮可以通过更多方式将源中的列映射到目标:

  • 填充两个映射表:将源数据表中的所有值传播到目标数据表。这是默认行为。
  • 仅填充源映射表:仅映射源数据表中的所有值。当源列结构发生变化而需要修改现有工作流时,此选项很有用。
  • 仅填充目标映射表:仅将所有值传播到目标数据表。

如果上述源列和目标列选项仍不够用,还可以通过以下几种方式向目标数据表添加其他列:

  • 全部传播 会将所有源列插入目标数据表,无论这些列是否已存在。
  • 传播所选项 仅插入所选的源列。
  • 在目标侧右键单击并选择 插入行,可在当前所选行的正上方插入一行。
  • 在目标侧右键单击并选择 追加行,可在目标数据表的底部(最右侧)插入一行。

删除列

要从目标数据表中删除列,请选择所需的列,然后右键单击并选择 删除。

不再列出的源列

目标行可能指定了某个 源列,而源数据表已不再列出该列,例如在重新检查源之后。步骤绝不会自动移除这样的行,而是将列名显示为红色,并在前面加上 ⚠ 警告标志;将鼠标悬停在其上,会提示该列不在源列中。在包含多个表的步骤(如联合)中,每个表都会分别对照其自身的源列进行检查。

带有 常量、表达式 或 计数(含空值) 汇总的行不会被标记,因为步骤不会读取其源列。当源数据表没有列出任何列时(例如首次检查源之前),也不会标记任何内容。

保存仍含有已标记行的步骤时,会出现 发现过时列 对话框,按其所在的选项卡或表列出这些行,并提供三个选项:

  • 全部移除并保存 — 移除已标记的行,然后保存。
  • 仍然保存 — 按现状保存步骤。
  • 取消 — 返回步骤,不保存。

要保留某一行并清除其警告,请将该列重新添加到源数据表,或选择源数据表中列出的某一列。

列数据类型

每个目标列都带有一个 类型。从源传播而来的列沿用源列的类型;手动添加的行起初为 文本,需要设置 类型 来指明其实际类型 — 打算求和或排序的列需要使用数值或日期类型,因为文本会按文本方式排序和求和。

保存时没有任何类型的列,步骤仍可运行。类型会在步骤启动时根据该列所读取的源列确定。如果无处可读,则视为文本:提取 SQL 步骤的列来自您编写的查询,而不是映射的源;如果多个源中存在同名列但类型不一致,则使用文本,而不是随意选择其中一种 — 猜错会产生仓库可能拒绝的转换,而任何类型都可以转换为文本。

自行设置 类型 仍然是指明列应为何种类型的方式。不设置则意味着接受源列恰好具有的类型。

更改列顺序

要重新排列目标数据表中的列,请选择所需的列。可以使用以下任一方式:

  • 批量移动箭头:从右上角的箭头中选择所需的移动选项
  • 上下文菜单:右键单击并选择 移到顶部、上移、下移 或 移到底部。

仅返回非重复记录

要仅返回非重复的选项,请选择 非重复 菜单选项。这会为源中的每一列切换显示一组复选框。只需勾选相应列旁边的复选框,即可仅返回非重复的结果。

视情况而定,您可能需要考虑改用汇总。

非重复处理会保留找到的第一条唯一记录,并丢弃其余记录。如果运行之间的一致性很重要,可能需要对数据进行排序。

聚合与分组

要聚合结果,请选择 汇总 菜单选项。这会为目标数据表中的每一列切换显示一组选择框。请为每一列选择合适的汇总方法。

当 检查源 填充列时,如果数值列的名称读起来像标识符(例如 id、customer_id、Order No 或 CustomerKey),或者其所在表将其设为键,或者联接将其用作键,则该列起初为 分组依据,而不是 求和。

  • 分组依据
  • 求和
  • 最小值
  • 最大值
  • 第一个
  • 最后一个
  • 计数
  • 计数(含空值)
  • 平均值
  • 标准差
  • 样本标准差
  • 总体标准差
  • 方差
  • 样本方差
  • 总体方差
  • 高级非分组

有关表达式、清理和常量等高级数据映射器用法,请参阅高级数据映射器用法

Table Data Filters

为了获得最大的灵活性,源数据和目标数据都可以使用数据筛选器。对于较大的数据集,在源端筛选掉部分行尤其有益,这样后续操作只需处理较小的数据集。

选择数据子集

此筛选器类型用于根据指定条件筛选传入的源数据。

对结果数据应用二次筛选器

此筛选器类型用于根据指定条件对转换后的结果数据应用筛选器。 对转换后的结果应用筛选器,可以基于复杂计算、汇总或窗口函数的结果进行排除。

最终数据表切片(限制)

行切片功能可根据范围和起始点限制结果集中的行数。

筛选器语法

筛选器语法使用 Python SQLAlchemy,与其他表达式的语法相同。

有关示例和表达式函数,请参阅表达式部分。

暂无示例……