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.csv
:country
的值 概念age_group_table.csv
:age_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 数据类型;必须为以下项之一:date 、
float 、integer 或 string 。 |
根据数据推测 |
format |
此日期列的格式;如 DSPL 中一样,则此格式应为 使用 Joda DateTime 标准。 | 根据数据推测 |
slice_role |
此列在任何切片中的作用是什么;必须是
dimension 或 metric 。 |
如果列的类型是 date ,则为 dimension ;或者
string ,否则为 metric |
concept |
此列表示的规范概念,例如
geo:country ;如果指定,则会导入该概念,
定义在 XML 文件中生成 |
无 |
extends |
此列扩展的规范概念,例如
entity:entity 。 |
无 |
parent |
此列的父概念。此父级必须是维度 数据集内定义的概念(即未导入);如果给定, 这些信息将用来定义 数据集。 请注意,每个子实例只能有一个父实例。如果有多个 如果检测到父级值,则工具将产生错误。 |
无 |
价值总览
除了基本的“提示”上述选项
DSPL Gen 还支持切片总览:只要给定一个表
则该工具可以自动创建
维度的子集。例如,如果您的输入表对应
包含三个非时间维度(例如,dimension1
,
dimension2
和 dimensions3
)
还可以创建一些额外的 Slice:只需创建 dimension1
,
只有 dimension2
、只有 dimension1
和
dimension2
等
添加这些额外的切片可让您更轻松地探索数据集 因为它减少了生成所需的维度过滤条件的数量 和可视化。另一方面,此过程可能会引入“新” 因此在原始文件中找不到数据,因此如果没有这些数据, 正确使用;仔细检查汇总数字,然后再发布 数据集。
总览流程是通过在 输入 CSV 标题:
选项 | 说明 | 默认 |
---|---|---|
aggregation |
组合多个值时使用的汇总方法
;必须是 AVG 、COUNT 、
MAX 、MIN 或 SUM ;仅限
对指标有意义。 |
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 数据集 功能:
- “Roll up”这样就能了解整个疾病 仅按年龄段划分的病例数
- 使用规范化
geo:country
country
列的概念,以便我们可以自动 获取这些联系人的全名、地点等 - 使
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
的定义,因为
而是使用导入的概念
在填写各种名称、说明和单元信息后, 可以压缩数据集包,并将其上传到公开数据浏览器 直观呈现。