JSON処理関数の紹介
PrestoのJSON処理関数についてご紹介します。

JSON処理関数はjson,jsonb型を簡単に扱うための関数になります。他もRDBでも新たしいバージョンでは関数があったりしますが、PrestoのJSON処理をここではご紹介いたします。
JSON処理関数一覧
凡例
下記一覧で利用している変数などをここに記載します。
変数一覧
json
・・・ json型array
・・・ 配列型(公式ではjson_arrayとなっている)- 例:[“a”,”b”,”c”]
search_str
・・・ 検索文字列int
・・・ 数値 ※配列の開始は0から始まりますstr
・・・ 文字列path
・・・ json内の場所col
・・・ カラム名、固定値type
・・・ 型タイプ(integer, varcharなど)
jsonフォーマットについて
シンプルなjsonデータが下記になります。
jsonではオブジェクトをネストすることも可能で中に基本的な型(論理型,文字列型,数値型)と2種類の構造体(オブジェクト,配列)で記述ができます。詳細は下記で説明をします。
関数一覧
No | 関数 | 説明 |
1 | cast(str AS JSON) | 他の型からJSON型にする場合に利用します。 返却値:JSON |
2 | cast(JSON col AS type) | JSON型から他の型にする場合に利用します。 返却値:入力した型と同じ |
3 | json_array_contains(array, search_str) | 配列内にsearch_str が存在するかを真偽で返します。返却値:boolean |
4 | json_array_get(array, int) | 配列から場所(int )を指定し、その場所の値を返します。返却値:varchar |
5 | json_array_length(array) | 配列から値の数を返します。 返却値:bigint(integer) |
6 | json_format(json) | jsonデータを文字列で返します。 返却値:varchar |
7 | json_parse(str) | 文字列からjsonに変換して返します。 文字列の配列はjson形式でないとエラーとなるため、注意してください。 返却値:json |
8 | json_extract(json, path) | jsonの場所を指定することでその値をかえします。 例) json ‘{“x”: {“a”: 1, “b”: 2}}’path ‘$.x.b’ 結果としては[2]を返却します。 返却値:json |
9 | json_extract_scalar(json, path) | json_extractと同様ですが、返却値がjsonではなく、文字列で返却します。 返却値:varchar |
10 | json_size(json, path) | jsonの場所を指定するとその中のスカラー値の数を返却します。 ※スカラー値:配列,jsonではない値。 正確な表現ではないため、いつか記事書きます。 返却値:bigint(integer) |
備考
多用することはあまりないかもしれませんが、JSONを格納しているカラムの場合ももちろん、配列で格納されているカラムにも利用できる関数があるため、そんなときにお力になれたら幸いです。
参照元
https://prestodb.io/docs/0.172/functions/aggregate.html