Zillion 项目介绍
项目简介
Zillion 是一款数据建模和分析工具,其特点是可以通过简单的API,整合并分析来自多个数据源的数据。它为数据提供了一个语义层,不需要用户编写SQL,方便地接入现有的数据库基础设施。通过 SQLAlchemy Core,它实现了对 SQL 查询的自动化。Zillion 的自然语言处理(NLP)扩展实验性地支持人工智能驱动的自然语言查询和仓库配置。
Zillion 提供的功能包括:
- 定义一个包含多种 SQL 和/或类文件数据源的仓库。
- 定义或反映数据中的度量、维度和关系。
- 运行多数据源报告,并将结果组合成数据框(DataFrame)。
- 灵活地对数据进行多级汇总和表旋转。
- 利用公式来自定义或组合字段。
- 应用滚动、累积和排名统计等技术转换。
- 自动进行类型转换,例如从“日期”列中免费生成“年”维度。
- 保存和分享报告规范。
- 利用临时或公共数据源、表格和字段来丰富报告。
- 使用自然语言查询仓库(NLP 扩展)。
- 利用人工智能来引导仓库配置(NLP 扩展)。
安装
注意:此项目处于 Alpha 状态,尚需改进。在生产环境中使用时请仔细测试,并报告任何问题。
安装命令如下:
pip install zillion
或带有 NLP 支持的安装:
pip install zillion[nlp]
使用简介
Zillion 通过自动生成 SQL,简化了数据访问过程。你可以通过简单的代码来执行数据查询,例如:
result = warehouse.execute(
metrics=["revenue", "leads"],
dimensions=["date"],
criteria=[
("date", ">", "2020-01-01"),
("partner", "=", "Partner A")
]
)
功能详细介绍
度量和维度
在 Zillion 中,报告请求中将使用以下两种主要类型的“字段”:
- 维度:用于标记、分组和过滤数据的属性。
- 度量:可沿维度分解的事实和测量。
一个“字段”相当于数据中的一列。例如,你可以有一个名为“revenue”(收入)的字段。该字段可能存在于多个数据源或单个数据源的多个表中。Zillion 理解所有这些列都代表同一个概念,并可以尝试使用其中任意一个来满足请求“revenue”的报告。
仓库理论
Zillion 支持灵活的仓库设置,比如星型(Star)架构或雪花(Snowflake)架构等,通过指定表间的父子关系实现表连接。Zillion 使用跨表查询技术来满足报告需求,允许在不同数据源之间灵活查询。
查询层
Zillion 的报告过程分为两个层次:
- 数据源层:针对仓库数据源的 SQL 查询。
- 组合层:对来自数据源层的组合数据进行最终的 SQL 查询。
组合层其实就是一个 SQL 数据库(默认情况下是内存中的 SQLite),用于将数据源数据结合在一起并应用一些附加功能,如汇总、行过滤、行限制、排序、数据透视和技术计算。
仓库创建
可以从本地或远程文件快速初始化仓库:
url = "https://raw.githubusercontent.com/totalhack/zillion/master/tests/dma_zip.xlsx"
wh = Warehouse.from_data_file(url, ["Zip_Code"]) # 第二个参数是主键
Zillion 提供了一个助手脚本来引导现有数据库的数据源配置文件的创建和同步。
高级主题
- 子报告:用于从另一个报告结果中筛选当前报告。
- 公式度量:在联合层次使用公式计算新的度量。
- 除数度量、聚合变体、公式维度、数据源公式和类型转换等功能允许进一步灵活地定义数据指标和维度。
- 临时度量和临时维度:在报告请求中,即席定义,仅在报告范围内存在。
数据源支持
Zillion 目标是支持 SQLAlchemy 支持的所有数据库技术。目前支持的数据库包括 SQLite、MySQL、PostgreSQL 和 DuckDB。尚未测试但计划支持的包括 BigQuery、Redshift、Snowflake 等。
多进程考虑
如果计划在多进程环境中运行 Zillion,需注意 SQLite 数据源不适合扩展,可能会有锁定问题,不推荐在多节点环境中使用文件型数据库。
示例 - 销售分析
以下是一个简单的销售数据模型的示例,展示了数据源和仓库配置,以及一些示例报告。
示例报告 - 获取按合作伙伴的销售、潜在客户和收入:
result = wh.execute(
metrics=["sales", "leads", "revenue"],
dimensions=["partner_name"]
)
如何贡献
欢迎贡献代码、测试和其他改进。相关信息可以查看项目的贡献指南。
Zillion 项目旨在提升数据分析过程的简便与精准,是开发者处理多数据源分析请求的得力助手。