2014-09-30 2 views
1

BigQuery에서 두 개의 테이블을 조인하려고합니다.Bigquery - 잘못된 결과 제공

select p.UserId UserId , SessionMonth, LifeCycle, f.NetRev NetRev 
from TABLEA p 
left join each TABLEB f 
on p.UserId = f.UserId 

어떤 이유로 f.NetRev가 두 배가됩니다.

다음은 작업 ID입니다. 719125837414 : job_Kotq0SggPq8xtgUGOu5p6yR9Ag0.

누군가 도움이된다면 좋을 것입니다. 감사!

+0

준 작업 ID는 매우 복잡한 쿼리의 것입니다. 더 간단한 쿼리로 이것을 재현 할 수 있습니까? 후속 조치가 훨씬 쉬워 질 것입니다. 또한 조인의 오른쪽에있는 두 개의 키와 일치하는 왼쪽에 조인 키가 표시되지 않도록하십시오. 그러면 출력이 두 배가 될 수 있습니다. –

답변

1

가입하려는 테이블에 반복되는 키가 없는지 확인하십시오.

{A, 1} 
{B, 2} 

및 그

{B, foo} 
{B, bar} 

을 가지고 있으며, 첫 번째 두 번째로 1 일에 조인 왼쪽을 또 다른 테이블 : 당신은 두 개의 행이있는 테이블에 가입하는 경우 즉, 당신이 시작보다 모두의 열 열, 더 많은 열을 얻을 것이다 :

{A, 1, null} 
{B, 2, foo} 
{B, 2, bar} 

(최악의 경우이 N이 첫 번째 테이블의 행 수이고 M은 수이다 N의 X의 M 행을 생성 할 수 있습니다 오른쪽 표의 행 수).

조인이 실제로 올바르게 작동하지 않는다면 bigquery 버그 일 수 있습니다. 그렇다면 주석을 추가하십시오. 더 자세히 살펴 보겠습니다 (예 : 로그에서 작업 ID를 찾는 것, 분석 함수 (LAG()LEAD())를 사용하는 것처럼 보입니다. 문제없이 시도해 볼 수 있습니까? 여전히 재생산됩니까?)

+0

안녕하세요, 저는 키가 반복되지 않는다고 확신합니다. 나는 질의에 대해 다시 한번 살펴 보았다. 다른 프로젝트의 테이블이 있고 테이블의 모든 프로젝트 ID가 지정되지 않은 경우 잘못된 결과가 나타나는 것 같습니다. ** 719125837414 : job_CHo_1hOFMBbxRl2fBLQ9URhjKUg ** (프로젝트 ID 없음) ** 719125837414 : job_mJXH-fpoEEqubrZsRzhOcOUxaaE ** (모든 프로젝트 ID 포함). 그러나 모든 테이블에 프로젝트 ID를 추가하면 문제가 해결 될 것입니다. 감사! – Jen