首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在BigQuery表中的450个列中找到"-32767“值?

如何在BigQuery表中的450个列中找到"-32767“值?
EN

Stack Overflow用户
提问于 2022-05-11 00:06:53
回答 1查看 32关注 0票数 0

我有一个包含450个列和数百万行的BigQuery表。正如可以预期的那样,该表具有所有类型的列,如日期时间、日期、整数、数字和字符串。我想知道哪一列包含值"-32767“。有没有办法在BigQuery中实现这一点?

EN

回答 1

Stack Overflow用户

发布于 2022-05-11 00:24:59

考虑以下几点

代码语言:javascript
复制
create temp function  extract_keys(input string) returns array<string> language js as """
  return Object.keys(JSON.parse(input));
  """;
create temp function  extract_values(input string) returns array<string> language js as """
  return Object.values(JSON.parse(input));
  """;
select col, count(*) cnt
from your_table t,
unnest([struct(to_json_string(t) as json)]),
unnest(extract_keys(json)) col with offset
join unnest(extract_values(json)) val with offset
using(offset)
where val = '-32767'
group by col    

这将为您提供如下输出

其中col3、col2是具有-32767值的列,4,1是分别涉及的行数。

,我如何修改它,给它一个列的子集,我希望它的值可以是?

假设您只想将“搜索”限制在col1col3上-请在下面使用

代码语言:javascript
复制
select col, count(*) cnt
from your_table t,
unnest([struct(to_json_string((select as struct col1, col3 from unnest([t]))) as json)]),
unnest(extract_keys(json)) col with offset
join unnest(extract_values(json)) val with offset
using(offset)
where val = '-32767'
group by col    
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72194104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档