为Datapackage Pipelines提供财政数据包扩展
项目描述
datapackage-pipelines-fiscal
为将财政数据包加载到S3(或兼容)存储(以非规范化形式)和规范化数据库而使用的datapackage-pipelines扩展
- 。
- 。
- 元数据将存储在Elasticsearch实例中(如果可用),通过os-package-registry
- 还将生成一个
babbage
模型,并将其写入数据包以使用其API查询数据库
此扩展与自定义源规范和一系列处理器一起使用。生成器将源规范转换为一系列相互依赖的管道,按顺序运行时将在选定的端点(基于环境变量)执行数据处理和加载。
此扩展由os-conductor和os-data-importers使用。
环境变量
DPP_DB_ENGINE
- 将数据导出到SQL数据库的连接字符串
ELASTICSEARCH_ADDRESS
[可选] - elasticsearch实例的连接字符串(用于更新包注册表)
S3_BUCKET_NAME
[可选] - 用于上传数据的S3桶。如果未提供,则将创建本地ZIP文件。
AWS_ACCESS_KEY_ID
- S3凭据(如果指定了S3桶则必需)
AWS_SECRET_ACCESS_KEY
- S3凭据(如果指定了S3桶则必需)
依赖关系
为了完全运行财政数据包流程,您需要使用npm安装os-types
$ npm install -g os-types
此外部Node.js实用程序用于对处理后的数据包执行财政建模。
fiscal.source-spec.yaml
每个source-spec包含有关单个财政数据包的信息。
顶级属性包括
title
数据包的标题或显示名称
dataset-name
[可选]
用作数据包名称的slug。
如果未提供,则使用标题的slugified版本。
resource-name
[可选]
用作最终数据包中主要资源名称的slug。
如果未提供,则使用数据集名称。
owner-id
此数据包所有者的id。
此标识符用于生成各种路径和存储名称。
sources
包含财政数据包的数据源的非空列表。
每个数据源都有以下属性
url
: 数据的位置name
: [可选] 此源的名字(将随后用作中间资源名称)
还可以在此处添加其他tabulator
参数作为属性,例如sheet
、encoding
、compression
等。
fields
包含财政数据包的字段的非空列表。
每个字段定义具有以下属性
header
: 结果资源中字段的name
title
[可选]:结果资源中字段的显示名称columnType
: 字段的ColumnTypeoptions
: 要添加到字段的额外选项,例如json-table-schema属性,例如decimalChar
等。
measures
[可选]
用于度量归一化处理的额外信息。(度量归一化是将度量数量减少到一个数量的过程,同时乘以行数,并添加额外的列以包含用于识别原始度量的值)
包含以下子属性
currency
: 输出度量列的货币代码title
[可选]:输出度量列的标题mapping
: 解转置映射。
解转置映射是从度量的名称到其解转置数据的映射。
"解转置数据"是从额外列的名称到值的映射
示例
measures:
currency: GTQ
mapping:
APPROVED:
PHASE_ID: "0"
PHASE: Inicial
RELEASED:
PHASE_ID: "1"
PHASE: Vigente
COMMITTED:
PHASE_ID: "2"
PHASE: Comprometido
currencies
[可选]:要转换的货币代码列表(默认为'USD')。有关详细信息,请参阅下一部分
currency-conversion
[可选]
添加额外列或多个列以包含其他货币中测量值的说明。
-
date_measure
[可选]:可以从中提取日期的列名称。如果没有提供,将根据 ColumnType 进行猜测。 -
title
[可选]:货币转换测量列的标题。
datapackage-url
[可选]
包含来源数据包的URL,该数据包包含这些数据。如果提供,将从该URL加载此数据包的元数据。
deduplicate
[可选]
如果 true
,则将处理源数据以删除重复行(即具有主键中相同值的行)。这些行的测量值将求和,以生成单个输出行。
postprocessing
[可选]
要应用数据的额外处理器(和参数)的列表。格式与任何 pipeline-spec.yaml
相同。
suppress-os
[可选,默认为 False
]
如果 False
,则在数据存储中创建一个与 OpenSpending 兼容的数据包。此基本数据包确保基本 FDP 可用于使用 OpenSpending 进行编辑。使用 os-conductor
创建的包已创建此工件,因此将使用 suppress-os: True
,以防止不必要地创建另一个。
keep-artifacts
[可选,默认为 False
]
默认情况下,在所有管道成功运行后,将删除管道工件(在管道执行期间创建的临时目录和文件)。要保留工件,请将此选项设置为 True
。
生成的管道
./denormalized_flow
- 加载外部元数据
- 从所有来源收集所有数据
- 将不同来源组合到统一的流中
- 执行测量归一化
- 执行货币转换
- 执行行去重
- 执行额外处理步骤
输出
- 非规范化数据(本地文件)
- 单独资源中的财政年度列表(本地文件)
- 更新 os 包注册表(如果已配置)
./finalize_datapackage_flow_splitter
(依赖于 ./denormalized_flow
)
- 加载非规范化包
- 编写单独的按年度过滤的数据副本
./finalize_datapackage_flow
(依赖于 ./finalize_datapackage_flow_splitter
)
- 加载来自
splitter
管道的所有资源以及完整的非规范化数据集
输出
- 将结果存储在 S3 存储桶中
- 包含数据包的压缩文件(如果未配置 S3 存储桶)
- 更新 os 包注册表(如果已配置)
./dimension_flow_{hierarchy}
(依赖于 ./denormalized_flow
)
- 加载非规范化数据
- 仅选择 hierarchy 列
- 添加自增 id 列
- 删除重复项
输出
- 规范化层次结构数据(本地文件)
./normalized_flow
(依赖于 ./denormalized_flow
和所有 ./dimension_flow_{hierarchy}
)
- 将非规范化数据加载为事实表
- 加载所有规范化层次结构数据
- 创建 babbage 模型
- 将事实表中的所有层次结构列替换为规范化层次结构表中相应的 id
输出
- 规范化事实表(本地文件)
- 更新 os 包注册表(如果已配置)
./dumper_flow_{hierarchy}
(依赖于相应的 ./dimension_flow_{hierarchy}
)
- 加载规范化层次结构数据
- 修复主键中的空值(用空字符串替换)
输出
- 将数据保存为 SQL 数据库中的单个表
./dumper_flow
(依赖于 ./normalized_flow
)
- 加载规范化事实表数据
- 修复主键中的空值(用空字符串替换)
输出
- 将数据保存为 SQL 数据库中的单个表
./dumper_flow_update_status
(依赖于 ./dumper_flow
)
输出
- 更新 os 包注册表(如果已配置),表示包已成功加载
贡献
请阅读贡献指南
项目详情
Hashes for datapackage-pipelines-fiscal-1.2.7.tar.gz
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ebe8339f3116d5a52e0ec4268aced6279186d7c3954abb468b414c4f9dcdd644 |
|
MD5 | efe2e92710746ff5a24012b0c651506c |
|
BLAKE2b-256 | a9cc9716a06086802358069d24e29f1338adbfb197d7acb3e7c09f21d66067ce |
Hashes for datapackage_pipelines_fiscal-1.2.7-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 17a2d03423f9cad1b298c488dfe4105dd78df08f440900e3b5c1bc6407533858 |
|
MD5 | 158b4d4f6e1d860565e32739bda9066b |
|
BLAKE2b-256 | 146190691799c6f421388f013cfc6f895a00b569cfed505aef2db0667eb91ac4 |