Как Flex table работает в Vertica?

Гибкие столы - одна из новых функций Vertica 7.0.

Может ли кто-нибудь сказать мне, как таблица Flex преобразует неструктурированные данные в структурированные?

Заранее спасибо!


person DrewRose    schedule 07.02.2014    source источник


Ответы (3)


Столы Well Flex - это новая функция в Vertica 7.0. Эта функция создает таблицу другого типа, разработанную специально для загрузки и запроса неструктурированных данных, также называемых полуструктурированными данными в HP Vertica Синтаксис для создания гибкой таблицы:

create flex table unstruc_data();

Если содержимое unstruc_data состоит из двух столбцов: _ identity _ и _ row _; Столбец строки - это содержимое полуструктурированных данных с типом LONG VARBINARY, а идентификатором будет идентификатор строки.
В таблицах Flex есть набор вспомогательных функций:

  • COMPUTE_FLEXTABLE_KEYS
  • BUILD_FLEXTABLE_VIEW
  • COMPUTE_FLEXTABLE_KEYS_AND_BUILD_VIEW
  • MATERIALIZE_FLEXTABLE_COLUMNS
  • RESTORE_FLEXTABLE_DEFAULT_KEYS_TABLE_AND_VIEW

Я не собираюсь подробно объяснять их все, так как считаю, что вам следует пойти и изучить их. Для получения дополнительных сведений о новых функциях Vertica перейдите по этой ссылке Vertica 7.0 New Stuff

person Up_One    schedule 07.02.2014

В сценарии, когда документ JSON передается вам через клиента, и вам нужно сохранить его в Vertica DB.

Без использования гибкой таблицы есть несколько проблем: 1) Вам необходимо знать структуру Json. 2) Создайте таблицу в Vertica DB. 3) Извлеките значение каждого столбца из документа JSON. 4) Вставьте значения в таблицу.

Помимо этого процесса, если новый ключ добавляется в JSON, существует дополнительная задача для базы данных vertica по изменению таблицы, а также по логике обработки для получения нового значения пары ключей.

Используя таблицу Flex, ниже подробно объясняется, как мы ее упрощаем:

1) Take the below Json,EE.txt
    {"Name":"Rahul","Age":30}
2) Create a flex table EMP_test     
    dbadmin=> create flex table EMP_Test();
    CREATE TABLE
3) Load the data into the flex table 
    dbadmin=> copy EMP_Test from '/home/dbadmin/EE.txt' parser fjsonparser();
     Rows Loaded 
    -------------
               1
    (1 row)

4) To find out what keys are there in your Json , You have to refresh keys projection using below command 
    dbadmin=> select compute_flextable_keys('EMP_Test');
                  compute_flextable_keys              
    --------------------------------------------------
     Please see public.EMP_Test_keys for updated keys
    (1 row)
    dbadmin=> select * FRom EMP_Test_keys;
     key_name | frequency | data_type_guess 
    ----------+-----------+-----------------
     Age      |         1 | varchar(20)
     Name     |         1 | varchar(20)
    (2 rows)


5) Refresh the view for flex table using below command .You can query the view for data  
    dbadmin=> 
    dbadmin=> select build_flextable_view('EMP_Test');
                    build_flextable_view                 
    -----------------------------------------------------
     The view public.EMP_Test_view is ready for querying
    (1 row)

    dbadmin=> select * From EMP_Test_View
    dbadmin-> ;
     age | name  
    -----+-------
     30  | Rahul
    (1 row)

6) Now , If your Json structure changes and a Additional key 'Gender' is added .
        {"Name":"Sid","Age":22,"Gender":"M"}

7) You can load the data directly into the table EMP_Test
    dbadmin=> copy EMP_Test from '/home/dbadmin/EE1.txt' parser fjsonparser();
     Rows Loaded 
    -------------
               1
    (1 row)
8) Re compute the keys and rebuild the view  using below command 
    dbadmin=> select compute_flextable_keys('EMP_Test');
                  compute_flextable_keys              
    --------------------------------------------------
     Please see public.EMP_Test_keys for updated keys
    (1 row)

    dbadmin=> select build_flextable_view('EMP_Test');
                    build_flextable_view                 
    -----------------------------------------------------
     The view public.EMP_Test_view is ready for querying
    (1 row)

9) You can find the new data added and new keys using the below command .
    dbadmin=> 
    dbadmin=> select * From EMP_Test_keys;
     key_name | frequency | data_type_guess 
    ----------+-----------+-----------------
     Age      |         2 | varchar(20)
     Name     |         2 | varchar(20)
     Gender   |         1 | varchar(20)
    (3 rows)

    dbadmin=> select * From EMP_test_view;
     age | name  | gender 
    -----+-------+--------
     30  | Rahul | 
     22  | Sid   | M
    (2 rows)

This is how Flex table converts unstructured data(semi structured data)  to structured data  .
Flex table has made it very easy to integrate any data service with vertica DB .
person Sudhanshu Badoni    schedule 10.12.2016

все неструктурированные данные сохраняются в поле необработанных данных

это большой двоичный объект

когда вам нужен доступ к неструктурированному полю, это МЕДЛЕННО, потому что нужно извлекать BLOB

person Slach    schedule 20.02.2014