BigQuery CTR 使用

问题描述 投票:0回答:0

我在我的 bigquery 表上使用了另一篇文章中的以下查询:

WITH sample_table AS (
SELECT Column_A, Column_B
FROM my_dataset
),
splits AS (
SELECT SPLIT(Column_A, '/')[SAFE_OFFSET(1)] AS Column_A,
     TRIM(kv[SAFE_OFFSET(0)], '" ') AS name,
     CAST(TRIM(kv[SAFE_OFFSET(1)]) AS FLOAT64) AS value
FROM sample_table
UNNEST(SPLIT(TRIM(Column_B, '{}'), ",")) e,
UNNEST([STRUCT(SPLIT(e, ':') AS kv)])
)
SELECT Column_A, ANY_VALUE(name HAVING MAX value) Column_B 
FROM splits 
GROUP BY 1;

但是,当我运行它时,我只返回数据集中的第一行。

当我将 GROUP BY 1 值更改为大于 1 的值时,我收到一条错误消息,提示如果选择列号范围,则 GROUP BY 已超出。

我还尝试将它包装在一个 while 循环中:

DECLARE x INT64;

DECLARE i INT64 DEFAULT 1;

SET x = 128; 

WHILE i<x DO

WITH sample_table AS (

SELECT Column_A, Column_B

FROM my_dataset

),

splits AS (

SELECT SPLIT(Column_A, '/')[SAFE_OFFSET(1)] AS Column_A,

TRIM(kv[SAFE_OFFSET(0)], '" ') AS name,

     CAST(TRIM(kv[SAFE_OFFSET(1)]) AS FLOAT64) AS value

FROM sample_table,

UNNEST(SPLIT(TRIM(Column_B, '{}'), ",")) e,

UNNEST([STRUCT(SPLIT(e, ':') AS kv)])

)

SELECT Column_A, ANY_VALUE(name HAVING MAX value) Column_B 

FROM splits 

GROUP BY 1;

END WHILE;

这没有用。看着 CTE,我想我需要在某个地方加入。我可以使用一个唯一标识符列。为了本示例的缘故,称为 Column_C。我将如何利用它?

sql join google-bigquery common-table-expression bigquery-udf
© www.soinside.com 2019 - 2024. All rights reserved.