首页 > 解决方案 > 在 BigQuery 中,我们可以从子查询或函数中而不是静态地设置列的描述元数据吗?

问题描述

我知道我们可以通过在创建表时静态定义值来设置列描述,即

Create Table table_name (
    member_id int64 options(description = "Unique system-generated ID for a member")
    ...
);

但是是否可以动态设置描述?我想做这样的事情-

Create table table_name (
    member_id int64 options(description = (Select "some query" From some_table))
);

这让我看到了一大堆选项,特别是根据另一个表的列描述使用 INFORMATION_SCHEMA.COLUMN_FIELD_PATHS 动态设置描述,而不必为每个表手动设置每个列的描述。Expected constant expression but found unsupported statement or clause; failed to evaluate 'description' in OPTIONS但是,我在运行上述程序时收到一条错误消息。

我尝试的另一件事是创建和调用一个函数,即

Create Temp Function get_description(string col_name) AS (
    (Select "some query"
     From some_table
     Where column = col_name)
);

Create table table_name (
    member_id int64 options(description = (get_description("member_id")))
);

但这会引发类似的错误消息。

如果两者都不可能,我仍然可以使用一个函数并简单地为每一列声明和设置变量。但是我的一些表将有超过 40 列,所以如果我可以避免为每个列描述声明和设置一个变量,那将是理想的。

标签: sqlgoogle-bigquerymetadata

解决方案


推荐阅读