はじめに
Flex Tableは半構造化データを簡単にテーブル形式で扱えるようになる便利な機能です。
ただし、ロードをしただけでは通常のテーブルとは使い勝手が異なります。
本記事では、Flex Tableを通常のテーブルと同じように扱いやすくする機能をご紹介します。
キーテーブルとビューを有効化
COMPUTE_FLEXTABLE_KEYS_AND_BUILD_VIEW関数を使うことで、Flex Table のキーテーブルと、ビューを有効化します。
それにより、Flex Tableの列定義を確認したり、「SELECT * FROM テーブル名」での参照が可能となります。
構文
以下が構文です。
1 |
COMPUTE_FLEXTABLE_KEYS_AND_BUILD_VIEW('Flex Table名') |
実行例
事前準備&確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
JSONの確認 $ cat test.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} テーブルの作成 dbadmin=> CREATE FLEX TABLE mountains(); CREATE TABLE データロード dbadmin=> COPY mountains FROM '/tmp/work/test.json' parser fjsonparser(); Rows Loaded ------------- 5 (1 row) ★Flex Tableを作成すると、キーテーブルとビューが自動的に作成されます。 「mountains」だけでなく「mountains_keys」と「mountains_view」も作成されていることを確認します。 dbadmin=> \d List of tables Schema | Name | Kind | Owner | Comment ——–+—————-+——-+———+——— public | mountains | table | dbadmin | public | mountains_keys | table | dbadmin | (2 rows) dbadmin=> \dv List of views Schema | Name | Owner | Comment ——–+—————-+———+——— public | mountains_view | dbadmin | (1 row) ★どちらもこの時点でデータ表示および参照不可であることを確認します。 dbadmin=> SELECT * FROM mountains_keys; key_name | frequency | data_type_guess ----------+-----------+----------------- (0 rows) dbadmin=> SELECT * FROM mountains_view; status ------------------------------------------------------------------------------------------------------------------------------ Please run compute_flextable_keys_and_build_view() to update this view to reflect real and virtual columns in the flex table (1 row) ★COMPUTE_FLEXTABLE_KEYS_AND_BUILD_VIEW関数を実行します。 dbadmin=> SELECT COMPUTE_FLEXTABLE_KEYS_AND_BUILD_VIEW('mountains'); COMPUTE_FLEXTABLE_KEYS_AND_BUILD_VIEW -------------------------------------------------------------------------------------------------------- Please see public.mountains_keys for updated keys The view public.mountains_view is ready for querying (1 row) ★「mountains_keys」「mountains_view」共に参照可能となったことを確認します。 dbadmin=> SELECT * FROM mountains_keys; key_name | frequency | data_type_guess -------------+-----------+----------------- hike_safety | 4 | Numeric(6,2) height | 4 | Integer type | 5 | Varchar(20) name | 5 | Varchar(26) (4 rows) dbadmin=> SELECT * FROM mountains_view; name | type | height | hike_safety ---------------+----------+--------+------------- Kilimanjaro | mountain | 14000 | Everest | mountain | 29029 | 34.10 Mt St Helens | volcano | 29029 | 15.40 Denali | mountain | 17000 | 12.20 Mt Washington | mountain | | 50.60 (5 rows) |
参考
COMPUTE_FLEXTABLE_KEYS_AND_BUILD_VIEW
https://www.vertica.com/docs/9.3.x/HTML/Content/Authoring/SQLReferenceManual/Functions/VerticaFunctions/FlexTables/COMPUTE_FLEXTABLE_KEYS_AND_BUILD_VIEW.htm
Flex Tableの概要
http://vertica-tech.ashisuto.co.jp/flex_table/
JSONデータをVerticaのテーブルにロードする方法(Flex Table 基本編)
http://vertica-tech.ashisuto.co.jp/flex_table_data_road/
ネストされたデータを持つJSONファイルをFlex Tableへロードする
http://vertica-tech.ashisuto.co.jp/flex_table_nested/
検証バージョンについて
この記事の内容はVertica 9.3で確認しています。
更新履歴
2021/04/08 fjsonparser()の指定方法を修正
2020/09/11 本記事を公開
- 投稿タグ
- Flex Table