2017-02-23 3 views
0

생성 된 뷰에서 카운트를 얻으려면 WITH 연산자를 사용하고 내 기본보기 (foo.bar.retention_30d)의 데이터에서 값을 계산하는 데 사용할 수 있습니다. .BigQuery WITH 절에 "Unrecognized name"오류가 발생했습니다

알 수없는 이름 : [12시 29분]

다음

에서 TOTAL_USERS 쿼리입니다 :

나는 아래의 쿼리를 실행하려고 할 때이 매우 간단합니다,하지만 난이 오류를 얻고있다처럼 보인다 foo.bar.cohort에 대한
#standardsql 
WITH 
    total_users AS (
    SELECT 
    COUNT(DISTINCT uid) as sum_users 
    FROM 
    `foo.bar.cohort` 
    WHERE 
    first_seen_date > '2016-12-31' 
    AND first_seen_date < '2017-02-01') 
SELECT 
    ROUND(SUM(retained_users)/total_users.sum_users, 2) AS avg, 
    SUM(retained_users) AS retained, 
    SUM(active_users) AS active, 
    total_users.sum_users 
FROM 
    `foo.bar.retention_30d` 
WHERE 
    period = 27 
    AND (created_at > '2016-12-31' 
    AND created_at < '2017-02-01') 

스키마 :

enter image description here

,369 foo.bar.retention_30d에 대한 1,363,210

스키마 :

enter image description here

포인터/힌트는 대부분 환영합니다. 감사!

답변

1

total_users은 테이블이 아니라 열입니다. 그 안의 열을 참조하려면 대신 그 이름을 사용해야합니다. 예 :

#standardsql 
WITH 
    total_users AS (
    SELECT 
    COUNT(DISTINCT uid) as sum_users 
    FROM 
    `foo.bar.cohort` 
    WHERE 
    first_seen_date > '2016-12-31' 
    AND first_seen_date < '2017-02-01') 
SELECT 
    ROUND(SUM(retained_users)/(SELECT sum_users FROM total_users), 2) AS avg, 
    SUM(retained_users) AS retained, 
    SUM(active_users) AS active, 
    (SELECT sum_users FROM total_users) AS sum_users 
FROM 
    `foo.bar.retention_30d` 
WHERE 
    period = 27 
    AND (created_at > '2016-12-31' 
    AND created_at < '2017-02-01') 
+0

Ah ha! total_users 내에서 sum_users를 참조하려고했는데, 여전히 테이블처럼 작동해야한다는 것을 깨닫지 못했습니다. 그 문제를 해결해 주셔서 감사합니다! –