メインコンテンツまでスキップ

DECIMAL

DECIMAL

概要

DECIMAL(P[,S])

高精度固定小数点値です。 Pは有効桁数(精度)の総数を示します。 Sは小数点以下の最大桁数(スケール)を示します。

Pが省略された場合、デフォルトは10です。 Sが省略された場合、デフォルトは0です。

  • Decimal V2Pの範囲は[1, 27]で、Sの範囲は[0, 9]です。 PSの値以上でなければなりません。 Sのデフォルト値は0です。
  • Fast Decimal(Decimal V3)Pの範囲は[1, 38]で、Sの範囲は[0, P]です。 Sのデフォルト値は0です。Fast Decimalはより高い精度を提供します。主な最適化点:​1. Fast Decimalは可変長整数を使用して小数を表現します。たとえば、精度が18以下の小数は64ビット整数を使用して表現します。一方、Decimal V2はすべての小数に128ビット整数を一律に使用します。64ビットプロセッサ上での算術演算と変換演算は命令の数が少なくなるため、パフォーマンスが大幅に向上します。​2. Fast DecimalはDecimal V2に比べ、特に乗算において、いくつかのアルゴリズムで大幅な最適化を行っています。これにより、パフォーマンスが約4倍改善されます。

Fast Decimalはデフォルトでenable_decimal_v3というFE動的パラメータで制御されます。値はデフォルトでtrueです。

v3.1以降、StarRocksはARRAYMAP、およびSTRUCTのFast Decimalエントリをサポートしています。

制約

StarRocksは、HiveからのORCおよびParquetファイル内のDECIMALデータのクエリをサポートしていません。

テーブルを作成する際にDECIMALカラムを定義します。

CREATE TABLE decimalDemo (
pk BIGINT(20) NOT NULL COMMENT "",
account DECIMAL(20,10) COMMENT ""
) ENGINE=OLAP
DUPLICATE KEY(pk)
COMMENT "OLAP"
DISTRIBUTED BY HASH(pk);

INSERT INTO decimalDemo VALUES
(1,3.141592656),
(2,21.638378),
(3,4873.6293048479);

SELECT * FROM decimalDemo;
+------+-----------------+
| pk | account |
+------+-----------------+
| 1 | 3.1415926560 |
| 3 | 4873.6293048479 |
| 2 | 21.6383780000 |
+------+-----------------+

キーワード

decimal, decimalv2, decimalv3, fast decimal