jle*_*dru 5 sql google-bigquery google-cloud-platform
是否可以在标准 sql 中的 bigquery 中迭代数组?
基本上声明一个表示表字段的字符串数组。前任 :
DECLARE FIELDS_TO_CHECK ARRAY<STRING>;
SET FIELDS_TO_CHECK = ['field1', 'field2', 'field3' ];
Run Code Online (Sandbox Code Playgroud)
然后在此数组上迭代以创建获取此字段上非空值百分比的请求:
select count(FIELD) / count(*) from
'table_name'`
Run Code Online (Sandbox Code Playgroud)
Mik*_*ant 10
下面是 BigQuery 标准 SQL 的示例,
我在此处使用 TEMP TABLE `table_name` 以使用一些简单的虚拟数据来模拟您的数据,但是您可以删除该 CREATE 语句并使用您自己的表
#standardSQL
DECLARE FIELDS_TO_CHECK ARRAY<STRING>;
DECLARE i INT64 DEFAULT 0;
CREATE TEMP TABLE `table_name` AS
SELECT 1 field1, NULL field2, 3 field3, 4 field4, 5 field5 UNION ALL
SELECT NULL, NULL, 3, NULL, 5 UNION ALL
SELECT 1, NULL, 3, 4, 6;
CREATE TEMP TABLE result(field STRING, percentage FLOAT64);
SET FIELDS_TO_CHECK = ['field1', 'field2', 'field3' ];
LOOP
SET i = i + 1;
IF i > ARRAY_LENGTH(FIELDS_TO_CHECK) THEN
LEAVE;
END IF;
EXECUTE IMMEDIATE '''
INSERT result
SELECT "''' || FIELDS_TO_CHECK[ORDINAL(i)] || '''", COUNT(''' || FIELDS_TO_CHECK[ORDINAL(i)] || ''') / COUNT(*) FROM `table_name`
''';
END LOOP;
SELECT * FROM result;
Run Code Online (Sandbox Code Playgroud)
上面的例子返回下面的输出
Row field percentage
1 field2 0.0
2 field1 0.66666666666666663
3 field3 1.0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3652 次 |
最近记录: |