google bigquery使用通配符表查询表集

时间:2018-07-18 20:00:26

标签: google-bigquery

我有100个具有以下命名约定的表。

click001
click001_meta
click002
click002_meta
click003
click003_meta
click004
click004_meta
.........
.........
click00n
click00n_meta

我想使用bigquery(标准)中的通配符表查询这些表,但* _meta表除外。结果集只能来自(click001,click002,click003..click00n)

我已经尝试过类似的操作,但是结果仍然包含* meta表中的数据。

SELECT _TABLE_SUFFIX as tp, *
FROM `abc.clicks*`
WHERE NOT REGEXP_CONTAINS(_TABLE_SUFFIX, "_[a-zA-Z][a-zA-Z][a-zA-Z][a-zA-Z]") 

我们在标准方言中有什么解决方案吗?

3 个答案:

答案 0 :(得分:0)

在正则表达式中,int Search(int *tab, int tam, int valor); int main(int argc, char** argv) { int index; int tab[5] = {12, 25, 3, 14, 18}; index = Search(tab, 7, 3); if(index == 1) printf("You found the value!!\n\n"); else printf("NO LUCK!\n\n"); } int Search(int *tab, int size, int value){ if(tab[size] == value) return 1; else return Search(tab, size - 1, value); } 表示“任何字符”,而不是下划线,因此您可能需要用反斜杠转义下划线。另外,您可能只将过滤器与_一起使用:

LIKE

答案 1 :(得分:0)

#standardSQL
SELECT _TABLE_SUFFIX as tp, *
FROM `abc.click*`
WHERE REGEXP_CONTAINS(_TABLE_SUFFIX, r'\d$')

答案 2 :(得分:0)

待进一步调查(请参阅https://issuetracker.google.com/issues/111659626

问题抱怨“我看到了排除表中的数据”,但实际上发生的是“我看到了排除表中的列”。发生这种情况是因为首先确定了架构-但没有数据通过筛选器。


您可以运行此测试吗?

SELECT _table_suffix ts 
FROM `abc.clicks*` 
WHERE _table_suffix NOT LIKE '%meta' 
GROUP BY 1

这就是您需要排除“元”表的全部。如果查询结果带任何带有“ meta”后缀的表,请以工作ID答复以提交错误。