DSPL 世代

DSPL Gen 是一个命令行实用程序,可帮助将 CSV 数据表转换为简单的 DSPL 数据集。该工具解析输入 文件,创建所有必要的数据表,并布置 DSPL XML 文件。 最终得到一个近乎完整的数据集 "模板"只需稍微做些优化就可以上传 直观呈现。

DSPL Gen 背后的基本假设是 输入 CSV 文件对应于单个 DSPL 概念,并且每一行都是 对维度组合进行单一观察。该工具的工作原理 循环访问列,为每个列建立相应的元数据 列 / 概念(例如,其 ID、类型、是维度还是指标、 然后生成所有必要的概念定义和切片 表格。

运行 DSPL Gen

语法

注意:以下说明假定 您已经遵循 安装说明 DSPL 工具页面上指定的所有资源,

如需运行 DSPL Gen,请前往系统上的终端 / 提示符,然后输入以下内容:

python dsplgen.py -o [output path] [path to CSV file] 

其中带括号的术语按如下方式替换:

  • [output path]:您想要的目录的路径 输出文件此目录必须已存在于 文件系统
  • [path to CSV file]:输入 CSV 文件的路径。请参阅 下文,详细了解如何 设置此文件的格式。

-o [output path] 组件是可选的;如果省略,则 输出文件会放在当前目录中。

然后,该工具会运行,遍历您的 CSV 文件,提取概念 定义并生成切片表。除非发现任何错误,否则将使用 XML 文件 文件以及一个或多个 CSV 文件写入输出目录。

最后,在您选择的文本编辑器中打开该 XML 文件, 进行任何所需的更改您至少应该填写名称 以及使用该工具标记的其他值 ** INSERT ... ** 表示法。

简单示例

假设我们有一个 CSV 文件,其中列有 按月份、国家/地区和年龄段对这些数据进行细分。为简单起见, 我们假设每个维度有 2 个值:

date,country,age_group,disease_cases
01/2000,US,old,102030
01/2000,MX,old,192939
01/2000,US,young,23131
01/2000,MX,young,12311
02/2000,US,old,143135
02/2000,MX,old,203131
02/2000,US,young,22990
02/2000,MX,young,12591

对上述输入运行该工具会生成 4 个文件:

  • dataset.xml:DSPL XML 模板
  • country_table.csvcountry 的值 概念
  • age_group_table.csvage_group概念
  • slice_0_table.csv:数据集切片的表(等同于 输入表(排序除外)

在此特定情况下,该工具能够正确猜测出 列类型和格式。您只需要转到 XML 文件 修改数据集元数据中的各种名称、说明和网址。

为输入 CSV 添加注释

基本选项

在许多情况下,如上例所示,DSPL Gen 可以猜测 元数据,例如类型、格式以及 维度或指标不过,在其他情况下,该工具可能无法 猜对了,也可能猜对了,但仍然猜对了, 然而,没有遵循期望的行为。

为处理这些情况,该工具支持添加 DSPL 生成 选项/“提示”。这些元素的语法如下 如下:

column1[option1=value1;option2=value2;...],column2[option1=value1;option2=value2;...],column3[...],...

需要特别注意的是,选项列表位于 括号以及后续选项, 各项设置之间用分号分隔。每个选项均包含 选项名称、一个等号和一个选项值。

DSPL Gen 目前支持以下基本选项:

选项 说明 默认
type 此列的 DSPL 数据类型;必须为以下项之一:datefloatintegerstring 根据数据推测
format 此日期列的格式;如 DSPL 中一样,则此格式应为 使用 Joda DateTime 标准 根据数据推测
slice_role 此列在任何切片中的作用是什么;必须是 dimensionmetric 如果列的类型是 date,则为 dimension;或者 string,否则为 metric
concept 此列表示的规范概念,例如 geo:country;如果指定,则会导入该概念, 定义在 XML 文件中生成
extends 此列扩展的规范概念,例如 entity:entity
parent

此列的父概念。此父级必须是维度 数据集内定义的概念(即未导入);如果给定, 这些信息将用来定义 数据集。

请注意,每个子实例只能有一个父实例。如果有多个 如果检测到父级值,则工具将产生错误。

价值总览

除了基本的“提示”上述选项 DSPL Gen 还支持切片总览:只要给定一个表 则该工具可以自动创建 维度的子集。例如,如果您的输入表对应 包含三个非时间维度(例如,dimension1, dimension2dimensions3) 还可以创建一些额外的 Slice:只需创建 dimension1, 只有 dimension2、只有 dimension1 dimension2

添加这些额外的切片可让您更轻松地探索数据集 因为它减少了生成所需的维度过滤条件的数量 和可视化。另一方面,此过程可能会引入“新” 因此在原始文件中找不到数据,因此如果没有这些数据, 正确使用;仔细检查汇总数字,然后再发布 数据集。

总览流程是通过在 输入 CSV 标题:

选项 说明 默认
aggregation 组合多个值时使用的汇总方法 ;必须是 AVGCOUNTMAXMINSUM;仅限 对指标有意义。 SUM
rollup 如果值为 true,则传递的概念 此列为“总览”列(即汇总离开); 只对维度概念有意义。 错误
total_val 此列中的值指示在 列的总和;只对维度概念有意义。 None

然后,DSPL Gen 使用以下算法计算总览:

  • 使用 rollup 标记的值,计算所有可能的 列组合
  • 对于每个组合: <ph type="x-smartling-placeholder">
      </ph>
    • 如有任何总览列包含 total_val 参数 然后按该值对行进行过滤;否则,请选择所有行
    • 删除总览列
    • 按其余维度列的值对行进行分组
    • 使用指标 aggregation 参数
    • 为结果创建切片和关联表

请注意,如果每个组中只有一个值,并且 聚合函数设置为 SUM(默认值),则 源表和生成的表中的指标值相同,即没有新值 。因此,使用 total_val 参数并确保 只有一个“总计”为其他每种组合的 让您可以将预计算的汇总直接存储在来源中。

警告:生成的切片数量为 等于 2 个总览列。将此选项应用于 列数可能会导致运行时间非常长且/或 数据集。

高级示例

假设我们拥有与上一个示例相同的输入数据, 现在包括跨国家/地区的汇总数据:

date,country,age_group,disease_cases
01/2000,US,old,102030
01/2000,MX,old,192939
01/2000,total,old,152012
01/2000,US,young,23131
01/2000,MX,young,12311
01/2000,total,young,241011
02/2000,US,old,143135
02/2000,MX,old,203131
02/2000,total,old,211310
02/2000,US,young,22990
02/2000,MX,young,12591
02/2000,total,young,240131

各个年龄段的总数可能与国家/地区值的总和不一致 例如,由于方法上的差异或 列表中未枚举的其他国家/地区的用户。

现在,我们需要创建一个包含以下额外内容的 DSPL 数据集 功能:

  1. “Roll up”这样就能了解整个疾病 仅按年龄段划分的病例数
  2. 使用规范化 geo:country country 列的概念,以便我们可以自动 获取这些联系人的全名、地点等
  3. 使 disease_cases 概念扩展 quantity:amount, 以便我们可以(手动)将单位信息添加到 XML 文件中

为此,我们修改输入 CSV 的标题行,如下所示:

date,country[concept=geo:country;rollup=true;total_val=total],age_group,disease_cases[extends=quantity:amount]

再次运行该工具后,我们现在会获得一个额外的切片表, 不区分国家/地区:

date,age_group,disease_cases
01/2000,old,152012
02/2000,old,211310
01/2000,young,241011
02/2000,young,240131

请注意,如果我们没有加入总值和 total_val 标记,那么就得到了 计算每个年龄段的总和。

此外,XML 文件中对 disease_cases 的定义 现在根据需要包含来自 quantity:amount 的扩展名。通过 从 XML 文件中删除 country 的定义,因为 而是使用导入的概念

在填写各种名称、说明和单元信息后, 可以压缩数据集包,并将其上传到公开数据浏览器 直观呈现。