跳转到主要内容

为Datapackage Pipelines提供财政数据包扩展

项目描述

datapackage-pipelines-fiscal

PyPI - Python Version Travis

为将财政数据包加载到S3(或兼容)存储(以非规范化形式)和规范化数据库而使用的datapackage-pipelines扩展

  • 元数据将存储在Elasticsearch实例中(如果可用),通过os-package-registry
  • 还将生成一个babbage模型,并将其写入数据包以使用其API查询数据库

此扩展与自定义源规范和一系列处理器一起使用。生成器将源规范转换为一系列相互依赖的管道,按顺序运行时将在选定的端点(基于环境变量)执行数据处理和加载。

此扩展由os-conductoros-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参数作为属性,例如sheetencodingcompression等。

fields

包含财政数据包的字段的非空列表。

每个字段定义具有以下属性

  • header: 结果资源中字段的name
  • title [可选]:结果资源中字段的显示名称
  • columnType: 字段的ColumnType
  • options: 要添加到字段的额外选项,例如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 包注册表(如果已配置),表示包已成功加载

贡献

请阅读贡献指南

如何贡献

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

datapackage-pipelines-fiscal-1.2.7.tar.gz (15.7 kB 查看哈希值)

上传时间 源代码

构建分发

datapackage_pipelines_fiscal-1.2.7-py2.py3-none-any.whl (24.3 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者