OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

JSONデータをVerticaのテーブルにロードする方法(Flex Table 基本編)

公開日:
更新日:
データロード
#Flex Table
#半構造化データ

はじめに

HadoopやSparkに格納されるログデータ、IoTデバイス等からのセンサーデータなどは、半構造化データを採用していることが多いと言われます。

多くのデータベースでは、これらのデータを事前に構造化データに変換する必要がありますが、
VerticaのFlex Table機能を使用することでETL処理を行わず、テーブルに直接取り込むことができます。

また、Flex Tableを作成する際は列定義を行う必要はありません。
そのため、半構造化データを簡単にデータベースに取り込むことができます。

Flex Tableの作成

Flex TableはCREATE FLEX TABLE文にて作成します。
Flex Tableを作成する際はテーブル名を指定するだけで、列を定義する必要はありません。

dbadmin=> CREATE FLEX TABLE mountains();
CREATE TABLE

JSONデータのロード

ロード対象のJSONファイルを確認します。

$ cat /home/dbadmin/data/flex/mountains.json
{"name": "Everest", "type":"mountain", "height":29029, "hike_safety": 34.1}
{"name": "Mt St Helens", "type":"volcano", "height":29029, "hike_safety": 15.4}
{"name": "Denali", "type":"mountain", "height":17000, "hike_safety": 12.2}
{"name": "Kilimanjaro", "type":"mountain", "height":14000 }
{"name": "Mt Washington", "type":"mountain", "hike_safety": 50.6}

JSONデータをロードします。
特別なツールを使用する必要は無く、Vertica標準のロードコマンドであるCOPYコマンドでロードすることができます。今回はJSONデータをロードするので、COPY文のPARSER句に「fjsonparser」を指定します。

dbadmin=> COPY mountains from '/home/dbadmin/data/flex/mountains.json' parser fjsonparser();
 Rows Loaded
-------------
           5
(1 row)

ロードデータの確認

ロード後は通常テーブルと同様にSELECT文でデータを検索することができます。

dbadmin=> SELECT name, type, height FROM mountains;
     name      |   type   | height
---------------+----------+--------
 Everest       | mountain | 29029
 Mt St Helens  | volcano  | 29029
 Denali        | mountain | 17000
 Kilimanjaro   | mountain | 14000
 Mt Washington | mountain |
(5 rows)

サポート対象外のSQL

2017/03/31時点で、以下のSQLがFlex Tbaleではサポートされておりませんのでご注意ください。
・CREATE TABLE flex_table AS…
・CREATE TABLE flex_table LIKE…
・SELECT INTO
・UPDATE
・MERGE

<補足情報>
Vertica8.1より「CREATE TABLE flex_table AS…」がサポートされました。
詳細は以下の記事よりご確認ください。

Flex Table 8.1新機能 CREATE TABLE AS SELECTのサポート
https://www.ashisuto.co.jp/cm/analytics-database/flex_table_create_as_select.html

検証バージョンについて

この記事の内容はVertica 9.1で確認しています。

更新履歴

2019/02/01 検証バージョンを更新
2018/11/05 「CREATE TABLE flex_table AS…」のサポートを追記
2017/03/31 本記事を公開