跳转到主要内容

为Google BigQuery构建实体关系图。

项目描述

bigquery-erd

基于eralchemy的Google BigQuery实体关系图(ERD)生成器。

示例

来自原始项目的新闻Meme数据库模式ERD(示例)。

NewsMeme Example

安装

pip install bigquery-erd

eralchemy需要GraphViz来生成图形和Python。这三种软件在Windows、Mac和Linux上均可用。

使用

Python中使用

在此找到一个示例笔记本。

但是,BigQuery不是关系型数据库吗?

没错。您不能在BigQuery中强制执行主键或外键约束。然而,这并不意味着您不能在表之间有逻辑依赖关系。

通过列描述定义关系

我们使用BigQuery中的列描述字段以我们可以后来进行程序解析的格式定义列之间的关系。

假设我们有一个表a,其中有一个列id,还有一个表a,其中有一个列a_id,它作为外键关系指向a.id。然后我们向b.a_id添加以下描述

-> b.id

明确定义关系到数据集

默认情况下,我们假设相关表位于同一数据集中。但是,您也可以明确地定义数据集。如果两个相关表不在同一数据集中,这特别有用。

假设表a位于数据集d1中,而表b位于d2中。那么在b.a_id中的描述将是

-> d1.a.id

明确定义基数

基数定义了两个表之间的关系。此软件包理解四种不同的基数

  • *,表示“0..N”
  • ?,表示“{0,1}”
  • +,表示“1..N”
  • 1,表示“1”

默认情况下,我们假设关系 cardinality 为 *:1。您也可以显式定义关系的 cardinality。

假设 a 中的每条记录在 b 中至少有 1 条相关记录,b.a_id 中的描述将会是

-> +:1 a.id

示例

您可以在这里找到一个包含注解描述的 Google BigQuery 项目示例。

定义自定义描述正则表达式

列描述中关系的默认正则表达式是 ->\s([?*+1 ]:[?*+1 ]\s)?(.*\.)?(.*)\.(.*)$。您可以通过设置 GBQ_RELATION_PATTERN 环境变量来自定义正则表达式。正则表达式应匹配四个捕获组,其中

  • 第一个组是 cardinality(可选)
  • 第二个组是数据集 id(可选)
  • 第三个组是表 id
  • 第四个组是列

项目详情


下载文件

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

源分布

bigquery-erd-0.1.1.tar.gz (7.9 kB 查看哈希值

上传时间

构建分布

bigquery_erd-0.1.1-py3-none-any.whl (8.4 kB 查看哈希值

上传时间 Python 3

支持者

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误记录StatusPageStatusPage状态页面