我正在嘗試在 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]
謝謝,
uj5u.com熱心網友回復:
你會試試這個嗎?
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'
);
uj5u.com熱心網友回復:
此類查詢的輸出不是作為宣告變數的陣列,因此您必須將結果聚合為陣列以匹配正確的型別:
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;
您可以在此頁面上找到檔案
uj5u.com熱心網友回復:
可以將字串陣列用作#1,但您也可以使用方法#2簡單地回傳帶有table_nameand的表column_name。
# 1) 陣列
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;
# 2) 表名和列名(未嵌套)
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
;
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/479910.html
上一篇:如何使用.csv檔案中的自定義RGB值在Matlab中對灰度影像進行偽著色
下一篇:根據變數輸入執行代碼
