Гибкие столы - одна из новых функций Vertica 7.0.
Может ли кто-нибудь сказать мне, как таблица Flex преобразует неструктурированные данные в структурированные?
Заранее спасибо!
Гибкие столы - одна из новых функций Vertica 7.0.
Может ли кто-нибудь сказать мне, как таблица Flex преобразует неструктурированные данные в структурированные?
Заранее спасибо!
Столы Well Flex - это новая функция в Vertica 7.0. Эта функция создает таблицу другого типа, разработанную специально для загрузки и запроса неструктурированных данных, также называемых полуструктурированными данными в HP Vertica Синтаксис для создания гибкой таблицы:
create flex table unstruc_data();
Если содержимое unstruc_data состоит из двух столбцов: _ identity _ и _ row _; Столбец строки - это содержимое полуструктурированных данных с типом LONG VARBINARY, а идентификатором будет идентификатор строки.
В таблицах Flex есть набор вспомогательных функций:
Я не собираюсь подробно объяснять их все, так как считаю, что вам следует пойти и изучить их. Для получения дополнительных сведений о новых функциях Vertica перейдите по этой ссылке Vertica 7.0 New Stuff
В сценарии, когда документ 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 .
все неструктурированные данные сохраняются в поле необработанных данных
это большой двоичный объект
когда вам нужен доступ к неструктурированному полю, это МЕДЛЕННО, потому что нужно извлекать BLOB