使用 SQL 向 BigQuery 中的字段添加说明

Posted

技术标签:

【中文标题】使用 SQL 向 BigQuery 中的字段添加说明【英文标题】:add descriptions to fields in BigQuery using SQL 【发布时间】:2020-07-08 16:09:29 【问题描述】:

我想为表格中的每个字段添加说明。我的问题是我们正在使用 dbt,并且每次运行作业时此工具都会重新创建表,从而导致描述在存在时被删除。我能够控制在最后一个 SELECT 语句中转换字段的数据类型,但我不确定是否可以使用 SQL 添加描述。

我已经在谷歌上搜索了一段时间,但无法查看是否可以通过这种方式使用 SQL 添加描述。

我想到了一种解决方法,即创建表然后插入,但这在理论上使用 dbt 是不好的做法。

谢谢!

【问题讨论】:

刚刚看到他们上个月发布了这个功能,我错过了。 github.com/fishtown-analytics/dbt/releases/tag/v0.17.0我要检查它是否有效,我会更新问题。谢谢! 【参考方案1】:

只是想发布解决方案,以防有人遇到同样的问题。 dbt 没有更新 BQ 本身的描述。然而,他们上个月发布了这个新功能:https://github.com/fishtown-analytics/dbt/releases/tag/v0.17.0

Docs可以像往常一样生成,BQ会显示表和列的描述。您只需将以下内容添加到您的 dbt_project.yml 文件中:

+persist_docs:
  relation: true
  columns: true

【讨论】:

【参考方案2】:

您可以通过两种方式插入说明。

使用 schema.yml 文件

version: 2

models:
  - name: events
    description: This table contains clickstream events from the marketing website

    columns:
      - name: event_id
        description: This is a unique identifier for the event
        tests:
          - unique
          - not_null

      - name: user-id
        quote: true
        description: The user who performed the event
        tests:
          - not_null

您还可以在 SQL 中使用 jinga 模板。

% docs table_events %

This table contains clickstream events from the marketing website.

The events in this table are recorded by [Snowplow](http://github.com/snowplow/snowplow) and piped into the warehouse on an hourly basis. The following pages of the marketing site are tracked:
 - /
 - /about
 - /team
 - /contact-us

% enddocs %

【讨论】:

嗨,luther,是的,这就是文档的生成方式,但它们不会在 BQ 中持续存在。但是,正如我之前在评论中分享的那样,他们在上个月发布了一个修复程序。我已经回答了我的问题。感谢您的帮助!

以上是关于使用 SQL 向 BigQuery 中的字段添加说明的主要内容,如果未能解决你的问题,请参考以下文章

向 BigQuery 中的历史表添加新字段

如何使用 SQL 查询 BigQuery 中的 BYTES 字段?

如何将嵌套字段添加到我的 BigQuery 表架构?

在 Bigquery 中,如何使用标准 Sql 过滤 Struct 数组以匹配 Struct 中的多个字段?

使用 SQL 向 MS Access 中的多个表添加列

BigQuery:使用 python BQ API 向现有表添加新列