我想利用新INFORMATION_SCHEMA元数据表动态地构建查询上的苍蝇,一些类似于做反思。我希望能够做的就是筛选出匹配列的描述某个关键字该列。
这里是什么,我试图做一个尝试:
WITH
nonconfidential_mytable_columns AS (
SELECT
column_name
FROM
`mydataset.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS`
WHERE
table_name = "mytable"
AND description NOT LIKE "%CONFIDENTIAL%")
SELECT
(
SELECT
*
FROM
nonconfidential_mytable_columns)
FROM
`mydataset.mytable`
这不是功能,但希望得到跨越的愿望:我想从基于另一个查询结果的表中选择列。我可以用多个查询做到这一点很容易,但我想它保存为一个视图。
下面(的BigQuery的标准SQL)是最接近你的情况,我得
#standardSQL
WITH nonconfidential_mytable_columns AS (
SELECT ARRAY_AGG(column_name) cols
FROM `mydataset.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS`
WHERE table_name = 'mytable'
AND description NOT LIKE "%CONFIDENTIAL%"
)
SELECT
IF('col1' IN UNNEST(cols), col1, NULL) col1,
IF('col2' IN UNNEST(cols), col2, NULL) col2,
IF('col3' IN UNNEST(cols), col3, NULL) col3
FROM `mydataset.mytable`, nonconfidential_mytable_columns
我认为,这是足够接近 - 但仍然不正是你的“要求”是 - 因为仍然全部列名被曝光,但对于“机密”列中的值都是空值了。而且 - 你需要明确列出所有列与使用*
不管怎样 - 现在你可以在上面保存为一个看法,但它是非常重要的是不要将其保存在相同的数据集mydataset
而是将其保存在数据集(假设users_dataset
)是免费提供给用户,然后一起分享mydataset
经由Authorized View
选项视图