{"id":108418,"date":"2025-05-10T19:35:13","date_gmt":"2025-05-10T16:05:13","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/part-2-syncing-normalized-postgresql-data-to-denormalized-clickhouse-using-airbyte-dbt-2hic\/"},"modified":"2025-05-10T19:35:13","modified_gmt":"2025-05-10T16:05:13","slug":"part-2-syncing-normalized-postgresql-data-to-denormalized-clickhouse-using-airbyte-dbt-2hic","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/part-2-syncing-normalized-postgresql-data-to-denormalized-clickhouse-using-airbyte-dbt-2hic\/","title":{"rendered":"\u0642\u0633\u0645\u062a 2: \u0647\u0645\u06af\u0627\u0645 \u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0646\u0631\u0645\u0627\u0644 PostgreSQL \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062e\u0627\u0646\u0647 Clickhouse \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Airbyte + DBT"},"content":{"rendered":"<div data-article-id=\"2470110\" id=\"article-body\">\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"\u062a\u063a\u06cc\u06cc\u0631 \u0648\u0636\u0639\u06cc\u062a \u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/part-2-syncing-normalized-postgresql-data-to-denormalized-clickhouse-using-airbyte-dbt-2hic\/#%D8%A7%D8%B2_%D8%B3%D9%86%DA%AF%D8%B1%D9%87%D8%A7%DB%8C_%D9%85%D8%B9%D8%A7%D9%85%D9%84%D9%87_%D8%A7%DB%8C_%DA%AF%D8%B1%D9%81%D8%AA%D9%87_%D8%AA%D8%A7_%D8%B5%D8%B9%D9%88%D8%AF_%D8%AA%D8%AD%D9%84%DB%8C%D9%84%DB%8C_postgresql_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%A9%D9%84%DB%8C%DA%A9_%DA%A9%D8%B1%D8%AF%D9%86_%D8%A8%D8%A7_Airbyte_%D9%88_DBT\" >\u0627\u0632 \u0633\u0646\u06af\u0631\u0647\u0627\u06cc \u0645\u0639\u0627\u0645\u0644\u0647 \u0627\u06cc \u06af\u0631\u0641\u062a\u0647 \u062a\u0627 \u0635\u0639\u0648\u062f \u062a\u062d\u0644\u06cc\u0644\u06cc: postgresql \u0628\u0631\u0627\u06cc \u06a9\u0644\u06cc\u06a9 \u06a9\u0631\u062f\u0646 \u0628\u0627 Airbyte \u0648 DBT<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/part-2-syncing-normalized-postgresql-data-to-denormalized-clickhouse-using-airbyte-dbt-2hic\/#%D8%B7%D8%B1%D8%AD_%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C_%D9%85%D8%A7\" >\u0637\u0631\u062d \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/part-2-syncing-normalized-postgresql-data-to-denormalized-clickhouse-using-airbyte-dbt-2hic\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_1_%D8%AA%D8%B9%DB%8C%DB%8C%D9%86_%D9%BE%D8%A7%DB%8C%D9%87_%E2%80%93_%D8%AA%D8%B9%D8%B1%DB%8C%D9%81_%D8%B7%D8%B1%D8%AD_%D9%85%D9%86%D8%A8%D8%B9_%D8%AE%D9%88%D8%AF_%D8%AF%D8%B1_PostgreSQL\" >\u0645\u0631\u062d\u0644\u0647 1: \u062a\u0639\u06cc\u06cc\u0646 \u067e\u0627\u06cc\u0647 &#8211; \u062a\u0639\u0631\u06cc\u0641 \u0637\u0631\u062d \u0645\u0646\u0628\u0639 \u062e\u0648\u062f \u062f\u0631 PostgreSQL<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/part-2-syncing-normalized-postgresql-data-to-denormalized-clickhouse-using-airbyte-dbt-2hic\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_2_%D8%AA%D9%86%D8%B8%DB%8C%D9%85_%D8%A8%D8%A7%D8%AF%D8%A8%D8%A7%D9%86_%D8%A8%D8%A7_Airbyte_%E2%80%93_%D8%AF%D8%A7%D8%AF%D9%87_%D9%87%D8%A7%DB%8C_%D9%85%D8%B5%D8%B1%D9%81_%D8%A7%D8%B2_Postgres\" >\u0645\u0631\u062d\u0644\u0647 2: \u062a\u0646\u0638\u06cc\u0645 \u0628\u0627\u062f\u0628\u0627\u0646 \u0628\u0627 Airbyte &#8211; \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u0635\u0631\u0641 \u0627\u0632 Postgres<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/part-2-syncing-normalized-postgresql-data-to-denormalized-clickhouse-using-airbyte-dbt-2hic\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_3_%D8%B3%D8%A7%D8%AE%D8%AA_%D9%88_%D8%B3%D8%A7%D8%B2_%D8%A8%DB%8C%D9%86%D8%B4_%D8%A8%D8%A7_DBT_%E2%80%93_%D8%AA%D8%AD%D9%88%D9%84_%D9%88_%D8%AA%D8%AC%D8%B2%DB%8C%D9%87_%D9%88_%D8%AA%D8%AD%D9%84%DB%8C%D9%84\" >\u0645\u0631\u062d\u0644\u0647 3: \u0633\u0627\u062e\u062a \u0648 \u0633\u0627\u0632 \u0628\u06cc\u0646\u0634 \u0628\u0627 DBT &#8211; \u062a\u062d\u0648\u0644 \u0648 \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/part-2-syncing-normalized-postgresql-data-to-denormalized-clickhouse-using-airbyte-dbt-2hic\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_4_%D8%A8%D9%87%DB%8C%D9%86%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%B3%D8%B1%D8%B9%D8%AA_%D8%AF%D8%B1_Clickhouse_%E2%80%93_%D9%BE%D8%A7%D8%B1%D8%AA%DB%8C%D8%B4%D9%86_%D8%A8%D9%86%D8%AF%DB%8C_%D9%88_%D8%AA%D8%AD%D9%82%D9%82\" >\u0645\u0631\u062d\u0644\u0647 4: \u0628\u0647\u06cc\u0646\u0647 \u0633\u0627\u0632\u06cc \u0633\u0631\u0639\u062a \u062f\u0631 Clickhouse &#8211; \u067e\u0627\u0631\u062a\u06cc\u0634\u0646 \u0628\u0646\u062f\u06cc \u0648 \u062a\u062d\u0642\u0642<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/part-2-syncing-normalized-postgresql-data-to-denormalized-clickhouse-using-airbyte-dbt-2hic\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_5_%D8%A7%D8%B2_%D8%A8%DB%8C%D9%86_%D8%A8%D8%B1%D8%AF%D9%86_%D9%82%D8%AF%D8%B1%D8%AA_%D8%AA%D8%AD%D9%84%DB%8C%D9%84%DB%8C_%E2%80%93_%D9%BE%D8%B1%D8%B3_%D9%88_%D8%AC%D9%88_%D8%A7%D8%B2_%D8%AF%D8%A7%D8%AF%D9%87_%D9%87%D8%A7%DB%8C_denormalized_%D8%AE%D9%88%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 5: \u0627\u0632 \u0628\u06cc\u0646 \u0628\u0631\u062f\u0646 \u0642\u062f\u0631\u062a \u062a\u062d\u0644\u06cc\u0644\u06cc &#8211; \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc denormalized \u062e\u0648\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/part-2-syncing-normalized-postgresql-data-to-denormalized-clickhouse-using-airbyte-dbt-2hic\/#%D8%A7%D8%AA%D9%88%D9%85%D8%A7%D8%B3%DB%8C%D9%88%D9%86_%D8%AE%D8%B7_%D9%84%D9%88%D9%84%D9%87_%D8%AF%D8%A7%D8%AF%D9%87_%D8%AE%D9%88%D8%AF_%D8%B1%D8%A7_%D8%A8%D8%A7_CICD\" >\u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u062e\u0637 \u0644\u0648\u0644\u0647 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 CI\/CD<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/part-2-syncing-normalized-postgresql-data-to-denormalized-clickhouse-using-airbyte-dbt-2hic\/#GOTCHAS_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%AD%D8%B1%DA%A9%D8%AA\" >GOTCHAS \u0628\u0631\u0627\u06cc \u062d\u0631\u06a9\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/part-2-syncing-normalized-postgresql-data-to-denormalized-clickhouse-using-airbyte-dbt-2hic\/#%D8%A7%D9%81%DA%A9%D8%A7%D8%B1_%D9%86%D9%87%D8%A7%DB%8C%DB%8C_%DB%8C%DA%A9_%D8%A7%D9%84%DA%AF%D9%88%DB%8C_%D9%82%D8%AF%D8%B1%D8%AA%D9%85%D9%86%D8%AF\" >\u0627\u0641\u06a9\u0627\u0631 \u0646\u0647\u0627\u06cc\u06cc: \u06cc\u06a9 \u0627\u0644\u06af\u0648\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/part-2-syncing-normalized-postgresql-data-to-denormalized-clickhouse-using-airbyte-dbt-2hic\/#Next_Up_%D8%A8%D9%87_%D8%A7%D8%B4%D8%AA%D8%B1%D8%A7%DA%A9_%DA%AF%D8%B0%D8%A7%D8%B4%D8%AA%D9%86_%DA%AF%D9%86%D8%AC%DB%8C%D9%86%D9%87_%D9%87%D8%A7%DB%8C_%D8%AA%D8%AD%D9%84%DB%8C%D9%84%DB%8C_%D8%AE%D9%88%D8%AF\" >Next Up: \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0646 \u06af\u0646\u062c\u06cc\u0646\u0647 \u0647\u0627\u06cc \u062a\u062d\u0644\u06cc\u0644\u06cc \u062e\u0648\u062f<\/a><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A7%D8%B2_%D8%B3%D9%86%DA%AF%D8%B1%D9%87%D8%A7%DB%8C_%D9%85%D8%B9%D8%A7%D9%85%D9%84%D9%87_%D8%A7%DB%8C_%DA%AF%D8%B1%D9%81%D8%AA%D9%87_%D8%AA%D8%A7_%D8%B5%D8%B9%D9%88%D8%AF_%D8%AA%D8%AD%D9%84%DB%8C%D9%84%DB%8C_postgresql_%D8%A8%D8%B1%D8%A7%DB%8C_%DA%A9%D9%84%DB%8C%DA%A9_%DA%A9%D8%B1%D8%AF%D9%86_%D8%A8%D8%A7_Airbyte_%D9%88_DBT\"><\/span>\n<p>  \u0627\u0632 \u0633\u0646\u06af\u0631\u0647\u0627\u06cc \u0645\u0639\u0627\u0645\u0644\u0647 \u0627\u06cc \u06af\u0631\u0641\u062a\u0647 \u062a\u0627 \u0635\u0639\u0648\u062f \u062a\u062d\u0644\u06cc\u0644\u06cc: postgresql \u0628\u0631\u0627\u06cc \u06a9\u0644\u06cc\u06a9 \u06a9\u0631\u062f\u0646 \u0628\u0627 Airbyte \u0648 DBT<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u0642\u0633\u0645\u062a 1 \u060c \u0645\u0627 \u0628\u0647 \u062f\u0644\u0627\u06cc\u0644 \u0627\u0633\u0627\u0633\u06cc \u06a9\u0647 \u0686\u0631\u0627 \u06a9\u0641\u0634 \u06a9\u0631\u062f\u0646 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 PostgreSQL \u0634\u0645\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062f\u0631 Clickhouse \u0627\u0633\u062a \u060c \u062f\u0633\u062a\u0648\u0631 \u0627\u0644\u0639\u0645\u0644 \u0644\u0627\u063a\u0631\u06cc \u062a\u062d\u0644\u06cc\u0644\u06cc \u0627\u0633\u062a. \u0645\u0627 \u0646\u0642\u0627\u0637 \u0642\u0648\u062a \u0645\u062a\u0636\u0627\u062f \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc OLTP \u0631\u062f\u06cc\u0641 \u06af\u0631\u0627 \u0645\u0627\u0646\u0646\u062f PostgreSQL \u0648 \u0642\u062f\u0631\u062a\u0647\u0627\u06cc OLAP \u0633\u062a\u0648\u0646 \u06af\u0631\u0627 \u0645\u0627\u0646\u0646\u062f Clickhouse \u0631\u0627 \u0628\u0631\u062c\u0633\u062a\u0647 \u06a9\u0631\u062f\u06cc\u0645.<\/p>\n<p>\u062d\u0627\u0644 \u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0622\u0633\u062a\u06cc\u0646 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u062c\u0645\u0639 \u06a9\u0646\u06cc\u0645 \u0648 \u0622\u0646 \u0646\u0638\u0631\u06cc\u0647 \u0631\u0627 \u0628\u0647 \u06cc\u06a9 \u0631\u0627\u0647 \u062d\u0644 \u0645\u0644\u0645\u0648\u0633 \u0648 \u0648\u0627\u0642\u0639\u06cc \u062a\u0631\u062c\u0645\u0647 \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u060c \u0645\u0627 \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a\u0646 \u06cc\u06a9 \u062e\u0637 \u0644\u0648\u0644\u0647 \u062f\u0627\u062f\u0647 \u0642\u0648\u06cc \u06a9\u0647 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0647\u0645\u06af\u0627\u0645 \u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u067e\u0631\u062f\u0627\u0632\u0634 \u0645\u0639\u0627\u0645\u0644\u0627\u062a \u0622\u0646\u0644\u0627\u06cc\u0646 \u0639\u0627\u062f\u06cc \u0634\u0645\u0627 (OLTP) \u06a9\u0647 \u062f\u0631 PostgreSQL \u0633\u0627\u06a9\u0646 \u0647\u0633\u062a\u0646\u062f \u060c \u0628\u0647 \u06cc\u06a9 \u0637\u0631\u062d \u0628\u0633\u06cc\u0627\u0631 \u0639\u0645\u0644\u06a9\u0631\u062f\u06cc \u0648 \u0628\u0647\u06cc\u0646\u0647 \u0633\u0627\u0632\u06cc \u0634\u062f\u0647 \u0628\u0631\u0627\u06cc \u067e\u0631\u062f\u0627\u0632\u0634 \u062a\u062d\u0644\u06cc\u0644\u06cc \u0622\u0646\u0644\u0627\u06cc\u0646 (OLAP) \u062f\u0631 \u062f\u0627\u062e\u0644 Clickhouse \u0647\u0645\u06af\u0627\u0645 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/p>\n<p>\u0647\u0645\u0631\u0627\u0647\u0627\u0646 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0633\u0641\u0631 Airbyte \u0628\u0631\u0627\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0636\u0628\u0637 \u062f\u0627\u062f\u0647 \u0647\u0627 (CDC) \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0645\u0635\u0631\u0641 \u0648 DBT (\u0627\u0628\u0632\u0627\u0631 \u0633\u0627\u062e\u062a \u062f\u0627\u062f\u0647) \u0628\u0631\u0627\u06cc \u062a\u062d\u0648\u0644\u0627\u062a \u0638\u0631\u06cc\u0641 \u0648 \u062a\u06a9\u0627\u0645\u0644 \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u0627\u06cc \u0632\u06cc\u0631\u06a9\u0627\u0646\u0647 \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%B7%D8%B1%D8%AD_%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C_%D9%85%D8%A7\"><\/span>\n<p>  \u0637\u0631\u062d \u0645\u0639\u0645\u0627\u0631\u06cc \u0645\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u06cc\u06a9 \u0646\u0645\u0627\u06cc\u0634 \u0628\u0635\u0631\u06cc \u0627\u0632 \u062c\u0631\u06cc\u0627\u0646 \u062f\u0627\u062f\u0647 \u0627\u06cc \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0633\u0627\u062e\u062a \u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0648\u062f \u0622\u0648\u0631\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a:<\/p>\n<p><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_1_%D8%AA%D8%B9%DB%8C%DB%8C%D9%86_%D9%BE%D8%A7%DB%8C%D9%87_%E2%80%93_%D8%AA%D8%B9%D8%B1%DB%8C%D9%81_%D8%B7%D8%B1%D8%AD_%D9%85%D9%86%D8%A8%D8%B9_%D8%AE%D9%88%D8%AF_%D8%AF%D8%B1_PostgreSQL\"><\/span>\n<p>  \u0645\u0631\u062d\u0644\u0647 1: \u062a\u0639\u06cc\u06cc\u0646 \u067e\u0627\u06cc\u0647 &#8211; \u062a\u0639\u0631\u06cc\u0641 \u0637\u0631\u062d \u0645\u0646\u0628\u0639 \u062e\u0648\u062f \u062f\u0631 PostgreSQL<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u06cc\u06a9 \u0633\u0646\u0627\u0631\u06cc\u0648\u06cc \u0645\u0634\u062a\u0631\u06a9 \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u0645: \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0635\u0644\u06cc \u062a\u062c\u0627\u0631\u062a \u0627\u0644\u06a9\u062a\u0631\u0648\u0646\u06cc\u06a9\u06cc. \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u0639\u0627\u0645\u0644\u0647 \u0627\u06cc \u0645\u0627 \u062f\u0631 PostgreSQL \u0628\u0647 \u0631\u0648\u0634\u06cc \u0639\u0627\u062f\u06cc \u0633\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u060c \u0648 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u06cc\u06a9\u067e\u0627\u0631\u0686\u06af\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u0648 \u0628\u0647 \u062d\u062f\u0627\u0642\u0644 \u0631\u0633\u0627\u0646\u062f\u0646 \u0627\u0641\u0632\u0648\u0646\u06af\u06cc \u0628\u0631\u0627\u06cc \u0646\u0648\u0634\u062a\u0646 \u06a9\u0627\u0631\u0622\u0645\u062f \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"c1\">-- users<\/span>\n<span class=\"k\">CREATE<\/span> <span class=\"k\">TABLE<\/span> <span class=\"n\">users<\/span> <span class=\"p\">(<\/span>\n  <span class=\"n\">id<\/span> <span class=\"n\">UUID<\/span> <span class=\"k\">PRIMARY<\/span> <span class=\"k\">KEY<\/span><span class=\"p\">,<\/span>\n  <span class=\"n\">name<\/span> <span class=\"nb\">TEXT<\/span><span class=\"p\">,<\/span>\n  <span class=\"n\">email<\/span> <span class=\"nb\">TEXT<\/span>\n<span class=\"p\">);<\/span>\n\n<span class=\"c1\">-- orders<\/span>\n<span class=\"k\">CREATE<\/span> <span class=\"k\">TABLE<\/span> <span class=\"n\">orders<\/span> <span class=\"p\">(<\/span>\n  <span class=\"n\">id<\/span> <span class=\"n\">UUID<\/span> <span class=\"k\">PRIMARY<\/span> <span class=\"k\">KEY<\/span><span class=\"p\">,<\/span>\n  <span class=\"n\">user_id<\/span> <span class=\"n\">UUID<\/span> <span class=\"k\">REFERENCES<\/span> <span class=\"n\">users<\/span><span class=\"p\">(<\/span><span class=\"n\">id<\/span><span class=\"p\">),<\/span>\n  <span class=\"n\">total_amount<\/span> <span class=\"nb\">NUMERIC<\/span><span class=\"p\">,<\/span>\n  <span class=\"n\">created_at<\/span> <span class=\"n\">TIMESTAMPTZ<\/span>\n<span class=\"p\">);<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0633\u0627\u062e\u062a\u0627\u0631 \u0639\u0627\u062f\u06cc \u060c \u0628\u0627 \u062c\u062f\u0627\u06af\u0627\u0646\u0647 <code>users<\/code> \u0648\u062a <code>orders<\/code> \u062c\u062f\u0627\u0648\u0644 \u0645\u0631\u062a\u0628\u0637 \u0628\u0627 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u062e\u0627\u0631\u062c\u06cc \u060c \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u0639\u0627\u0645\u0644\u0647 \u0627\u06cc \u0627\u06cc\u062f\u0647 \u0622\u0644 \u0627\u0633\u062a.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_2_%D8%AA%D9%86%D8%B8%DB%8C%D9%85_%D8%A8%D8%A7%D8%AF%D8%A8%D8%A7%D9%86_%D8%A8%D8%A7_Airbyte_%E2%80%93_%D8%AF%D8%A7%D8%AF%D9%87_%D9%87%D8%A7%DB%8C_%D9%85%D8%B5%D8%B1%D9%81_%D8%A7%D8%B2_Postgres\"><\/span>\n<p>  <strong>\u0645\u0631\u062d\u0644\u0647 2: \u062a\u0646\u0638\u06cc\u0645 \u0628\u0627\u062f\u0628\u0627\u0646 \u0628\u0627 Airbyte &#8211; \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u0635\u0631\u0641 \u0627\u0632 Postgres<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Airbyte \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06a9\u0634\u062a\u06cc \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0645\u0627 \u0628\u0631\u0627\u06cc \u0645\u0635\u0631\u0641 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0642\u062f\u0645 \u0645\u06cc \u06af\u0630\u0627\u0631\u062f. \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0642\u0648\u06cc \u0622\u0646 \u0627\u0632 CDC (\u062a\u063a\u06cc\u06cc\u0631 \u0636\u0628\u0637 \u062f\u0627\u062f\u0647 \u0647\u0627) \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0648\u0631\u0648\u062f \u0628\u0647 \u0633\u06cc\u0633\u062a\u0645 PostgreSQL Writ-Ahead (WAL) \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0631\u0627 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0648\u0627\u0642\u0639\u06cc \u062f\u0631 Clickhouse \u067e\u062e\u0634 \u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u0631\u0648\u06cc\u06a9\u0631\u062f \u062a\u0623\u062e\u06cc\u0631 \u06a9\u0645 \u0631\u0627 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0647\u0631 \u0627\u0635\u0644\u0627\u062d \u0634\u062f\u0647 \u062f\u0631 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u0646\u0628\u0639 \u0645\u0627 \u0631\u0627 \u0636\u0628\u0637 \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0628\u0647 \u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u060c \u0628\u0627\u06cc\u062f Airbyte \u0631\u0627 \u0628\u0627 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<ul>\n<li>\n<strong>\u0645\u0646\u0628\u0639:<\/strong> \u0628\u0647 \u0646\u0645\u0648\u0646\u0647 postgresql \u062e\u0648\u062f \u0648\u0635\u0644 \u0634\u0648\u06cc\u062f. \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062d\u0627\u0635\u0644 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0634\u0645\u0627 \u062a\u06a9\u062b\u06cc\u0631 \u0645\u0646\u0637\u0642\u06cc \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f \u0648 \u06cc\u06a9 \u0634\u06a9\u0627\u0641 \u062a\u06a9\u062b\u06cc\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f \u060c \u0632\u06cc\u0631\u0627 \u0627\u06cc\u0646 \u067e\u06cc\u0634 \u0646\u06cc\u0627\u0632\u0647\u0627\u06cc CDC \u0627\u0633\u062a.<\/li>\n<li>\n<strong>\u0645\u0642\u0635\u062f:<\/strong> \u0646\u0645\u0648\u0646\u0647 \u06a9\u0644\u06cc\u06a9 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u0642\u0635\u062f \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0642\u0627\u0644 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0622\u0645\u062f \u060c \u0645\u0642\u0635\u062f HTTP \u0631\u0627 \u0628\u0627 \u0641\u0634\u0631\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u0647\u0631\u0645 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\n<strong>\u062d\u0627\u0644\u062a \u0647\u0645\u06af\u0627\u0645 \u0633\u0627\u0632\u06cc:<\/strong> \u06cc\u06a9 \u062d\u0627\u0644\u062a \u0647\u0645\u06af\u0627\u0645 \u0633\u0627\u0632\u06cc \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u0628\u0627 \u0631\u062f\u06cc\u0627\u0628\u06cc \u062a\u063a\u06cc\u06cc\u0631 \u0627\u0632 \u0628\u0647 \u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0647\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0645\u06cc \u06a9\u0646\u062f. &#8220;\u0627\u0641\u0632\u0627\u06cc\u0634\u06cc + \u0636\u0645\u06cc\u0645\u0647&#8221; \u06cc\u0627 \u06cc\u06a9 \u062d\u0627\u0644\u062a \u0627\u062e\u062a\u0635\u0627\u0635\u06cc &#8220;CDC&#8221; (\u062f\u0631 \u0635\u0648\u0631\u062a \u0648\u062c\u0648\u062f \u0628\u0631\u0627\u06cc \u0627\u062a\u0635\u0627\u0644 Postgres) \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0645\u0646\u0627\u0633\u0628\u06cc \u0647\u0633\u062a\u0646\u062f.<\/li>\n<\/ul>\n<p>\u067e\u0633 \u0627\u0632 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0645\u0648\u0641\u0642\u06cc\u062a \u0622\u0645\u06cc\u0632 \u060c Airbyte \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0627\u0645 \u0631\u0627 \u062f\u0631 Clickhouse \u062f\u0631 \u062c\u062f\u0648\u0644 \u0647\u0627\u06cc\u06cc \u0628\u0647 \u0646\u0627\u0645 \u0686\u06cc\u0632\u06cc \u0645\u0627\u0646\u0646\u062f:<\/p>\n<ul>\n<li><code>_airbyte_raw_users<\/code><\/li>\n<li><code>_airbyte_raw_orders<\/code><\/li>\n<\/ul>\n<p>\u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u0648\u062c\u0648\u062f \u062f\u0631 \u0627\u06cc\u0646 \u062c\u062f\u0627\u0648\u0644 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0639\u0645\u0648\u0644 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062d\u0628\u0627\u0628 \u0647\u0627\u06cc \u062e\u0627\u0645 JSON \u0633\u0627\u062e\u062a\u0647 \u0645\u06cc \u0634\u0648\u0646\u062f \u06a9\u0647 \u0647\u0631 \u0631\u062f\u06cc\u0641 \u062d\u0627\u0648\u06cc \u0627\u0628\u0631\u062f\u0627\u062f\u0647 \u0648 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0648\u0627\u0642\u0639\u06cc \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight json\"><code><span class=\"p\">{<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"_ab_id\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"a unique identifier for the Airbyte record\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"_ab_emitted_at\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"timestamp of when Airbyte processed the record\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"data\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"id\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"...\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"user_id\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"...\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"...\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"...\"<\/span><span class=\"w\">\n  <\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_3_%D8%B3%D8%A7%D8%AE%D8%AA_%D9%88_%D8%B3%D8%A7%D8%B2_%D8%A8%DB%8C%D9%86%D8%B4_%D8%A8%D8%A7_DBT_%E2%80%93_%D8%AA%D8%AD%D9%88%D9%84_%D9%88_%D8%AA%D8%AC%D8%B2%DB%8C%D9%87_%D9%88_%D8%AA%D8%AD%D9%84%DB%8C%D9%84\"><\/span>\n<p>  <strong>\u0645\u0631\u062d\u0644\u0647 3: \u0633\u0627\u062e\u062a \u0648 \u0633\u0627\u0632 \u0628\u06cc\u0646\u0634 \u0628\u0627 DBT &#8211; \u062a\u062d\u0648\u0644 \u0648 \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06a9\u0646\u0648\u0646 \u0645\u0631\u062d\u0644\u0647 \u0645\u0647\u0645\u06cc \u062f\u0631 \u0634\u06a9\u0644 \u06af\u06cc\u0631\u06cc \u0627\u06cc\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0627\u0645 \u0628\u0647 \u06cc\u06a9 \u0646\u06cc\u0631\u0648\u06af\u0627\u0647 \u062a\u062d\u0644\u06cc\u0644\u06cc \u0627\u0633\u062a. \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 DBT \u0645\u06cc \u062f\u0631\u062e\u0634\u062f. \u0628\u0627 \u0627\u062a\u0635\u0627\u0644 DBT \u0628\u0647 \u0646\u0645\u0648\u0646\u0647 Clickhouse (\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0622\u062f\u0627\u067e\u062a\u0648\u0631\u0647\u0627 \u0645\u0627\u0646\u0646\u062f <code>dbt-clickhouse<\/code>) \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0645\u062f\u0644 \u0647\u0627\u06cc \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 SQL \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u060c \u062a\u0628\u062f\u06cc\u0644 \u0648 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u062f\u0631 \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u062e\u0648\u062f \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u06cc\u06a9 \u0646\u0645\u0648\u0646\u0647 DBT \u0646\u0645\u0648\u0646\u0647 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645 \u060c <code>orders_flat.sql<\/code>\u060c \u06a9\u0647 <code>orders<\/code> \u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u0627 \u067e\u06cc\u0648\u0633\u062a\u0646 \u0628\u0647 \u0622\u0646 \u0628\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0631\u0628\u0648\u0637\u0647 \u0627\u0632 <code>users<\/code> \u062c\u062f\u0648\u0644:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"k\">WITH<\/span> <span class=\"n\">raw_orders<\/span> <span class=\"k\">AS<\/span> <span class=\"p\">(<\/span>\n  <span class=\"k\">SELECT<\/span>\n    <span class=\"n\">JSONExtractString<\/span><span class=\"p\">(<\/span><span class=\"n\">_airbyte_data<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'id'<\/span><span class=\"p\">)<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">order_id<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">JSONExtractString<\/span><span class=\"p\">(<\/span><span class=\"n\">_airbyte_data<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'user_id'<\/span><span class=\"p\">)<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">user_id<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">toDecimal128OrZero<\/span><span class=\"p\">(<\/span><span class=\"n\">JSONExtractString<\/span><span class=\"p\">(<\/span><span class=\"n\">_airbyte_data<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'total_amount'<\/span><span class=\"p\">))<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">total_amount<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">parseDateTimeBestEffort<\/span><span class=\"p\">(<\/span><span class=\"n\">JSONExtractString<\/span><span class=\"p\">(<\/span><span class=\"n\">_airbyte_data<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'created_at'<\/span><span class=\"p\">))<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">created_at<\/span>\n  <span class=\"k\">FROM<\/span> <span class=\"n\">_airbyte_raw_orders<\/span>\n<span class=\"p\">),<\/span>\n\n<span class=\"n\">enriched_orders<\/span> <span class=\"k\">AS<\/span> <span class=\"p\">(<\/span>\n  <span class=\"k\">SELECT<\/span>\n    <span class=\"n\">o<\/span><span class=\"p\">.<\/span><span class=\"n\">order_id<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">o<\/span><span class=\"p\">.<\/span><span class=\"n\">user_id<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">u<\/span><span class=\"p\">.<\/span><span class=\"n\">name<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">user_name<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">u<\/span><span class=\"p\">.<\/span><span class=\"n\">email<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">user_email<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">o<\/span><span class=\"p\">.<\/span><span class=\"n\">total_amount<\/span><span class=\"p\">,<\/span>\n    <span class=\"n\">o<\/span><span class=\"p\">.<\/span><span class=\"n\">created_at<\/span>\n  <span class=\"k\">FROM<\/span> <span class=\"n\">raw_orders<\/span> <span class=\"n\">o<\/span>\n  <span class=\"k\">LEFT<\/span> <span class=\"k\">JOIN<\/span> <span class=\"p\">(<\/span>\n    <span class=\"k\">SELECT<\/span>\n      <span class=\"n\">JSONExtractString<\/span><span class=\"p\">(<\/span><span class=\"n\">_airbyte_data<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'id'<\/span><span class=\"p\">)<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">user_id<\/span><span class=\"p\">,<\/span>\n      <span class=\"n\">JSONExtractString<\/span><span class=\"p\">(<\/span><span class=\"n\">_airbyte_data<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'name'<\/span><span class=\"p\">)<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">name<\/span><span class=\"p\">,<\/span>\n      <span class=\"n\">JSONExtractString<\/span><span class=\"p\">(<\/span><span class=\"n\">_airbyte_data<\/span><span class=\"p\">,<\/span> <span class=\"s1\">'email'<\/span><span class=\"p\">)<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">email<\/span>\n    <span class=\"k\">FROM<\/span> <span class=\"n\">_airbyte_raw_users<\/span>\n  <span class=\"p\">)<\/span> <span class=\"n\">u<\/span> <span class=\"k\">ON<\/span> <span class=\"n\">o<\/span><span class=\"p\">.<\/span><span class=\"n\">user_id<\/span> <span class=\"o\">=<\/span> <span class=\"n\">u<\/span><span class=\"p\">.<\/span><span class=\"n\">user_id<\/span>\n<span class=\"p\">)<\/span>\n\n<span class=\"k\">SELECT<\/span> <span class=\"o\">*<\/span> <span class=\"k\">FROM<\/span> <span class=\"n\">enriched_orders<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u062f\u0644:<\/p>\n<ul>\n<li>\u0645\u0627 \u0627\u0628\u062a\u062f\u0627 \u0632\u0645\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637\u0647 \u0631\u0627 \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc Raw JSON \u06a9\u0647 \u062a\u0648\u0633\u0637 Airbyte \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062a\u0648\u0627\u0628\u0639 JSON Clickhouse \u0645\u0627\u0646\u0646\u062f \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>JSONExtractString<\/code>\u0628\u0634\u0631 \u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0631\u06cc\u062e\u062a\u0647 \u06af\u0631\u06cc \u0646\u0648\u0639 \u0627\u0635\u0644\u06cc \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u06cc\u0645.<\/li>\n<li>\u0633\u067e\u0633 \u060c \u0645\u0627 \u0628\u0647 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0634\u062f\u0647 \u0645\u06cc \u067e\u06cc\u0648\u0646\u062f\u06cc\u0645 <code>orders<\/code> \u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u0627 \u0632\u0645\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0645\u0631\u0628\u0648\u0637\u0647 \u0627\u0632 <code>users<\/code> \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 <code>user_id<\/code>\u0628\u0634\u0631 \u0627\u06cc\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc \u0628\u0631\u062f \u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u0631\u062a\u0628\u0637 \u0631\u0627 \u062f\u0631 \u06cc\u06a9 \u062c\u062f\u0648\u0644 \u0648\u0627\u062d\u062f \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u062f.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_4_%D8%A8%D9%87%DB%8C%D9%86%D9%87_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%B3%D8%B1%D8%B9%D8%AA_%D8%AF%D8%B1_Clickhouse_%E2%80%93_%D9%BE%D8%A7%D8%B1%D8%AA%DB%8C%D8%B4%D9%86_%D8%A8%D9%86%D8%AF%DB%8C_%D9%88_%D8%AA%D8%AD%D9%82%D9%82\"><\/span>\n<p>  <strong>\u0645\u0631\u062d\u0644\u0647 4: \u0628\u0647\u06cc\u0646\u0647 \u0633\u0627\u0632\u06cc \u0633\u0631\u0639\u062a \u062f\u0631 Clickhouse &#8211; \u067e\u0627\u0631\u062a\u06cc\u0634\u0646 \u0628\u0646\u062f\u06cc \u0648 \u062a\u062d\u0642\u0642<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0648\u0627\u0642\u0639\u0627\u064b \u0642\u062f\u0631\u062a \u062a\u062d\u0644\u06cc\u0644\u06cc Clickhouse \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u06cc\u062f \u060c \u0628\u0627\u06cc\u062f \u062c\u062f\u0627\u0648\u0644 \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f \u0628\u0647\u06cc\u0646\u0647 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0628\u0633\u0627\u0632\u06cc\u0645. \u067e\u0627\u0631\u062a\u06cc\u0634\u0646 \u0628\u0646\u062f\u06cc \u0648 \u0633\u0641\u0627\u0631\u0634 \u062a\u06a9\u0646\u06cc\u06a9 \u0647\u0627\u06cc \u06a9\u0644\u06cc\u062f\u06cc \u0627\u0633\u062a. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0645\u0627 \u0631\u0627 \u062a\u062d\u0642\u0642 \u0628\u062e\u0634\u06cc\u0645 <code>enriched_orders<\/code> \u0628\u0627 \u0627\u06cc\u0646 \u0628\u0647\u06cc\u0646\u0647 \u0633\u0627\u0632\u06cc \u0647\u0627 \u0628\u0647 \u06cc\u06a9 \u062c\u062f\u0648\u0644 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"k\">CREATE<\/span> <span class=\"k\">TABLE<\/span> <span class=\"n\">orders_flat<\/span>\n<span class=\"n\">ENGINE<\/span> <span class=\"o\">=<\/span> <span class=\"n\">MergeTree<\/span>\n<span class=\"k\">PARTITION<\/span> <span class=\"k\">BY<\/span> <span class=\"n\">toYYYYMM<\/span><span class=\"p\">(<\/span><span class=\"n\">created_at<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">ORDER<\/span> <span class=\"k\">BY<\/span> <span class=\"p\">(<\/span><span class=\"n\">user_id<\/span><span class=\"p\">,<\/span> <span class=\"n\">created_at<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">AS<\/span>\n<span class=\"k\">SELECT<\/span> <span class=\"o\">*<\/span> <span class=\"k\">FROM<\/span> <span class=\"n\">enriched_orders<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u06cc\u0646 \u0645\u0647\u0645 \u0627\u0633\u062a:<\/p>\n<ul>\n<li>\n<strong><code>ENGINE = MergeTree<\/code>:<\/strong> \u0627\u06cc\u0646 \u062e\u0627\u0646\u0648\u0627\u062f\u0647 \u0627\u06cc \u0627\u0632 \u0645\u0648\u062a\u0648\u0631\u0647\u0627\u06cc \u0645\u06cc\u0632 \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u062f\u0631 Clickhouse \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u0627\u06cc \u067e\u0631\u062f\u0627\u0632\u0634 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0627 \u06a9\u0627\u0631\u0627\u06cc\u06cc \u0628\u0627\u0644\u0627 \u0648 \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u0637\u0631\u0627\u062d\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a.<\/li>\n<li>\n<strong><code>PARTITION BY toYYYYMM(created_at)<\/code>:<\/strong> \u067e\u0627\u0631\u062a\u06cc\u0634\u0646 \u0628\u0646\u062f\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u0631 \u0627\u0633\u0627\u0633 \u0633\u0627\u0644 \u0648 \u0645\u0627\u0647 <code>created_at<\/code> \u0633\u062a\u0648\u0646 \u0628\u0647 Clickhouse \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062a\u0627 \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u06cc \u0631\u0628\u0637 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0624\u062b\u0631 \u062f\u0631 \u0637\u0648\u0644 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u0648\u062f \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0645\u062d\u062f\u0648\u062f\u0647 \u062a\u0627\u0631\u06cc\u062e \u0641\u06cc\u0644\u062a\u0631 \u0645\u06cc \u0634\u0648\u0646\u062f.<\/li>\n<li>\n<strong><code>ORDER BY (user_id, created_at)<\/code>:<\/strong> \u0645\u0634\u062e\u0635 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u06a9\u0644\u06cc\u062f \u0633\u0641\u0627\u0631\u0634 \u0628\u0647 Clickhouse \u0633\u0627\u0632\u0645\u0627\u0646\u062f\u0647\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627 \u062f\u0631 \u0647\u0631 \u067e\u0627\u0631\u062a\u06cc\u0634\u0646 \u06a9\u0645\u06a9 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0627\u0645\u06a9\u0627\u0646 \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u0633\u0631\u06cc\u0639\u062a\u0631 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062a\u0648\u0633\u0637 \u0627\u06cc\u0646 \u0633\u062a\u0648\u0646 \u0647\u0627 \u0641\u06cc\u0644\u062a\u0631 \u06cc\u0627 \u0645\u0631\u062a\u0628 \u0633\u0627\u0632\u06cc \u0645\u06cc \u0634\u0648\u0646\u062f \u060c \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<strong><code>AS SELECT * FROM enriched_orders<\/code>:<\/strong> \u0627\u06cc\u0646 \u062c\u062f\u0648\u0644 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0622\u0646 \u0631\u0627 \u0628\u0627 \u0646\u062a\u0627\u06cc\u062c \u062a\u062d\u0648\u0644 DBT \u0645\u0627 \u062c\u0645\u0639 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_5_%D8%A7%D8%B2_%D8%A8%DB%8C%D9%86_%D8%A8%D8%B1%D8%AF%D9%86_%D9%82%D8%AF%D8%B1%D8%AA_%D8%AA%D8%AD%D9%84%DB%8C%D9%84%DB%8C_%E2%80%93_%D9%BE%D8%B1%D8%B3_%D9%88_%D8%AC%D9%88_%D8%A7%D8%B2_%D8%AF%D8%A7%D8%AF%D9%87_%D9%87%D8%A7%DB%8C_denormalized_%D8%AE%D9%88%D8%AF\"><\/span>\n<p>  <strong>\u0645\u0631\u062d\u0644\u0647 5: \u0627\u0632 \u0628\u06cc\u0646 \u0628\u0631\u062f\u0646 \u0642\u062f\u0631\u062a \u062a\u062d\u0644\u06cc\u0644\u06cc &#8211; \u067e\u0631\u0633 \u0648 \u062c\u0648 \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc denormalized \u062e\u0648\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u063a\u06cc\u0631\u0645\u062c\u0627\u0632 \u0648 \u0628\u0647\u06cc\u0646\u0647 \u0633\u0627\u0632\u06cc \u0634\u062f\u0647 \u0645\u0627 \u06a9\u0647 \u0627\u06a9\u0646\u0648\u0646 \u062f\u0631 Clickhouse \u0633\u0627\u06a9\u0646 \u0647\u0633\u062a\u0646\u062f \u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0646\u0645\u0627\u06cc\u0634 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062a\u062d\u0644\u06cc\u0644\u06cc \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0645\u0646\u0648\u0639 \u062f\u0631 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0646\u0631\u0645\u0627\u0644 PostgreSQL \u0645\u0627 \u060c \u0628\u0647 \u0648\u06cc\u0698\u0647 \u062f\u0631 \u0645\u062c\u0645\u0648\u0639\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0628\u0632\u0631\u06af \u060c \u06a9\u0646\u062f \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<p>\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u060c \u0628\u0631\u0627\u06cc \u0634\u0645\u0627\u0631\u0634 \u0633\u0641\u0627\u0631\u0634\u0627\u062a \u0631\u0648\u0632\u0627\u0646\u0647 \u0648 \u0645\u062d\u0627\u0633\u0628\u0647 \u06a9\u0644 \u062f\u0631\u0622\u0645\u062f \u0637\u06cc 30 \u0631\u0648\u0632 \u06af\u0630\u0634\u062a\u0647:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight sql\"><code><span class=\"k\">SELECT<\/span>\n  <span class=\"n\">toDate<\/span><span class=\"p\">(<\/span><span class=\"n\">created_at<\/span><span class=\"p\">)<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">order_date<\/span><span class=\"p\">,<\/span>\n  <span class=\"k\">COUNT<\/span><span class=\"p\">(<\/span><span class=\"o\">*<\/span><span class=\"p\">)<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">order_count<\/span><span class=\"p\">,<\/span>\n  <span class=\"k\">SUM<\/span><span class=\"p\">(<\/span><span class=\"n\">total_amount<\/span><span class=\"p\">)<\/span> <span class=\"k\">AS<\/span> <span class=\"n\">total_revenue<\/span>\n<span class=\"k\">FROM<\/span> <span class=\"n\">orders_flat<\/span>\n<span class=\"k\">WHERE<\/span> <span class=\"n\">created_at<\/span> <span class=\"o\">&gt;=<\/span> <span class=\"n\">now<\/span><span class=\"p\">()<\/span> <span class=\"o\">-<\/span> <span class=\"n\">INTERVAL<\/span> <span class=\"s1\">'30 day'<\/span>\n<span class=\"k\">GROUP<\/span> <span class=\"k\">BY<\/span> <span class=\"n\">order_date<\/span>\n<span class=\"k\">ORDER<\/span> <span class=\"k\">BY<\/span> <span class=\"n\">order_date<\/span><span class=\"p\">;<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0631\u0627 \u0648\u0627\u0631\u062f \u06a9\u0646\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u067e\u0631\u0633 \u0648 \u062c\u0648 \u060c \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0648 \u0641\u0647\u0631\u0633\u062a \u0628\u0646\u062f\u06cc \u0633\u062a\u0648\u0646\u06cc Clickhouse \u060c \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0641\u0648\u0631\u0627\u064b \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0628\u06cc\u0646\u0634 \u0647\u0627\u06cc \u0627\u0631\u0632\u0634\u0645\u0646\u062f\u06cc \u0631\u0627 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D8%AA%D9%88%D9%85%D8%A7%D8%B3%DB%8C%D9%88%D9%86_%D8%AE%D8%B7_%D9%84%D9%88%D9%84%D9%87_%D8%AF%D8%A7%D8%AF%D9%87_%D8%AE%D9%88%D8%AF_%D8%B1%D8%A7_%D8%A8%D8%A7_CICD\"><\/span>\n<p>  <strong>\u0627\u062a\u0648\u0645\u0627\u0633\u06cc\u0648\u0646 \u062e\u0637 \u0644\u0648\u0644\u0647 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 CI\/CD<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u0627\u0632 \u062c\u0631\u06cc\u0627\u0646 \u062f\u0627\u062f\u0647 \u0635\u0627\u0641 \u0648 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u060c \u0628\u0647 \u0627\u062a\u0645\u0627\u0645 \u062a\u062d\u0648\u0644\u0627\u062a DBT \u062e\u0648\u062f \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f. \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u0647 \u0627\u06cc\u0646 \u0647\u062f\u0641 \u0628\u0631\u0633\u06cc\u062f:<\/p>\n<ul>\n<li>\n<strong>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u0628\u0631 DBT:<\/strong> \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0634\u062f\u0647 \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u0645\u0628\u062a\u0646\u06cc \u0628\u0631 \u0648\u0628 \u0628\u0631\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u06cc\u0632\u06cc \u0648 \u0646\u0638\u0627\u0631\u062a \u0628\u0631 \u067e\u0631\u0648\u0698\u0647 \u0647\u0627\u06cc DBT \u0634\u0645\u0627 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/li>\n<li>\n<strong>\u0627\u062c\u0631\u0627\u06cc \u062e\u0637\u0648\u0637 \u0644\u0648\u0644\u0647 CI\/CD:<\/strong> \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 DBT \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u062e\u0637\u0648\u0637 \u0644\u0648\u0644\u0647 \u0645\u062f\u0627\u0648\u0645\/\u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0645\u062f\u0627\u0648\u0645\/\u0627\u0633\u062a\u0642\u0631\u0627\u0631 \u0645\u062f\u0627\u0648\u0645 (CI\/CD) \u062e\u0648\u062f (\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u060c \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Gitlab CI \u060c Actions GitHub) \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0647\u0631 \u0632\u0645\u0627\u0646 \u06a9\u0647 \u06a9\u062f \u062c\u062f\u06cc\u062f \u0627\u062f\u063a\u0627\u0645 \u0634\u0648\u062f \u06cc\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u06cc\u0632\u06cc \u0634\u062f\u0647 \u060c \u062a\u062d\u0648\u0644\u0627\u062a \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u062a\u062d\u0631\u06cc\u06a9 \u06a9\u0646\u06cc\u062f.<\/li>\n<li>\n<strong>\u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u0648 \u062b\u0628\u062a \u0634\u0645\u0627\u06cc (\u0627\u062e\u062a\u06cc\u0627\u0631\u06cc):<\/strong> \u0628\u0631\u0627\u06cc \u0645\u062d\u06cc\u0637 \u0647\u0627\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u062a\u0631 \u060c \u0627\u062c\u0631\u0627\u06cc \u0642\u0631\u0627\u0631\u062f\u0627\u062f\u0647\u0627\u06cc \u062f\u0627\u062f\u0647 \u06cc\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0631\u062c\u06cc\u0633\u062a\u0631\u06cc \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u0628\u0631\u0627\u06cc \u0631\u062f\u06cc\u0627\u0628\u06cc \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0637\u0631\u062d\u0648\u0627\u0631\u0647 \u062f\u0631 \u0633\u06cc\u0633\u062a\u0645 \u0647\u0627\u06cc PostgreSQL \u0648 Clickhouse \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631 \u0628\u06af\u06cc\u0631\u06cc\u062f \u0648 \u0627\u0632 \u062a\u063a\u06cc\u06cc\u0631 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u06a9\u0646\u06cc\u062f.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"GOTCHAS_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%AD%D8%B1%DA%A9%D8%AA\"><\/span>\n<p>  <strong>GOTCHAS \u0628\u0631\u0627\u06cc \u062d\u0631\u06a9\u062a<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u0627\u0644\u06af\u0648\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f \u0627\u0633\u062a \u060c \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u0634\u06a9\u0644\u0627\u062a \u0645\u0634\u062a\u0631\u06a9 \u0648 \u0631\u0627\u0647 \u062d\u0644 \u0647\u0627\u06cc \u0622\u0646\u0647\u0627 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f:<\/p>\n<div class=\"table-wrapper-paragraph\">\n<table>\n<thead>\n<tr>\n<th>\u0635\u0627\u062f\u0631 \u06a9\u0631\u062f\u0646<\/th>\n<th>\u0631\u0627\u0647 \u062d\u0644<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Clickhouse Schema Drift<\/td>\n<td>\u0627\u0632 DBT \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u062c\u062f\u062f \u0627\u0632 \u0646\u0645\u0627\u0647\u0627\u06cc \u0648 \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0633\u062a\u0648\u0646 \u0647\u0627\u06cc \u067e\u0648\u06cc\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/td>\n<\/tr>\n<tr>\n<td>\u0639\u062f\u0645 \u062a\u0637\u0627\u0628\u0642 Timestamp<\/td>\n<td>\u0639\u0627\u062f\u06cc \u0633\u0627\u0632\u06cc \u0628\u0647 UTC \u062f\u0631 \u0627\u0648\u0627\u06cc\u0644 \u062e\u0637 \u0644\u0648\u0644\u0647 (\u062f\u0631 \u062d\u0627\u0644\u062a \u0627\u06cc\u062f\u0647 \u0622\u0644 \u062f\u0631 DBT)<\/td>\n<\/tr>\n<tr>\n<td>Null vs \u062e\u0627\u0644\u06cc \u0631\u0634\u062a\u0647 \u062f\u0631 JSON<\/td>\n<td>\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0631\u062f\u0646 <code>ifNullOrDefault()<\/code> \u06cc\u0627 <code>assumeNotNull()<\/code> \u0628\u0627 \u062f\u0642\u062a \u062f\u0631 \u067e\u0631\u0633 \u0648 \u062c\u0648\u0647\u0627\u06cc Clickhouse<\/td>\n<\/tr>\n<tr>\n<td>\u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0646\u0641\u062e \u062f\u0631 \u062c\u062f\u0627\u0648\u0644 \u062e\u0627\u0645 Airbyte<\/td>\n<td>\u062e\u0637 \u0645\u0634\u06cc \u0647\u0627\u06cc \u0627\u062d\u062a\u0628\u0627\u0633 \u0631\u0627 \u0627\u0639\u0645\u0627\u0644 \u06a9\u0646\u06cc\u062f \u06cc\u0627 \u0627\u0632 \u06a9\u0646\u0627\u0631 \u06af\u0630\u0627\u0634\u062a\u0646 \u062e\u0648\u062f\u06a9\u0627\u0631 \u062c\u062f\u0627\u0648\u0644 \u0645\u0631\u062d\u0644\u0647 \u0628\u0646\u062f\u06cc \u062e\u0627\u0645 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u062f<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D8%A7%D9%81%DA%A9%D8%A7%D8%B1_%D9%86%D9%87%D8%A7%DB%8C%DB%8C_%DB%8C%DA%A9_%D8%A7%D9%84%DA%AF%D9%88%DB%8C_%D9%82%D8%AF%D8%B1%D8%AA%D9%85%D9%86%D8%AF\"><\/span>\n<p>  \u0627\u0641\u06a9\u0627\u0631 \u0646\u0647\u0627\u06cc\u06cc: \u06cc\u06a9 \u0627\u0644\u06af\u0648\u06cc \u0642\u062f\u0631\u062a\u0645\u0646\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0627\u06cc\u0646 \u0645\u0639\u0645\u0627\u0631\u06cc \u060c \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0646\u0642\u0627\u0637 \u0642\u0648\u062a PostgreSQL \u0628\u0631\u0627\u06cc \u06cc\u06a9\u067e\u0627\u0631\u0686\u06af\u06cc \u0645\u0639\u0627\u0645\u0644\u0647 \u0648 \u06a9\u0644\u06cc\u06a9 \u0628\u0631\u0627\u06cc \u0633\u0631\u0639\u062a \u062a\u062d\u0644\u06cc\u0644\u06cc \u060c \u0627\u0631\u06a9\u0633\u062a\u0631 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 Airbyte \u0628\u0631\u0627\u06cc \u0645\u0635\u0631\u0641 \u06cc\u06a9\u067e\u0627\u0631\u0686\u0647 \u0648 DBT \u0628\u0631\u0627\u06cc \u062a\u062d\u0648\u0644 \u0632\u06cc\u0628\u0627 \u060c \u06cc\u06a9 \u0631\u0627\u0647 \u062d\u0644 \u0642\u0627\u0646\u0639 \u06a9\u0646\u0646\u062f\u0647 \u0628\u0631\u0627\u06cc \u062e\u0637\u0648\u0637 \u0644\u0648\u0644\u0647 \u062f\u0627\u062f\u0647 \u0645\u062f\u0631\u0646 \u0627\u0631\u0627\u0626\u0647 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>\u0627\u06cc\u0646 \u0628\u0647 \u0634\u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f:<\/p>\n<ul>\n<li>\n<strong>\u0627\u0632 \u0628\u0627\u0631\u0647\u0627\u06cc \u06a9\u0627\u0631\u06cc OLTP \u062e\u0648\u062f \u0645\u062d\u0627\u0641\u0638\u062a \u06a9\u0646\u06cc\u062f<\/strong> \u062f\u0631 postgreSQL \u0628\u062f\u0648\u0646 \u0628\u0647 \u062e\u0637\u0631 \u0627\u0646\u062f\u0627\u062e\u062a\u0646 \u0639\u0645\u0644\u06a9\u0631\u062f \u062a\u062d\u0644\u06cc\u0644\u06cc.<\/li>\n<li>\n<strong>\u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u062e\u0648\u0627\u0633\u062a\u0627\u0631<\/strong> \u0628\u0647 \u0645\u0648\u062a\u0648\u0631 \u0633\u062a\u0648\u0646\u06cc \u0631\u0639\u062f \u0648 \u0628\u0631\u0642 \u0633\u0631\u06cc\u0639 Clickhouse.<\/li>\n<li>\n<strong>\u062c\u062f\u0627\u06cc\u06cc \u0631\u0648\u0634\u0646 \u0627\u0632 \u0646\u06af\u0631\u0627\u0646\u06cc \u0647\u0627 \u0631\u0627 \u062d\u0641\u0638 \u06a9\u0646\u06cc\u062f<\/strong>\u060c \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u067e\u06cc\u0686\u06cc\u062f\u06af\u06cc \u0647\u0627\u06cc \u062a\u0644\u0627\u0634 \u0628\u0631\u0627\u06cc \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0646 \u0628\u0627\u0631 \u06a9\u0627\u0631\u06cc \u062a\u062d\u0644\u06cc\u0644\u06cc \u0628\u0631 \u0631\u0648\u06cc \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0645\u0639\u0627\u0645\u0644\u0647 \u0627\u06cc.<\/li>\n<li>\n<strong>\u0632\u06cc\u0631\u0633\u0627\u062e\u062a \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0631\u0627 \u0636\u062f \u0622\u06cc\u0646\u062f\u0647 \u06a9\u0646\u06cc\u062f<\/strong> \u0628\u0627 \u0627\u062a\u062e\u0627\u0630 \u0627\u0628\u0632\u0627\u0631\u0647\u0627\u06cc \u062c\u062f\u0627\u0634\u062f\u0647 \u0648 \u062a\u062e\u0635\u0635\u06cc.<\/li>\n<\/ul>\n<p>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 Airbyte \u0648 DBT \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062a\u062d\u062f\u06cc\u0646 \u060c \u200b\u200b\u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0634\u0645\u0627 \u0628\u0647 \u06cc\u06a9 \u062f\u0627\u0631\u0627\u06cc\u06cc \u0633\u06cc\u0627\u0644 \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u0634\u0648\u062f \u060c \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u062a\u0628\u062f\u06cc\u0644 \u0645\u06cc \u0634\u0648\u062f \u0648 \u0628\u0631\u0627\u06cc \u0647\u062f\u0627\u06cc\u062a \u0628\u06cc\u0646\u0634 \u0647\u0627\u06cc \u0645\u0639\u0646\u06cc \u062f\u0627\u0631 \u062a\u062c\u0632\u06cc\u0647 \u0648 \u062a\u062d\u0644\u06cc\u0644 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Next_Up_%D8%A8%D9%87_%D8%A7%D8%B4%D8%AA%D8%B1%D8%A7%DA%A9_%DA%AF%D8%B0%D8%A7%D8%B4%D8%AA%D9%86_%DA%AF%D9%86%D8%AC%DB%8C%D9%86%D9%87_%D9%87%D8%A7%DB%8C_%D8%AA%D8%AD%D9%84%DB%8C%D9%84%DB%8C_%D8%AE%D9%88%D8%AF\"><\/span>\n<p>  Next Up: \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0646 \u06af\u0646\u062c\u06cc\u0646\u0647 \u0647\u0627\u06cc \u062a\u062d\u0644\u06cc\u0644\u06cc \u062e\u0648\u062f<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u062f\u0631 \u0642\u0633\u0645\u062a 3 \u060c \u0645\u0627 \u0686\u06af\u0648\u0646\u06af\u06cc \u0627\u0641\u0634\u0627\u06cc \u0644\u0627\u06cc\u0647 OLAP Clickhouse \u062f\u0642\u06cc\u0642 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 API \u06cc\u0627 \u062f\u0627\u0634\u0628\u0648\u0631\u062f \u062a\u0639\u0628\u06cc\u0647 \u0634\u062f\u0647 \u0628\u0631\u0627\u06cc \u0645\u0634\u062a\u0631\u06cc\u0627\u0646 \u060c \u0628\u0631\u0631\u0633\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u060c \u0647\u0645\u0647 \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u06a9\u0646\u062a\u0631\u0644 \u0647\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0642\u0648\u06cc \u0648 \u0627\u0633\u062a\u0631\u0627\u062a\u0698\u06cc \u0647\u0627\u06cc \u0627\u0646\u062a\u0633\u0627\u0628 \u0647\u0632\u06cc\u0646\u0647 \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u0646\u062f. \u0628\u0627 \u0645\u0627 \u0647\u0645\u0631\u0627\u0647 \u0628\u0627\u0634\u06cc\u062f!<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u0627\u0632 \u0633\u0646\u06af\u0631\u0647\u0627\u06cc \u0645\u0639\u0627\u0645\u0644\u0647 \u0627\u06cc \u06af\u0631\u0641\u062a\u0647 \u062a\u0627 \u0635\u0639\u0648\u062f \u062a\u062d\u0644\u06cc\u0644\u06cc: postgresql \u0628\u0631\u0627\u06cc \u06a9\u0644\u06cc\u06a9 \u06a9\u0631\u062f\u0646 \u0628\u0627 Airbyte \u0648 DBT \u062f\u0631 \u0642\u0633\u0645\u062a 1 \u060c \u0645\u0627 \u0628\u0647 \u062f\u0644\u0627\u06cc\u0644 \u0627\u0633\u0627\u0633\u06cc \u06a9\u0647 \u0686\u0631\u0627 \u06a9\u0641\u0634 \u06a9\u0631\u062f\u0646 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 PostgreSQL \u0634\u0645\u0627 \u0645\u0633\u062a\u0642\u06cc\u0645\u0627\u064b \u062f\u0631 Clickhouse \u0627\u0633\u062a \u060c \u062f\u0633\u062a\u0648\u0631 \u0627\u0644\u0639\u0645\u0644 \u0644\u0627\u063a\u0631\u06cc \u062a\u062d\u0644\u06cc\u0644\u06cc \u0627\u0633\u062a. \u0645\u0627 \u0646\u0642\u0627\u0637 \u0642\u0648\u062a \u0645\u062a\u0636\u0627\u062f \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc OLTP \u0631\u062f\u06cc\u0641 \u06af\u0631\u0627 \u0645\u0627\u0646\u0646\u062f PostgreSQL \u0648 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":108419,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-108418","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/108418","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=108418"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/108418\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/108419"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=108418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=108418"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=108418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}