有偏见的JSON到CSV转换器
项目描述
简介
一个有偏见的JSON到CSV/XLSX/SQLITE/PARQUET转换器,旨在为数据分析创建有用的关系型输出。
理由
当收到一个结构深层嵌套或未明确指定的JSON文件时,很难确定数据包含的内容。此外,即使知道JSON结构,也需要花费大量时间来确定如何将JSON扁平化成关系型结构,以便进行数据分析和成为数据管道的一部分。
Flatterer旨在成为解决上述问题的首选工具。它可能不是您最终用于在数据管道中扁平化JSON的工具,因为可能需要手动扁平化,但它可能是。它比大多数手动方法具有许多优势
- 它速度快,用Rust编写,但提供了Python绑定,以便易于使用。它可以比手写的Python扁平化快10倍。
- 内存高效。使用自定义流式JSON解析器,这意味着嵌套在JSON中的长列表对象将被流式传输,因此不需要一次加载大量数据到内存中。
- 快速高效的CSV/XLSX/SQLITE/PARQUET输出
- 使用从无数次扁平化JSON中学到的最佳实践,例如生成键以将一对一多表与其父表关联。
安装
pip install flatterer
Flatterer需要Python 3.6或更高版本。它用Rust编写的Python扩展,但提供了适用于linux (x64)、macos (x64和通用) 和windows (x64, x86) 的二进制文件(wheels)。在其他平台上需要安装Rust工具链。
示例JSON
假设您有一个名为 games.json
的如下JSON数据
[
{
"id": 1,
"title": "A Game",
"releaseDate": "2015-01-01",
"platforms": [
{"name":"Xbox"},
{"name":"Playstation"}
],
"rating": {
"code": "E",
"name": "Everyone"
}
},
{
"id": 2,
"title": "B Game",
"releaseDate": "2016-01-01",
"platforms": [
{"name":"PC"}
],
"rating": {
"code": "E",
"name": "Everyone"
}
}
]
运行Flatterer
使用flatterer运行上述文件。
flatterer games.json games_dir
输出文件
运行上述命令后,将得到以下文件
tree games_dir
games_dir/
├── csv
│ ├── games.csv
│ └── platforms.csv
├── datapackage.json
├── fields.csv
└── ...
主表
games.csv
包含以下内容
_link | _link_games | id | rating_code | rating_name | releaseDate | title |
---|---|---|---|---|---|---|
1 | 1 | 1 | E | 所有人 | 2015-01-01 | A Game |
2 | 2 | 2 | E | 所有人 | 2016-01-01 | B Game |
生成了一个特殊列 _link
。在这里,_link
是主键,对每个游戏是唯一的。
此外,将 rating
子对象提升到这个表中,它与 games
有一对一的关系。子对象属性由 '_' 分隔。
一对多表
platforms
是一个数组,所以它与游戏有一对多关系,因此需要它自己的表:platforms.csv
包含
_link | _link_games | 名称 |
---|---|---|
1.platforms.0 | 1 | Xbox |
1.platforms.1 | 1 | Playstation |
2.platforms.0 | 2 | PC |
链接字段
_link
也是 platforms
表的主键。除了 games
表之外,每个表都包含一个 _link_games
字段,以便轻松连接到主 games
表。
如果有 platforms
的子数组,那么它将具有 _link
、_link_games
和 _link_platforms
字段。
为了概括这一点,_link__<table_name>
字段与 <table_name>
的 _link
字段连接,即 _link__<table_name>
是引用 <table_name>._link
的外键。
字段 CSV
fields.csv
包含有关输出表的一些元数据
表名 | 字段名 | 字段类型 | 计数 | 字段标题 |
---|---|---|---|---|
platforms | _link | 文本 | 3 | _link |
platforms | _link_games | 文本 | 3 | _link_games |
platforms | 名称 | 文本 | 3 | 名称 |
games | _link | 文本 | 2 | _link |
games | id | 数字 | 2 | id |
games | rating_code | 文本 | 2 | rating_code |
games | rating_name | 文本 | 2 | rating_name |
games | releaseDate | 日期 | 2 | releaseDate |
games | title | 文本 | 2 | title |
field_type
列包含一个插入数据库时有用的类型猜测。 field_title
是 CSV 文件或 XLSX 选项卡中的列标题,最初与字段名相同。编辑此文件后,您可以重新运行转换
flatterer games.json new_games_dir -f myfields.csv --only-fields
这可以用于重命名列、调整字段顺序或如果您想删除某些字段,则 --only-fields
标志将仅包含编辑文件中的字段。
datapackage.json
包含在 表格数据包规范 中的元数据
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。
源分发
构建分发
flatterer-0.19.19.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a1a29ba00603ef8227e1e142133ad731e733c74c96ffc966b215276354f642e1 |
|
MD5 | 33cf6318d2523c6c3a3c45abd453dafc |
|
BLAKE2b-256 | eca7d266d10fc4e0d377eb3a45404c963f41240060f447c4e96c130fd42cd26d |
哈希值 用于 flatterer-0.19.19-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0c9a115d579e2336324968db62934b54f25541b43b118bbc68736b40e6d2051a |
|
MD5 | 50721ceb9b55dfed89bceb38675181e7 |
|
BLAKE2b-256 | b1bc7ff45d276fb32ff5ded400436d8f78801fefdc45db52b333e4bdc4d13edd |
哈希值 用于 flatterer-0.19.19-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c551a92e34adbf03c1d1140d47ce90defd3686a5bf94b6f3c8217b90cdb975a0 |
|
MD5 | ae0bf374285264c2270c5c5ad9eaafd9 |
|
BLAKE2b-256 | 36f722e05e8c4088786fae6fb36dbcf2bced07c8f3b1f85d02474652ab3c9ccc |
哈希值 用于 flatterer-0.19.19-cp312-cp312-manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a7c0f9bc9bce89cf330a1df4db74fe38233e0dca1eb0a40d2f2d3e190a2147d4 |
|
MD5 | c044720b87cd3240c10e670d92e74f34 |
|
BLAKE2b-256 | 59bf9910458bc7111d04c44197841342c8360e85a65c1a3fc1270a2abb355edf |
哈希值 用于 flatterer-0.19.19-cp312-cp312-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2711337072781e8c21dcad98c10df253a836ff0176ee6ee7d24e8c80c283e393 |
|
MD5 | 9991583e43a8519018287d3092d1dd37 |
|
BLAKE2b-256 | ef75fc9f7deeb4990e2a45fb7dbbf308931f6135191569c7f8dc7d87b02cf556 |
哈希值 用于 flatterer-0.19.19-cp312-cp312-macosx_10_7_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8401c491791624ef4c99c2d58e56f158444a38fdfb5757308127c6980db700d6 |
|
MD5 | d2c96f7d90dc58be1ba35a417b7c45b9 |
|
BLAKE2b-256 | d2b2a5cd893c72ab83d0207d2ff541873ca434e004187e7969682d22605d956f |
哈希值 用于 flatterer-0.19.19-cp311-cp311-manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 81a0580b8fdce0b169122b46d5f38268cdaed3707031ee935c9ef688a0879fe8 |
|
MD5 | dfeea81e7c8f72a31cb8ae1f68a8a9d6 |
|
BLAKE2b-256 | 94534eec022abd3c894e771f8d819c5a7bf472b82115c830cc64082503920010 |
哈希值 用于 flatterer-0.19.19-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ba2bba8b00acab6e5149d063437714dd732ecc232e9743b74cb44f7d889d6fd0 |
|
MD5 | 061ef8a3324ca9d6fe00954153039c78 |
|
BLAKE2b-256 | 4e72535d481f77c010f2054d06c4ee4a400286d3b2370473ec8a570ec1ed397b |
哈希值 用于 flatterer-0.19.19-cp311-cp311-macosx_10_7_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 64c7d47ecdbe04d77f827620444bc43f1b2c1f4c72bead6d1fc2ca2247a29ec6 |
|
MD5 | dd03af9ce72de1d8d17230ebf6b8badd |
|
BLAKE2b-256 | 6a51f43a9e3255dbb0dd40c8685602218430a25d83b31ad3a6802e35696411d4 |
哈希值 用于 flatterer-0.19.19-cp310-cp310-manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d0e1be71e59ce7eeea3184aca42b897170f4268a2dd527d5c59f1b1b4aacc36b |
|
MD5 | 7f54ff10e3a13b8b8d36586e22436612 |
|
BLAKE2b-256 | 5afe74b1f09e59ef042e5735609e0c41f9b2aab50979aea1ee67b65dd7a036b3 |
哈希值 用于 flatterer-0.19.19-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9ae898b4b121b4b531bf3df450e98e089e1cf13abbcbf43d7ba3de3860d3fe31 |
|
MD5 | caaee908b645fa391ef4a72aeace748a |
|
BLAKE2b-256 | 6bbeae02194d1710d349d78c7fbbd94d8fc060ee52c97b9527e66c460c73d2b4 |
哈希值 用于 flatterer-0.19.19-cp310-cp310-macosx_10_7_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9961b328839d734e3b5cc707df5f0ba8c1b82546fe72eeda2b66686560c94fff |
|
MD5 | 089eaac9a4120cce58ac550ea8bdf311 |
|
BLAKE2b-256 | b3277003ea7a77cefcaf575f265123008bd4c33c133fb5063069a5489d3a22e3 |
哈希值 用于 flatterer-0.19.19-cp39-cp39-manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f34a1ff4313d517bcd2121a8cb8656ebf1be8c682551edca2097e9734de91bab |
|
MD5 | 8ee02b7197e0bde7ea5804eecdb17af4 |
|
BLAKE2b-256 | 7cdadd0f661c1968a4f64b282be31e0f2a2f2f782c1ee8cdbdc49549c7bd168b |
哈希值 用于 flatterer-0.19.19-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4b8bee7bee6e99eeab2cfb6bd29c85d3f8280f2772083ef19079fea138d5397d |
|
MD5 | f00c6bb9c9e6e6739b3642c74e2188d8 |
|
BLAKE2b-256 | bf6aa352d818258d40eac8bb61b9aa086ad5182eff4edbca9f0deef10ad05b25 |
哈希值 用于 flatterer-0.19.19-cp39-cp39-macosx_10_7_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0b58168b28c6b091daf3bf060067ee0b4576bca609d6ac16f9176ddee37032c6 |
|
MD5 | f8dacd989e97c15554015a0709a948db |
|
BLAKE2b-256 | 0d7babf9b19da07964827c1d9e51ec4964036b1a8266cb73c3102ab284d136fa |
哈希值 用于 flatterer-0.19.19-cp38-cp38-manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dd324784f6a100eaf8e2429eb57aa97fc6484682fd2a5be3a30c016bd2beec40 |
|
MD5 | c5d1232399c85db96a770c75600ac6c9 |
|
BLAKE2b-256 | fe35b8a643d175083e8294a8a4555220e58641a54555e88afc5257be2e3bc62b |
哈希值 用于 flatterer-0.19.19-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 40d45ad60389c25388d8cbc5129ffa1aabbac270c0bb0c9eea2b7e9d4bda178b |
|
MD5 | 252815fe9cd95e51a1051cda3d5778f2 |
|
BLAKE2b-256 | 8607cfb09909df13d777983d1caad9cd0a3cbf82c21faf6953e3e430fe60c4c6 |
哈希值 用于 flatterer-0.19.19-cp38-cp38-macosx_10_7_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d90fd9644dee39f387656330c9d94300c3c48d4f267486668f1e32d5e1f29b1a |
|
MD5 | 6c7e1d8677aff84b19dbc7e85c3b8d02 |
|
BLAKE2b-256 | 8becbb0012923a6f2dd86932bb5115c3b1d09eb513e4aaf4c018cb4f2e9ccc15 |
哈希值 用于 flatterer-0.19.19-cp37-cp37m-manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cef067a5987b02f3a8910ba6b88f528d165e85fb1856de2018a8d95bd57c3d8e |
|
MD5 | 73977d441ee3abe6f4d69422abb6d6a5 |
|
BLAKE2b-256 | caeb3fad7ada339c455c31741d7553b0c58d8a7a673e39df1f16c13710a3c29a |
哈希值 用于 flatterer-0.19.19-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 69d67e04dd855c859de6e2663268407d673f47c1e76eb09908b1d58e3db5b3a9 |
|
MD5 | 04ed2f5ece295f232efc078d76727878 |
|
BLAKE2b-256 | 70a7357ce26f8303be4ebb41ec8968eb3ef4a36ff54b4af74296fa6f118f2ee3 |
哈希值 用于 flatterer-0.19.19-cp37-cp37m-macosx_10_7_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cfcfc456335a36224f9af797b19eb3cdf761b083963a4c9452e39844e95ef230 |
|
MD5 | 6fd85e03e51d44712d80aff6483305c7 |
|
BLAKE2b-256 | ac4072c8c01262e1f8b9b2378773f78585db2a64a0573ed38c1418f47b4abf10 |