나누기가 있는 필드가 0으로 표시되는 이유는 무엇인가요?

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