[アップデート] Amazon QuickSight の 10進数(Decimal)型に Float が追加されました

2023.11.09

いわさです。

先日の Amazon QuickSight のアップデートで、SPICE で新しいデータ型 Decimal-Float が使えるようになりました。

これまでの SPICE の数値型には Integer と Decimal の 2 種類が提供されていました。
そのため小数を扱う場合は Decimal (SPICE 上では「10 進数」と表示) を、整数を扱う場合は Integer を選択していました。

この Decimal ですが固定小数点となっており小数部は 4 桁までサポートされています。
そのため 4 桁以上の 0.00011 のような小数を扱おうとすると 0.0001 に丸められてしまうなどいくつかの問題がありました。

今回のアップデートでは浮動小数点を扱える Decimal-Float が登場し、従来の Decimal は Decimal-Fixed という表記に変更されました。
ユーザーはユースケースに併せて固定小数と浮動小数を選択することが出来るようになりました。

使ってみる

QuickSight のデータセット編集画面で列ごとのデータ型を任意に設定することが可能です。
次は言語を英語表記に切り替えた状態ですが、数値型として Inter と Decimal があり、さらに Decimal は Fixed と Float から選択することが出来るように変わっています。

日本語表示だと 10進数(固定) と 10進数(浮動小数点) になります。

以前までは区別なく「10進数」とだけ表示されていました。

小数部の桁数を多くして比較してみる

ここでは、次のような CSV ファイルからデータセットを作成し、固定小数点と浮動小数点の挙動の違いを比較してみたいと思います。

col1,col2,col3
aaa,0.000111111111111,0.000111111111111
bbb,0.000111111111111,0.000111111111111
ccc,0.000111111111111,0.000111111111111
ddd,0.000111111111111,0.000111111111111
eee,0.000111111111111,0.000111111111111
fff,0.000111111111111,0.000111111111111

データセット作成時に明示的にデータ型を次のように指定しました。

このデータセットを分析で表示し、フィールドのカスタマイズで表示桁数を 15 くらいまで増やしてみます。

おっ、固定小数点の場合はやはり小数部が 4 桁までしか保持されていませんね。
浮動小数点の場合は保持されています。

この状態で表示桁数で丸めを行うと、次のようにビジュアル上も差分が出てきますね。

従来表現できる値の範囲が狭くて悩んでいた方は、今回追加された Decimal-Float が使えるのではないでしょうか。

浮動小数点の誤差問題もある

一方で、なんでも Decimal-Float を使えば良いのかというとそうではありません。
一般的な浮動小数点の誤差問題も当然起きます。

例えば 0.1 のように 2 進数で表すと無限小数になるもので誤差を発生させてみます。
次のように同一の値で浮動小数点と固定小数点のデータ型を使ってデータセットを作成します。

列名と同じ内容でで計算フィールドを作成してみたところ、Fixed と Float で異なる結果となりました。

小数点以下で必要な桁数が決まっていて、2進法との変換を回避したい場合は従来の Decimal-Fixed を使うのが良さそうです。

さいごに

本日は Amazon QuickSight の 10進数(Decimal)型に Float が追加されたので使ってみました。

従来、固定小数点のみしか扱えなかったのが浮動小数点を使えるようになり、表現の幅が広がりました。
それぞれメリット・デメリットがありますので意識して取り扱いですね。