Postgres 및 Redshift를 포함한 특정 언어에서 정수 간에 계산(예: 나눗셈 수)을 수행하면 결과가 일반적인 수학의 10진수이더라도 정수가 반환됩니다. 예를 들어 다음과 같은 측정을 수행할 수 있습니다.
measure: sold_ratio { type: number sql: ${sold_count} / ${total_count} ;; value_format: "0.00" # Number with exactly 2 decimals (1.23) } measure: sold_percent { type: number sql: 100 * ${sold_count} / ${count} ;; value_format: "0.00" }
그러나 Explore에서 측정을 실행하면 판매 비율 열이 0을 반환하고 판매 백분율 열에는 소수점이 채워지지 않습니다. 오답입니다.
인벤토리 항목 판매 백분율 | 인벤토리 항목 판매 비율 | 인벤토리 항목 수 | 인벤토리 항목 판매 수 |
---|---|---|---|
48.00 | 0 | 1,165,224 | 560,223 |
해결책: 필드를 부동 소수점 숫자로 변환
계산에 정수가 아닌 수를 곱하면 값이 부동 소수점으로 변환되고 소수가 예상대로 반환됩니다. 분자에 10진수(예: 1.0 또는 100.0)를 곱하여 SQL이 십진수 결과를 반환하도록 할 수 있습니다.
measure: sold_ratio { type: number sql: 1.0 * ${sold_count} / ${total_count};; value_format: "0.00" } measure: sold_percent { type: Number sql: 100.0 * ${sold_count} / ${count};; value_format: "0.00" }
이제 결과 Explore 데이터 테이블에 예상 결과가 표시됩니다.
인벤토리 항목 판매 백분율 | 인벤토리 항목 판매 비율 | 인벤토리 항목 수 | 인벤토리 항목 판매 수 |
---|---|---|---|
48.08 | 0.48 | 1,165,224 | 560,223 |