标量子查询 WHERE 子句 DATA STUDIO

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

Data studio 连接器返回错误,我不明白。 我已经用相同的标量子查询创建了另一个 SQL 连接器,但使用了另一个源,并且它工作正常。 我不明白有什么区别,但如果我从主查询执行该子查询,它就可以工作。我测试了所有变薄的东西很多次。所以我相信我需要帮助

DECLARE product_selected STRING;
SET product_selected = (
with total_product_selected as (
with total_product as (
SELECT 
CASE 
WHEN ... THEN ...
WHEN ... THEN ...
ELSE 'hostname'
END AS hostname,
array_to_string(array_agg(distinct ifnull(session_product_type, 'null')), '|') as session_product_type
FROM table
group by hostname
)
SELECT session_product_type FROM total_product
WHERE hostname != 'hostname'
AND REGEXP_CONTAINS(hostname, @dssite)
)
SELECT session_product_type FROM total_product_selected
group by session_product_type);

SELECT *
FROM table
WHERE 
REGEXP_CONTAINS(hostname, @dshostname) 
AND
REGEXP_CONTAINS(session_product_type , product_selected) = True
AND event_date between PARSE_DATE('%Y%m%d', @DS_START_DATE) and PARSE_DATE('%Y%m%d', @DS_END_DATE)

我也试过,而不是单独拿出 product_selected 只是放在 REGEXP_CONTAINS 中 ()。

我设法在标准 sql 中获得了所有需要的信息,但在 DS 中我得到了一个错误,比如 ' 抱歉,我们遇到错误,无法完成您的请求。

错误编号:2bd4a150 '

所有这些都需要在正则表达式 where 子句中获取像 'case|case' 这样的字符串

google-bigquery google-data-studio scalar-subquery
1个回答
0
投票

你不需要两次引用“with”

WITH total_product
AS (
    SELECT CASE 
            WHEN...
                THEN...
            WHEN...
                THEN...
            ELSE 'hostname'
            END AS hostname
        , array_to_string(array_agg(DISTINCT ifnull(session_product_type, 'null')), '|') AS session_product_type
    FROM TABLE
    GROUP BY hostname
    )
, total_product_selected
AS (
    SELECT session_product_type
    FROM total_product
    WHERE hostname != 'hostname'
        AND REGEXP_CONTAINS(hostname, @dssite)
    )
SELECT session_product_type
FROM total_product_selected
GROUP BY session_product_type;

一旦你运行了最后的查询,你就不能继续引用那些 CTE,所以我猜下面只是一个与 CTE 无关的不同查询:

SELECT *
FROM TABLE
WHERE REGEXP_CONTAINS(hostname, @dshostname)
    AND REGEXP_CONTAINS(session_product_type, product_selected) = True
    AND event_date BETWEEN PARSE_DATE('%Y%m%d', @DS_START_DATE) AND PARSE_DATE('%Y%m%d', @DS_END_DATE)
© www.soinside.com 2019 - 2024. All rights reserved.