를 사용할 때, 나는 형식 불일치 오류를 받고 있어요 사이에 유형 불일치를 주장 :BigQuery를 다음과 ELSE 내가이 쿼리를 실행하면 CASE
SELECT
date,
countA,
countB,
CASE
WHEN countA>0 then countB/countA
ELSE 0.0
END as ratioBA,
CASE
WHEN (countB>0 and countA>0)
THEN SQRT((1/FLOAT(countA))+(1/FLOAT(countB)))
WHEN (countB>0 and (countA<0 OR countA IS NULL))
THEN SQRT(1.0+(1/FLOAT(countB)))
WHEN (countA>0 and (countB<0 OR countB IS NULL))
THEN SQRT((1/FLOAT(countA))+1.0)
ELSE NULL
END as rel_unc_ratioBA
FROM TABLE_DATE_RANGE([project:dataset.tablename_], TIMESTAMP('2015-01-01'), CURRENT_TIMESTAMP())
ORDER BY date ASC
문제는 rel_unc_ratioBA
계산 CASE
문 것 같다. Error: CASE expects THEN and ELSE expressions to have similar types, but got different type double from ELSE expression which is not compatible with type int64.
countB
및 countA
약 1000 0이 될 수 있습니다, 또는 NULL이 될 수 정수 수가 있습니다
이
는 오류입니다.나는 SQRT()
이 float 유형을 반환한다고 생각 했으므로 이런 일이 일어나지 않아야합니다. 형식을 강제로 FLOAT()
안에 넣어 시도했지만이 작동하지 않습니다.
ELSE 0.0
와
ELSE NULL
를 교체했는데, 그 중 하나가 작동하지 않았다.
아이디어가 있으십니까?
은 문제를 재현 할 수 없습니다. 일부 데이터 샘플을 제공하고 싶을 수도 있습니다. –
좋습니다. 시도해 보겠습니다. 그게 독점 데이터가 아니라는 것은 쉬운 일이 아닙니다.하지만 이것은 이미 유용합니다. 쿼리가 아닌 데이터가있는 것으로 보입니다. – RKD314
실제 데이터를 공유해서는 안됩니다. 그러나 이상적으로는이 오류를 그대로 재현 한 글자 그대로 (5 ~ 10) 행으로 데이터를 좁혀 야합니다. 이 다음에 필요한 경우 obfuscating 후 공유하는 예제가 될 것이라고 –