一个用于描述、提取、转换、加载和提供开放数据的平台。
项目描述
Spinta是一个命令行工具和REST JSON API服务,用于在不同的物理数据模型、JSON API和语义数据模型之间发布和映射数据。它支持大量的数据方案和格式。
Physical data Different Real time REST JSON sources formats transformation API +-----+ +--> | SQL | --------->| +------+ | +-----+ | | file | ---->| | +------+ | +-----+ | +--> | CSV | --------->| +--------+ | +-----+ | +---------------+ | DB API | --->| | ------->| REST JSON API | +--------+ | +------+ | +---------------+ | | JSON | -------->| +----------+ | +------+ | | REST API | -->| | +----------+ | +-----+ | +--> | XML | --------->| +-----+
目的
描述你的数据:你可以从许多不同的数据源自动生成数据结构描述表(Manifest)。
提取你的数据:一旦你在Manifest表中有了数据结构,你就可以从多个外部数据源提取数据。提取的数据将通过在Manifest表中定义的规则进行验证和转换。最后,数据可以存储到内部数据库中,以便快速灵活地访问数据。
转换你的数据:数据转换在读取数据时实时应用。这限制了转换方面的一些限制,但允许数据实时流。
发布您的数据:一旦您将数据加载到内部数据库,您就可以使用API发布数据。API会自动根据Manifest表生成,并提供多种不同格式的提取数据。例如,如果原始数据源是CSV文件,现在您有一个灵活的API,可以处理JSON、RDF、SQL、CSV和其他格式。
功能
简单的15列表格格式,用于描述数据结构(您可以使用任何电子表格软件来管理您数据的元数据)
具有可插拔后端(PostgreSQL或Mongo)的内部数据存储
内置异步API服务器,基于Starlette构建,用于数据发布
简单的基于Web的数据浏览器
方便的命令行界面
通过内置访问管理,通过OAuth协议提供公开或受限的API访问
简单的领域特定语言(DSL),用于查询、转换和验证数据
适用于任何大小数据的低内存消耗
支持许多不同的数据源
即使是从动态API中也能进行高级数据提取
示例
如果您有一个SQLite数据库
$ sqlite3 sqlite.db <<EOF
CREATE TABLE COUNTRY (
NAME TEXT
);
EOF
您可以使用单个命令获得一个受限的API和一个简单的基于Web的数据浏览器
$ spinta run -r sql sqlite:///sqlite.db
然后您可以生成如下所示的元数据表(manifest)
$ spinta inspect -r sql sqlite:///sqlite.db
d | r | b | m | property | type | ref | source | prepare | level | access | uri | title | description
dataset | | | | | | | | |
| sql | sql | | sqlite:///sqlite.db | | | | | |
| | | | | | | | |
| | | Country | | | COUNTRY | | | | | |
| | | | name | string | | NAME | | 3 | open | | |
生成的数据结构表可以保存到CSV文件中
$ spinta inspect -r sql sqlite:///sqlite.db -o manifest.csv
元数据中缺失的部分可以使用任何电子表格软件进行填充。
一旦您完成元数据的编辑,您可以通过基于Web的数据浏览器或API对其进行测试
$ spinta run --mode external manifest.csv
一旦您对元数据满意,您可以生成一个新的元数据表进行发布,删除原始数据源的任何痕迹
$ spinta copy --no-source --access open manifest.csv manifest-public.csv
现在您有了用于发布的元数据,但关于原始数据源的所有信息都已消失。为了发布数据,您需要将外部数据复制到内部数据存储。为此,首先您需要初始化内部数据存储
$ spinta config add backend my_backend postgresql postgresql://localhost/db
$ spinta config add manifest my_manifest tabular manifest-public.csv
$ spinta migrate
一旦内部数据库初始化完成,您可以将外部数据推送到它
$ spinta push --access open manifest.csv
现在您可以使用功能齐全的API和基于Web的数据浏览器发布数据
$ spinta run
您可以这样访问您的数据
$ http :8000/dataset/sql/Country
HTTP/1.1 200 OK
content-type: application/json
{
"_data": [
{
"_type": "dataset/sql/Country",
"_id": "abdd1245-bbf9-4085-9366-f11c0f737c1d",
"_rev": "16dabe62-61e9-4549-a6bd-07cecfbc3508",
"_txn": "792a5029-63c9-4c07-995c-cbc063aaac2c",
"name": "Vilnius"
}
]
}
$ http :8000/dataset/sql/Country/abdd1245-bbf9-4085-9366-f11c0f737c1d
HTTP/1.1 200 OK
content-type: application/json
{
"_type": "dataset/sql/Country",
"_id": "abdd1245-bbf9-4085-9366-f11c0f737c1d",
"_rev": "16dabe62-61e9-4549-a6bd-07cecfbc3508",
"_txn": "792a5029-63c9-4c07-995c-cbc063aaac2c",
"name": "Vilnius"
}
$ http :8000/dataset/sql/Country/abdd1245-bbf9-4085-9366-f11c0f737c1d?select(name)
HTTP/1.1 200 OK
content-type: application/json
{
"name": "Vilnius"
}
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。