Деректермен жұмыс
Data Lakehouse базалық архитектурасын өрістеткеннен кейінгі келесі қадам — сервисті деректермен толтыру және оларды талдау. Бұл нұсқаулықта үш түрлі көзден деректерді Data Lakehouse-қа жүктеу және жүктелген деректерді талдау үшін SQL-сұрауларды орындау мысалдары қарастырылады. Деректермен барлық манипуляциялар сыртқы жүйелерге Cloud Trino көмегімен SQL-сұраулар жіберу арқылы орындалады.
Нұсқаулықтың барлық қадамдарын орындағаннан кейін сіз мыналарды білесіз:
- PostgreSQL ДҚ, MySQL ДҚ, сондай-ақ Cloud Trino базалық жеткізіліміне кіретін виртуалды ДҚ сияқты түрлі сыртқы көздерден деректерді Data Lakehouse-қа қалай жүктеу керектігін;
- Data Lakehouse-қа жүктелген деректерді талдау, өңдеу және түрлендіру үшін Cloud Trino көмегімен SQL-сұрауларды қалай орындау керектігін;
- Data Lakehouse-тан деректерді сыртқы ДҚ-ларға қалай экспорттау керектігін;
- Data Lakehouse пен сыртқы ДҚ-ларды қоса алғанда, бірнеше деректер көзіне бір уақытта гибридті аналитикалық SQL-сұрауларды Cloud Trino көмегімен қалай орындау керектігін.
-
PostgreSQL және MySQL сыртқы деректер қорларын дайындаңыз.
Мысал ретінде мыналар пайдаланылды:
- еркін құрылымы бар
table1кестесін қамтитын MySQLmydb1ДҚ; - еркін құрылымы бар
table2кестесін қамтитын PostgreSQLdb1ДҚ.
- еркін құрылымы бар
-
Өрістетіңіз Data Lakehouse сервисінің базалық архитектурасын.
Мысал ретінде өрістету барысында Cloud Trino-ны баптау кезінде мыналар жасалды:
- VK Object Storage қоймасына
s3db1қосылымы; - PostgreSQL
db1ДҚ-наpgdb1қосылымы; - MySQL
mydb1ДҚ-наmysqldb1қосылымы.
Cloud Trino өрістетілгеннен кейін конфигурацияға автоматты түрде үлкен көлемдегі синтетикалық деректер жиынтықтарын генерациялау және тестілеу үшін виртуалды ДҚ-ларға екі қосылым қосылады: tpcds және tpch. Мысалда tpcds қосылымы, ал виртуалды ДҚ-ға сұраулар үшін ондағы қолжетімді деректер схемаларының бірі —
sf10қолданылады.PostgreSQL ДҚ-ға сұраулар үшін мысалда стандартты
publicдеректер схемасы қолданылады. - VK Object Storage қоймасына
-
Cloud Trino-ға сұраулар жіберу үшін компьютеріңізге кез келген SQL-клиентті орнатыңыз. Бұдан әрі барлық сұраулар SQL-клиентте орындалады.
-
MySQL және PostgreSQL сыртқы ДҚ-ларынан деректерді жүктеу үшін
sch1схемасын жасаңыз:CREATE SCHEMA s3db1.sch1; -
Есептеу нәтижелерін сақтау үшін
sch2деректер схемасын жасаңыз:CREATE SCHEMA s3db1.sch2; -
Виртуалды ДҚ-дан деректерді жүктеу үшін пайдаланылатын деректер схемасын көрсетіңіз:
CREATE SCHEMA s3db1.sf10;
Күтілетін нәтиже: SQL-клиентте жаңа деректер схемаларының сәтті жасалғаны туралы хабарлама көрсетіледі.
S3 қоймасының әрбір схемасы туралы ақпарат Cloud Iceberg Metastore сервисінде осы схемада бірінші кесте жасалғанға дейін (CREATE TABLE командасы арқылы) сақталады.
Бірінші кесте жасалғаннан кейін Cloud Iceberg Metastore S3 қоймасында директория жасап, онда мына ақпаратты сақтайды:
- PARQUET форматындағы кестелік деректер;
- JSON форматындағы метадеректер;
- қосымша файлдар, статистика және т.б.
-
MySQL сыртқы ДҚ-ның
table1кестесінен деректерді сұратып, оларды S3 қоймасыныңsch1схемасындағыtable1_from_mysqlжаңа кестесіне жүктеңіз:CREATE TABLE s3db1.sch1.table1_from_mysql ASSELECT * FROM mysqldb1.mydb1.table1; -
PostgreSQL сыртқы ДҚ-ның
table2кестесінен деректерді сұратып, оларды S3 қоймасыныңsch1схемасындағыtable2_from_pgжаңа кестесіне жүктеңіз:CREATE TABLE s3db1.sch1.table2_from_pg ASSELECT * FROM pgdb1.public.table2;
Күтілетін нәтиже: SQL-клиентте жаңа кестелердің сәтті жасалғаны туралы хабарлама көрсетіледі.
Виртуалды ДҚ-ның (customer, store, store_sales, store_returns) бірнеше кестесінен деректерді сұратып, оларды S3 қоймасының sf10 схемасындағы аттас жаңа кестелерге жүктеңіз:
CREATE TABLE s3db1.sf10.customer ASSELECT * FROM tpcds.sf10.customerCREATE TABLE s3db1.sf10.store ASSELECT * FROM tpcds.sf10.storeCREATE TABLE s3db1.sf10.store_sales ASSELECT * FROM tpcds.sf10.store_salesCREATE TABLE s3db1.sf10.store_returns ASSELECT * FROM tpcds.sf10.store_returns
Күтілетін нәтиже: SQL-клиентте жаңа кестелердің сәтті жасалғаны туралы хабарлама көрсетіледі.
Талдаудың мақсаты — қайтару деңгейі күмәнді түрде жоғары (сатып алуларынан көп) клиенттерді анықтау, бұл алаяқтықты немесе тауар сапасына қатысты мәселелерді көрсетуі мүмкін.
Талдау үшін деректер алдыңғы қадамда S3 қоймасының sf10 схемасына жүктелді:
customerкестесі — клиенттер туралы деректер;storeкестесі — дүкендер туралы деректер;store_salesжәнеstore_returnsкестелері — сатылымдар мен қайтарулар туралы деректер.
Талдау жүргізу үшін SQL-сұрауды орындаңыз:
CREATE TABLE s3db1.sch2.analysis_from_s3 ASWITH sales AS (SELECT c.c_customer_sk,c.c_first_name,c.c_last_name,c.c_email_address,SUM(ss.ss_coupon_amt) AS coupon,SUM(ss.ss_sales_price) AS salesprice,SUM(ss.ss_ext_discount_amt) AS discountFROM s3db1.sf10.customer cJOIN s3db1.sf10.store_sales ss ON ss.ss_customer_sk = c.c_customer_skJOIN s3db1.sf10.store s ON s.s_store_sk = ss.ss_store_skGROUP BY c.c_customer_sk,c.c_first_name,c.c_last_name,c.c_email_address),storereturns AS (SELECT c.c_customer_sk,SUM(sr.sr_return_amt) AS returnamout,SUM(sr.sr_fee) AS feeFROM s3db1.sf10.customer cJOIN s3db1.sf10.store_returns sr ON sr.sr_customer_sk = c.c_customer_skJOIN s3db1.sf10.store s ON s.s_store_sk = sr.sr_store_skGROUP BY c.c_customer_sk)SELECT ss.c_customer_sk,ss.c_first_name,ss.c_last_name,ss.c_email_address,ss.salesprice,ss.discount,sr.returnamout,sr.feeFROM sales ssJOIN storereturns sr ON ss.c_customer_sk = sr.c_customer_skWHERE ss.salesprice < sr.returnamoutORDER BY ss.discount DESC limit 10
Cloud Trino SQL-сұрауды келесі ретпен орындайды:
- SQL-сұрауды орындау жоспарын құрастырады.
- Iceberg Metastore сервисінің API-і арқылы бұрын виртуалды ДҚ-дан ақпарат жазылған
sf10схемасындағы S3 қоймасының кестелеріне қол жеткізеді. - Орындау жоспарына сәйкес деректерді оқиды және өңдейді: сұрауда көрсетілген сүзгілер мен топтастыру критерийлерін қолданады, агрегаттарды есептейді және т.б.
- Деректерді өңдеу нәтижесінде SQL-сұрауға сәйкес келетін байланысқан объектілері бар клиенттер тізімін қалыптастырады.
- Нәтижелік деректер іріктемесін S3 қоймасының
sch2схемасындағыanalysis_from_s3жаңа кестесі түрінде жазады.
Күтілетін нәтиже: SQL-клиентте қайтару деңгейі күмәнді түрде жоғары және ең үлкен жеңілдіктер алған клиенттер туралы 10 жазба көрсетіледі.
-
S3 қоймасының
sf10схемасындағыcustomerкестесінен деректерді сұратып, оларды MySQL сыртқы ДҚ-дағы аттас жаңа кесте түрінде сақтаңыз.CREATE TABLE mysqldb1.mydb1.customer ASSELECT * FROM s3db1.sf10.customer; -
S3 қоймасының
sf10схемасындағыstoreкестесінен деректерді сұратып, оларды PostgreSQL сыртқы ДҚ-дағы аттас жаңа кесте түрінде сақтаңыз.CREATE TABLE pgdb1.public.store ASSELECT * FROM s3db1.sf10.store;
Күтілетін нәтиже: SQL-клиентте жаңа кестелердің сәтті жасалғаны туралы хабарлама көрсетіледі.
Талдаудың мақсаты — қайтару деңгейі күмәнді түрде жоғары (сатып алуларынан көп) клиенттерді анықтау, бұл алаяқтықты немесе тауар сапасына қатысты мәселелерді көрсетуі мүмкін.
Талдауға арналған деректер бір уақытта үш көзден алынады:
- клиенттер туралы деректер — MySQL сыртқы ДҚ-дағы
customerкестесінен; - дүкендер туралы деректер — PostgreSQL сыртқы ДҚ-дағы
storeкестесінен; - сатылымдар мен қайтарулар туралы деректер — S3 қоймасының
sf10схемасындағыstore_salesжәнеstore_returnsкестелерінен.
Талдау жүргізу үшін SQL-сұрауды орындаңыз:
CREATE TABLE s3db1.sch2.analysis_hybrid ASWITH sales AS (SELECT c.c_customer_sk,c.c_first_name,c.c_last_name,c.c_email_address,SUM(ss.ss_coupon_amt) AS coupon,SUM(ss.ss_sales_price) AS salesprice,SUM(ss.ss_ext_discount_amt) AS discountFROM mysqldb1.mydb1.customer cJOIN s3db1.sf10.store_sales ss ON ss.ss_customer_sk = c.c_customer_skJOIN pgdb1.public.store s ON s.s_store_sk = ss.ss_store_skGROUP BY c.c_customer_sk,c.c_first_name,c.c_last_name,c.c_email_address),storereturns AS (SELECT c.c_customer_sk,SUM(sr.sr_return_amt) AS returnamout,SUM(sr.sr_fee) AS feeFROM mysqldb1.mydb1.customer cJOIN s3db1.sf10.store_returns sr ON sr.sr_customer_sk = c.c_customer_skJOIN pgdb1.public.store s ON s.s_store_sk = sr.sr_store_skGROUP BY c.c_customer_sk)SELECT ss.c_customer_sk,ss.c_first_name,ss.c_last_name,ss.c_email_address,ss.salesprice,ss.discount,sr.returnamout,sr.feeFROM sales ssJOIN storereturns sr ON ss.c_customer_sk = sr.c_customer_skWHERE ss.salesprice < sr.returnamoutORDER BY ss.discount DESC limit 10
Cloud Trino SQL-сұрауды келесі ретпен орындайды:
- SQL-сұрауды орындау жоспарын құрастырады.
- Iceberg Metastore сервисінің API-і арқылы бұрын виртуалды ДҚ-дан ақпарат жазылған
sf10схемасындағы S3 қоймасының кестелеріне қол жеткізеді. - MySQL ДҚ-ның
customerкестесінен және PostgreSQL ДҚ-ныңstoreкестесінен деректерді алу үшін тікелей сыртқы ДҚ-ларға сұраулар жібереді. - Орындау жоспарына сәйкес деректерді оқиды және өңдейді: сұрауда көрсетілген сүзгілер мен топтастыру критерийлерін қолданады, агрегаттарды есептейді және т.б.
- Деректерді өңдеу нәтижесінде SQL-сұрауға сәйкес келетін байланысқан объектілері бар клиенттер тізімін қалыптастырады.
- Нәтижелік деректер іріктемесін S3 қоймасының
sch2схемасындағыanalysis_from_s3жаңа кестесі түрінде жазады.
Күтілетін нәтиже: SQL-клиентте қайтару деңгейі күмәнді түрде жоғары және ең үлкен жеңілдіктер алған клиенттер туралы 10 жазба көрсетіледі.
Бұрын өрістетілген Data Lakehouse сервисінің инфрақұрылымы есептеу ресурстарын тұтынады және тарифтеледі. Егер ол сізге енді қажет болмаса, оны жойыңыз.