案件先でBigQueryを扱う中で、いくつか学べたデータ型などがあるのでご紹介していきます。
INTEGERとNUMERICの違い
データの数値型の違いがイマイチよくわからなかったのですが、
数値型には以下の種類があるようです。
INT64(エイリアス: INT、SMALLINT、INTEGER、BIGINT、TINYINT、BYTEINT)
NUMERIC(エイリアス: DECIMAL)
BIGNUMERIC(エイリアス: BIGDECIMAL)
FLOAT64
なんの違いがあるのかというのが以下になります。
INTEGER = 整数型
整数型というのは小数部分を持たない数値の型を指します。
123
0xABC
-123
NUMERIC = 小数型
小数型の値は、固定の小数点以下の精度とスケールを持つ数値です。精度は、数値に含まれる桁数です。スケールは小数点以下の桁数です。
SELECT NUMERIC '0';
SELECT NUMERIC '123456';
SELECT NUMERIC '-3.14';
SELECT NUMERIC '-0.54321';
SELECT NUMERIC '1.23456e05';
SELECT NUMERIC '-9.876e-3';
NUMERICの方が整数型も扱える分、データ型の範囲が大きいので、データの幅が大きいば場合はこちらを使ったほうが良いです。
SAFE_CASTとCASTの違い
次は変換関数の違いです。正直これは違いが分かっても用途がわからないと難しかったです。
CAST
CAST構文は、式の結果の型を他の型に変換する必要があることを示す目的でクエリが使用されます。
CAST を使用する場合、Google 標準 SQL でそのキャスティングを実行できなければクエリは失敗します。このようなエラーの発生を防ぐには、SAFE_CAST を使用します。
次のクエリを実行すると、x が 1 の場合は "true" になります。その他の非 NULL 値の場合は "false" に、x が NULL の場合は NULL になります。
CAST(x=1 AS STRING)
SAFE_CAST
CAST を使用する場合、Google 標準 SQL でそのキャスティングを実行できなければクエリは失敗します。たとえば、次のクエリによってエラーが発生します。
SELECT CAST("apple" AS INT64) AS not_a_number;
このようなエラーからクエリを守るには、SAFE_CAST を使用できます。SAFE_CAST はエラーの代わりに NULL を返すという点を除き、CAST とまったく同じです。
SELECT SAFE_CAST("apple" AS INT64) AS not_a_number;
+--------------+
| not_a_number |
+--------------+
| NULL |
+--------------+
文字列関数
CONCAT
1 つ以上の値を 1 つに連結します。すべての値が BYTES か、STRING にキャスト可能なデータ型である必要があります。
入力引数が NULL の場合、この関数は NULL を返します。
SELECT CONCAT('T.P.', ' ', 'Bar') as author;
+---------------------+
| author |
+---------------------+
| T.P. Bar |
+---------------------+
With Employees AS
(SELECT
'John' AS first_name,
'Doe' AS last_name
UNION ALL
SELECT
'Jane' AS first_name,
'Smith' AS last_name
UNION ALL
SELECT
'Joe' AS first_name,
'Jackson' AS last_name)
SELECT
CONCAT(first_name, ' ', last_name)
AS full_name
FROM Employees;
+---------------------+
| full_name |
+---------------------+
| John Doe |
| Jane Smith |
| Joe Jackson |
+---------------------+
参考サイト
まとめ
まだSQLの少しの知識を扱っただけなのですが、日々アウトプット&インプット頑張ります!