![](/img/trans.png)
[英]How to declare a variable in BigQuery and set it as an argument for EXTERNAL_QUERY?
[英]Bigquery : how to declare an array variable and set data with a select statement?
我試圖在 BigQuery 上聲明一個數組變量,但我沒有設法在我的變量中放入 SQL 語句。 我找不到關於那個的任何話題。
我想將表的所有列名放入我的變量中,所以我嘗試了這個:
DECLARE my_array ARRAY <STRING>;
SET my_array = (
SELECT column_name
FROM my_project.my_dataset.INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'my_table'
);
SELECT my_array
我認為我有語法問題,因為錯誤是:
Query error: Cannot coerce expression (
SELECT column_name
FROM my_project.my_dataset.INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'my_table'
) to type ARRAY<STRING> at [3:16]
謝謝,
你會試試這個嗎?
DECLARE my_array ARRAY <STRING>;
SET my_array = ARRAY(
SELECT column_name
FROM my_project.my_dataset.INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'my_table'
);
SELECT my_array;
或者,這也可以。
SET my_array = (
SELECT ARRAY_AGG(column_name)
FROM my_project.my_dataset.INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'my_table'
);
此類查詢的 output 不是作為聲明變量的數組,因此您必須將結果聚合為數組以匹配正確的類型:
DECLARE something ARRAY<STRING>;
SET something = (
SELECT ARRAY_AGG(column_name)
FROM my_project.my_dataset.INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'my_table'
);
SELECT something;
您可以在此頁面找到文檔
可以使用字符串數組作為#1
,但您也可以使用方法#2
簡單地返回一個包含table_name
和column_name
的表。
DECLARE colum_name_array ARRAY <STRING>;
SET colum_name_array = (
SELECT ARRAY_AGG(column_name)
FROM `[project_id].[datset_name].INFORMATION_SCHEMA.COLUMNS`
WHERE table_name = '[table_name]'
);
SELECT colum_name_array;
WITH
table_columns AS (
SELECT table_name, ARRAY_AGG(column_name) as column_name_array
FROM `[project_id].[datset_name].INFORMATION_SCHEMA.COLUMNS`
WHERE table_name = '[table_name]'
)
SELECT table_name, colum_name
FROM table_columns, UNNEST(column_name_array) as colum_name
;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.