OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

Flex Table 8.1新機能 CREATE TABLE AS SELECTのサポート

公開日:
更新日:
基本操作
新バージョン/機能
#Flex Table
#手順

はじめに

Vertica8.1からFlex Tableの新機能として、ロードした結果をCREATE TABLE AS SELECTで複製できるようになりました。
この記事ではこの拡張機能の利用手順をご紹介します。

<参考記事>
JSONデータをVerticaのテーブルにロードする方法(Flex Table 基本編)
https://www.ashisuto.co.jp/cm/analytics-database/flex_table_data_road.html

Flex TableをCREATE TABLE AS SELECTする手順

以下の構文でFlex Tableを作成します。

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

dbadmin=> \d
                               List of tables
 Schema |                 Name                  | Kind  |  Owner  | Comment
--------+---------------------------------------+-------+---------+---------
 public | mountains                             | table | dbadmin | ★
 public | mountains_keys                        | table | dbadmin | ★
(2 rows)

★印が新規に作成されたテーブルです。

ロード対象の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データをロードします。

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

ロードデータを確認します。

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

CREATE TABLE AS SELECTで他のテーブルにデータを複製します。

dbadmin=> create table mountains_full as select "name"::varchar, "type"::varchar, "height"::int, "hike_safety"::varchar FROM mount
ains;
CREATE TABLE

dbadmin=> \d
                               List of tables
 Schema |                 Name                  | Kind  |  Owner  | Comment
--------+---------------------------------------+-------+---------+---------
 public | mountains                             | table | dbadmin |
 public | mountains_full                        | table | dbadmin | ★
 public | mountains_keys                        | table | dbadmin |
(3 rows)

★印が新規に作成されたテーブルです。

新規作成したmountains_fullテーブルに対して検索を行います。
通常のSQL文でデータを検索できることを確認できました。

dbadmin=> select * from mountains_full;
     name      |   type   | height | hike_safety
---------------+----------+--------+-------------
 Everest       | mountain |  29029 | 34.1
 Mt St Helens  | volcano  |  29029 | 15.4
 Denali        | mountain |  17000 | 12.2
 Kilimanjaro   | mountain |  14000 |
 Mt Washington | mountain |        | 50.6
(5 rows)

サポート対象外のSQL

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

参考情報

Creating Flex Tables
https://my.vertica.com/docs/8.1.x/HTML/index.htm#Authoring/FlexTables/CreatingFlexTables.htm

※「Creating Columnar Tables from Flex Tables」パートをご参照ください。

検証バージョンについて

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