áĽáŠ á¨áá¨á ááľ á áá ááááá˝ áá á¨ááááŁá?
á¨áŚááá áŽáľ á ááááá áľ áá á áááľ áĽá´áľ áĽá áľááłá áá áŤá°áŠáŠá˘ DWH áĽáá° áŽáľ á¤á ááľá°áłá°áᥠáľáŞáľ áááŁáľáŁ áááááᣠá ááśááľáľ áá¨áŤ áĽá CIᢠááąááŞá˛áŁ á¤ááľá´áá˝áᣠáááľ ááá áĽá áá á á¨á°áĽá˘ á°áľáá á¨á°á áá á°ááľ áĽá á¨áĽááááľ áĽááł (á¨ááἠááľáá)á˘
áľá áĽááá
áá á á áá áááá áĽá áľá DBT á áľáá áłáł áĽá áľááłá áľá-áá
áłá ááľáĽ áľááá áá - á áľááľ áľá áĽááłá á°á
á ááĄá˘
á°áá ááá á°á
á áá´á áŽáá á°ááááˇáᢠᨠ5 áááłáľ á áá á¨áá¨á ááááὠᣠá˘á˛á¤á / á˘á¤ááľ á ááááŁáľ ᣠáĽáá˛áá á¨áá¨á áľáá°á áĽá ááľááááľ áĽá¨á áŤá ááᢠá áá áĽá¨á°áŤá ááá˘
á áá áááá
á¨á˛á˘á˛ áááá á ELT áá áťá¨ áá (Extract - Transform - Load) áľá áá°á Რááá˘
áĽáá° BigQueryᣠRedshiftᣠSnowflake áŤá áááłá áĽá ááአá¨áá˝á á¨áľááłá á¨ááἠááłáá˝ á˛áᥠá¨áłáł áá¨ááť áá áááŚá˝á ááľá¨á ááá áááł á ááá á¨ááá˘
á˛á˘á˛ áá¨áá á¨áááŽá˝ á ááááᣠááá áá á áľááľá áá° áá¨ááť (ááľáŁá ááá ááŤá áá¨ááť) á¨á°á°áá ááἠáá á áĽáŽ áááľáŤáľ áĽáŠ áĽáľáá˝á áá°áŁáá˘
á¨á˛á˘á˛ áá ááá áŽáąá ááá°áľ, áá° SQL áá ááá, á áá áŤáááŤá ááľáĽ á áľááááá á
á°á á°á¨á°á áľáááá˝á áá¨ááá áá.
DBT ááŽáááľ ááá á
ááŽáááą 2 ááááśá˝á áĽáť áááŤáá˝ áĽá áááá˝á áŤáá áá-
- áá´á (.sql) - á SELECT áá áá á¨á°ááḠá¨ááἠá ááľ
- á¨ááááŞáŤ ááá (.yml) - áááŞáŤáá˝, á ááĽáŽá˝, áá¨áŤáá˝, á°ááśá˝
á áá á¨áłá á°á¨á, áĽáŤá á áá¨á°áá ááááľ ááááŁá.
- á°á ááá á ááááá ááš IDE ááľáĽ á¨áá´á áŽáľ áŤáááá
- CLI á á áá áá á¨áá´ááš ááľáááŞáŤ á°áĽá áá áŤá, DBT á¨áá´áášá áŽáľ áá° SQL áŤá áá áŤá
- á¨á°á ááá¨á SQL áŽáľ á á°á áá°á á á°á á°á¨á°á (ááŤá) ááľáĽ áŁáá áá¨ááť ááľáĽ áá¨áááá
á¨CLI ááľááá áá áááľá áá˝áááĄ-
ááá ááá SELECT ááá˘
áá á¨ááἠáááŁáł ááŁáŞáŤ áááá ááłá áŁá ᪠ááᢠá áá á ááááᣠá˛á˘á˛ áĽáŤááá˝á á á áá áŤáááŤá ááľáĽ áĽáá áááľá¨á (á¨CREATEᣠINSERTᣠUPDATEᣠDelete AlTERᣠGRANTᣠ... áľáĽááá˝ áŤá ááŠááśá˝) áá á¨á°áŤáŤá áááá áŽáľ áŤá ááá˘
ááááá áá´á á¨áá¤áąá á¨ááἠáľáĽáľáĽ á¨áááá˝ áá á ᨠSELECT áĽáŤá áááá áŤááááłáá˘
á á°ááłáłá áá, á¨áľáŤááľáááá˝á á áááᎠáĽá á°á¨á ááá áá˝áá áĽá á¨ááá˝ áá´áá˝ áá¨áá áŤá áááŤá. á¨áľááá ááłáŤ (f_orders) á¨áááᣠáá´á ááłááĄ-
{% set payment_methods = ['credit_card', 'coupon', 'bank_transfer', 'gift_card'] %}
with orders as (
select * from {{ ref('stg_orders') }}
),
order_payments as (
select * from {{ ref('order_payments') }}
),
final as (
select
orders.order_id,
orders.customer_id,
orders.order_date,
orders.status,
{% for payment_method in payment_methods -%}
order_payments.{{payment_method}}_amount,
{% endfor -%}
order_payments.total_amount as amount
from orders
left join order_payments using (order_id)
)
select * from final
áĽáá áá á áľá°áłá˝ áááŽá˝á áá¨áľ áĽáá˝ááá?
ááááŞáŤ: áĽá á áá á¨ááá CTE (á¨á፠á°áá á¨áĽ ááááŤáá˝) - áĽá áááŚá˝á áĽá á¨áááľ á áááᎠá¨áŤááá áŽáľ ááá°áŤááľ áĽá ááá¨áłáľ
ááá°áᥠá¨áá´á áŽáľ ᨠSQL áĽá á¨ááá áľáĽáá
ááá˘
ááłáá áá áá ááá á á ááááŤá ááľáĽ áá°á áá°á ááĽáŤááłááą á¨ááá፠áá´ áá á ááááá¨áľ áľáĽáľáĽ. á°ááŁáŠá áĽá á áá áááá ááŁááť - á áŽáą ááľáĽ áá° ááá˝ áá´áá˝ á¨áááá¨áľ á˝ááł;
- á áá ááá áá ááŁááť á áá¨ááťá ááľáĽ áá° ááá á áá áá° á á¨á´á ááá áĽááł ááá¨áŤáá˘
- ááŁááť á¨áá´áá˝ áĽááááľ ááŤá áĽáá˛ááᥠááá áľáááłá
áá á
- á¨áá / áá ááááŤáá˝ - á¨á áááŤá ááááŤáá˝
- á loops - loops
- á°ááááŽá˝
- ááᎠ- áááŽáá˝á ááá á
ááłááľ: á áá á¨áĽ, áĽááł, á°á¨ááŞ
á¨ááłááľ áľááľ á áá¤áą á¨á°ááá á¨áá´á áá¨á áľáĽáľáĽ á áá¨ááťá ááľáĽ á¨áá¨áá˝á áľ á áŤááľ ááá˘
á áá á¨áłá á áááá˝ áá áááĄ-
- á áá á¨áĽ - á áá¨ááť ááľáĽ á áŤáá á á¨á´á
- áĽááł - áĽá᳠ᣠá áá¨ááť ááľáĽ áááŁá á°áá á¨áĽ
áĽáá˛áá á¨á áá ááľáĽáľáĽ ááłá á¨áááŁáľ áľááśá˝ á ááĄ-
- áá¨áá - á¨áá¨áá áááľ (áľáá á¨áĽáááł á°áá á¨áŚá˝); á á˛áľ ááľááŽá˝ á°á¨áá¨áá, á¨á°áá¨áŠáľ á°ááááá, á¨á°á°á¨á áá¸áłá
- Ephemeral - áá´á á ááĽáł á áá áŤá, ááá áá á ááá˝ áá´áá˝ áĽáá° CTE ááłá°áá
- áĽáŤáľá áá¨á á¨áá˝ááľ áá ááááá áľááśá˝
á¨ááłááľ áľááśá˝ á á°á¨á᪠áá°áá°á Vaults á¨áááťá¸áľ áĽáľáá˝ á á áááłááĄ-
- á¨á á¨áśáááŤá á áá á¨áŚá˝áŁ á¨áá á°áľ áŁá áŞáŁ á¨á°áá á¨áĽ áľáĽáľáĽáŁ á¨áááἠáľáááá˝á áá áłáľáŁ á áľá°ááá áĽááłáá˝
- áá á áłáá˛áľáľáŞáŁ á°ááľá ááá (á¨á°á áááᣠáá˘)ᣠááááś áá°áŞáŤ áĽááłáá˝
- BigQueryጠá¨á°áá á¨áĽ áááá áĽá áľáĽáľáĽáŁ á¨áá á°áľ áŁá áŞáŁ ᨠKMS ááľá áŤáŁ áááŤáá˝ áĽá áááŤáá˝
- á˝ááááŞáľá¨ááá á áá¸áľ (áááŹáľáŁ á˛á¤áľáŞáŁ áá°áᣠáŚáá˛áŁ á´ááł)ᣠááááá_á ᣠá áááľá°á_á ᣠáŁáá˛áŁ á¨áá¨áá_áľááľ
á¨áá¨á°ááľ áá¨ááťáá˝ á á áá áá áá°ááááĄ
- áľá ᨠáá¨á
- áá á áłá
- BigQuery
- á¨á á¨áś
- ááŹáľáś (á á¨áá)
- áĽáááł (á¨áá)
- á¨ááááŽáśááľ SQL á áááá (á¨áá á á¨á°áĽ á áľáá)
áá´áá˝áá áĽááťá˝ááĄ-
- ááááąá á¨ááŻá (áĽá¨á¨áá¨) áĽááľááá
- á Redshift ááááá áĽá á°ááľá áááá˝á áŤáá
-- ĐОнŃигŃŃĐ°ŃĐ¸Ń ĐźĐžĐ´ĐľĐťĐ¸:
-- ĐнкŃоПонŃĐ°ĐťŃнОо напОНнонио, ŃникаНŃĐ˝ŃĐš кНŃŃ Đ´ĐťŃ ĐžĐąĐ˝ĐžĐ˛ĐťĐľĐ˝Đ¸Ń ĐˇĐ°ĐżĐ¸ŃоК (unique_key)
-- ĐĐťŃŃ ŃогПонŃĐ°Ńии (dist), кНŃŃ ŃĐžŃŃиŃОвки (sort)
{{
config(
materialized='incremental',
unique_key='order_id',
dist="customer_id",
sort="order_date"
)
}}
{% set payment_methods = ['credit_card', 'coupon', 'bank_transfer', 'gift_card'] %}
with orders as (
select * from {{ ref('stg_orders') }}
where 1=1
{% if is_incremental() -%}
-- ĐŃĐžŃ ŃиНŃŃŃ ĐąŃĐ´ĐľŃ ĐżŃиПонон ŃОНŃкО Đ´ĐťŃ Đ¸Đ˝ĐşŃоПонŃĐ°ĐťŃнОгО СапŃŃка
and order_date >= (select max(order_date) from {{ this }})
{%- endif %}
),
order_payments as (
select * from {{ ref('order_payments') }}
),
final as (
select
orders.order_id,
orders.customer_id,
orders.order_date,
orders.status,
{% for payment_method in payment_methods -%}
order_payments.{{payment_method}}_amount,
{% endfor -%}
order_payments.total_amount as amount
from orders
left join order_payments using (order_id)
)
select * from final
á¨áá´á áĽáá ááŤá
á¨áĽááááľ áá ááᢠáĽáą á°áá DAG (ááĽá°á á á˛ááá ááŤá - áłááŹááľ á á˛ááá ááŤá) ááá˘
DBT á ááá á¨ááŽáááľ áá´áá˝ áá á áá á áááľá¨áľ ááŤá ááááŁááŁáááááľ ááŁááť() áá´áá˝á á¨ááá˝ áá´áá˝ áá áŤááááᢠááŤá ááአá¨áá¨á°ááľá áááŽá˝ áĽáá˛áŤá°áá áŤáľá˝áááłá:
- á áľáááá á á°á á°á¨á°á ááľáĽ áá´áá˝á ááľáŹáľ
- á¨ááłáŤ ááľá¨áł áľááŠ
- á¨áááá° áááľ ááŤá á áááľ áá
á¨ááŤá áĽááł ááłááĄ-
áĽáŤááłááą á¨ááŤá ááľááá ááááľ áá´á áá, á¨ááŤá á ááá˝ á ááŁááťá á°á°áĽá°áá.
á¨ááἠáĽáŤáľ áĽá á°ááľ
áá´ááš áĽáŤáłá¸á á¨ááá አá á°á¨á᪠á˛á˘á˛ áľá áá¤áą á¨ááἠáľáĽáľáĽ áĽá áááśá˝á (ááľá¨ááá˝á) áááá°á˝ ááá áľáááłá-
- áá á áá°ááá˘
- á¨á°áá¨
- á¨ááŁááť áłááááľ - á¨ááŁááť áłááááľ (áááłá á¨á°áá á_ááłáá á áľááá á áá á¨áĽ ááľáĽ á¨á°áá áá˝ á áá á¨áĽ ááľáĽ áŤáá ááłáá፠áá ááááłá)
- áľáááá á¨áá áĽá´áśá˝ ááááá ááááľ
á¨áĽáŤáľáá áá¨áŤáá˝ (áĽá á¨ááἠáá¨áŤáá˝) áá¨á ááťáá, áááłá, % á¨áᢠááŠááľ á¨á ááľ áá, á¨áłáááľ, á¨á ááľ áá á ááľ á áááŤážá˝. áĽáá° SQL áá áá á¨á°ááá ááááá áááľ áá°á ááá áá˝ááá˘
á áá ááááľ áŤáá°ááá ááŠááśá˝ áĽá á ááἠááľáĽ áŤá áľá á°áśá˝ á áááá á¨áąá ááľ áááľ ááŤá áá˝ááá˘
á¨á°ááľ á áááᣠá˛á˘á˛ ááłáłáł áĽá á áľá°áŤá¨áśá˝á á á ááłáŤá áĽá á áŁá ᪠á°á¨ááá˝ ááá¨ááᣠááá°á áĽá ááá°áŤá¨áľ áľááśá˝á áŤáááŁáá˘
á áááá ááá á°á¨á áá áá¨áŤáá˝á áĽá á°ááśá˝á áá¨á áĽáá°áá áááľááá˘
- name: fct_orders
description: This table has basic information about orders, as well as some derived facts based on payments
columns:
- name: order_id
tests:
- unique # ĐżŃОвоŃка на ŃникаНŃнОŃŃŃ ĐˇĐ˝Đ°ŃониК
- not_null # ĐżŃОвоŃка на наНиŃио null
description: This is a unique identifier for an order
- name: customer_id
description: Foreign key to the customers table
tests:
- not_null
- relationships: # ĐżŃОвоŃка ŃŃŃНОŃнОК ŃоНОŃŃнОŃŃи
to: ref('dim_customers')
field: customer_id
- name: order_date
description: Date (UTC) that the order was placed
- name: status
description: '{{ doc("orders_status") }}'
tests:
- accepted_values: # ĐżŃОвоŃка на дОпŃŃŃиПŃĐľ СнаŃониŃ
values: ['placed', 'shipped', 'completed', 'return_pending', 'returned']
áĽá áá á°ááľ á ááá¨á áľá ᨠáá˝ áá áĽáá´áľ áĽáá°áááľá áĽáááĄ-
áááŽáá˝ áĽá áááá˝
á¨á˛á˘á˛ á áá á¨SQL áľááŞááśá˝ áľáĽáľáĽ áááá áĽá á áá°áá ááá áá áá°á áááá˝ áááá áĽá áŁá ᪠á¨á ááá áá´á ááá á¨áĽ á¨áŤáłá¸áá ááἠáááááŁáľ áĽá áĽááá á áááá˝ ááá°áŤá¨áľ ááá˘
áááŽáá˝ á á ááłáŤáá˝ ááľáĽ á°ááŁáŤáľ á°áĽáá áá አá¨áá˝á á¨áááŁáł áĽá ááááŤáá˝ áľáĽáľáŚá˝ áá¸áᢠáááŽáá˝ á DRY (áŤáľá á á áľáľáá) á¨áá ááľáľá ááá áá°á¨áľ á áá´áá˝ áĽá ááŽáááśá˝ ááŤá¨á SQL á áĽáá°áá áĽááľáľá áá áŤáľá˝áááá˘
á¨ááᎠááłááĄ-
{% macro rename_category(column_name) %}
case
when {{ column_name }} ilike '%osx%' then 'osx'
when {{ column_name }} ilike '%android%' then 'android'
when {{ column_name }} ilike '%ios%' then 'ios'
else 'other'
end as renamed_product
{% endmacro %}
áĽá á á ááááĄ-
{% set column_name = 'product' %}
select
product,
{{ rename_category(column_name) }} -- вŃСОв ПакŃĐžŃĐ°
from my_table
DBT á°á áááá˝ áá á áááá˝á áĽá áááŽáá˝á áĽáá˛áŤáľá áĽá áĽáá°áá áĽáá˛á áá á¨ááá áľ áĽá á á áľá°áłáłáŞ áá á áĽáŽ áááŁáá˘
áá áááľ áĽáá°áĄ- áŤá á¤á°-ááťáááľá á¨ááá¨áľ áĽá á¨áá áá á˝ááł áááľ ááá˘
dbt_utils á¨áá/á°ááľáŁ á°á°áŞ áááá˝áŁ á¨áááááĽá áá°ááá˝áŁ ááśáś/ááŁá áĽá ááá˝ áá ááľáŤáľ- áááłá°ááľ á áááááśá˝ ááá á¨áá á¨ááłáŤ á áĽááśá˝
á¨á á¨áś á ááŁáśá˝ иá°áá á - á¤á°-ááťáááľ áá°áá°á á¨ááἠáá¨ááťáá˝áŁ áááłá
áá á áłá á¨áááἠááľáłááť - á¨á˛á˘á˛ áľáŤá áááááἠááá
á¨á°áá á¨áĽá
áá˝ áááá á áá ááááá˘
áĽáá˛áŤáá á°á¨á᪠áŁá áŞáŤáľ
áĽáá
áĽá áĽá áĄáľá á¨ááἠáá¨ááťá áááááŁáľ á¨ááá áááŁá¸áá áĽááľ ááá˝ á áľá°áłá˝ áŁá
áŞáŤáľá áĽá á á°ááŁá áá áĽáááťááá˘
á¨ááľáá¸á፠á áŤáŁá˘áá˝á ááá¨áľ DEV - TEST - PROD
á á°ááłáłáŠ á¨DWH áááľá°á ááľáĽá á˘áá (á á°ááŤáŠ áĽá áśá˝)ᢠáááłá á áá¨á°áá á áááá˝áĄ-
with source as (
select * from {{ source('salesforce', 'users') }}
where 1=1
{%- if target.name in ['dev', 'test', 'ci'] -%}
where timestamp >= dateadd(day, -3, current_date)
{%- endif -%}
)
áá áŽáľ á áĽáŹá áĽáá˛á ááááĄ- áá áŤáŁá˘ á´áᣠáá°áᣠᲠáááĄá ááááľ 3 áááľ áĽáť ááá°áą áĽá á¨á፠á ááᢠáŤá á áĽááá á áŤáŁá˘áá˝ ááľáĽ ááŽáĽ á áŁá ááŁá áĽá áĽááľ ááĽáśá˝á áááááᢠá á áŤáŁá˘á áá á˛áŽáĄ áááľ á¨ááŁáŞáŤá áááł á˝á ááŁáá.
ááłááľ á¨á ááŤá á ááľ á˘ááŽá˛áá áá
Redshift ááĽáŤááłááą á ááľ á¨ááἠáááá፠áľáá° áááŽá˝á ááááááľ á¨ááŤáľá˝á áááľ DBMS ááᢠá¨ááἠáľáá° áááŽá˝ áá፠á 20-50% á¨á°áŤááá á¨á˛áľá áŚáł ááááľ áá˝áá.
áááŽ
á¨ááᎠááááĄ-
{{ compress_table(schema, table,
drop_backup=False,
comprows=none|Integer,
sort_style=none|compound|interleaved,
sort_keys=none|List<String>,
dist_style=none|all|even,
dist_key=none|String) }}
á¨áá´á á ááľ áááἠááľáłááť
ááĽáŤááłááą á¨á ááłáŤá á áááá ᣠá¨áááአá ááľ ááá áá´á á¨á°áá ᨠá áá áá˛áŤáá á¨áá¨ááá ááá ááá˝á (ááá ááá˝á) ááľáá áá˝áá-
pre-hook: "{{ logging.log_model_start_event() }}"
post-hook: "{{ logging.log_model_end_event() }}"
á¨ááááá˘áŤ ááá áááá á áľááá ááłáłáł á á°áᨠá áá á¨áĽ ááľáĽ áĽáá˛á˝á ááá áľáááłá, á áá áá á¨áľ á áá áá á¨á˝áá á áŤáŁá˘áá˝á (á áááśá˝á) ááááá áĽá áá°áá°á áá˝áá.
áłá˝áŚááą á Loker ááľáĽ áŁáá á¨ááá˘áŤ ááἠáá áĽáá´áľ áĽáá°áááľá áĽáááĄ-
á¨áá¨ááť á ááśáá˛á
áĽáá° UDF (á á°á áá á¨á°áááš á°ááŁáŤáľ) áŤá áĽá á áá á¨áááá á¨áá¨ááť á°ááŁá á ááłááľ á áĽáŤáá˝á á¨á°á ááᣠá¨áĽááá á á°ááŁáŤáľ á áᣠá¨ááłá¨áť ááĽáĽá áĽá á áŤáľ-á°á á á˛áľ á¨á°ááá áááśá˝á á DBT ááľáĽ ááá¨ááá á áŁá ááš ááá˘
áĽá áá˝ áĽá´áśá˝á áááľááľ Python UDF áĽáá áááá ᣠá¨áááĽááľ á áľáŤáť ááŤáá˝á ᣠá¨á˘áľááľá á˛áŽá˛ááá˘
á ááááá á¨áŠáŤ áá á áŤáŁá˘ (devᣠtestᣠprod) áá UDF á¨áááĽá á¨ááᎠááłááĄ-
{% macro create_udf() -%}
{% set sql %}
CREATE OR REPLACE FUNCTION {{ target.schema }}.f_sha256(mes "varchar")
RETURNS varchar
LANGUAGE plpythonu
STABLE
AS $$
import hashlib
return hashlib.sha256(mes).hexdigest()
$$
;
{% endset %}
{% set table = run_query(sql) %}
{%- endmacro %}
á áá á PostgreSQL áá á¨á°áá°á¨á°áá Amazon Redshift áĽáá áááá. á Redshift á áá°á áááľ á á á¨á´ááá˝ áá áľáłá˛áľá˛ááľá áá°áĽá°áĽ áĽá á¨á˛áľá áŚáłá ááť ááľá¨á á áľááá áá - ᨠANALYZE áĽá VACUUM áľáááá˝ á á á°á á°á¨á°áá˘
áá áá áááľá¨á á¨redshift_maintenance ááᎠá¨ááᥠáľáááá˝ á á¨áá˝áą ááá¸áááĄ-
{% macro redshift_maintenance() %}
{% set vacuumable_tables=run_query(vacuumable_tables_sql) %}
{% for row in vacuumable_tables %}
{% set message_prefix=loop.index ~ " of " ~ loop.length %}
{%- set relation_to_vacuum = adapter.get_relation(
database=row['table_database'],
schema=row['table_schema'],
identifier=row['table_name']
) -%}
{% do run_query("commit") %}
{% if relation_to_vacuum %}
{% set start=modules.datetime.datetime.now() %}
{{ dbt_utils.log_info(message_prefix ~ " Vacuuming " ~ relation_to_vacuum) }}
{% do run_query("VACUUM " ~ relation_to_vacuum ~ " BOOST") %}
{{ dbt_utils.log_info(message_prefix ~ " Analyzing " ~ relation_to_vacuum) }}
{% do run_query("ANALYZE " ~ relation_to_vacuum) %}
{% set end=modules.datetime.datetime.now() %}
{% set total_seconds = (end - start).total_seconds() | round(2) %}
{{ dbt_utils.log_info(message_prefix ~ " Finished " ~ relation_to_vacuum ~ " in " ~ total_seconds ~ "s") }}
{% else %}
{{ dbt_utils.log_info(message_prefix ~ ' Skipping relation "' ~ row.values() | join ('"."') ~ '" as it does not exist') }}
{% endif %}
{% endfor %}
{% endmacro %}
DBT á°áá
DBT áĽáá° á áááááľ (á¨áá°áłá°á á áááááľ) áá áá ááťááᢠá°áŤáľáˇááĄ
- á¨áľá á áá˛á˘ áááŽáááľ áĽá áá´á áááľ
- á¨áĽáŤ áá á áĽá á¨áá á°ááł á ááááĽ
- á¨áááἠááľáłááťáá˝ ááá áĽá ááš ááłá¨áť
- áľá ᨠáá˝ á¨ááŽáááľá á°ááľ áá
- CI (á¨áá á áá á°áľ) á áááááľ áá
áá°áá°ááŤ
DWHá áááááľ áĽá ááĽááľ ááľááł áá ἠáá áŁáľ á áľá°áłá˝ áĽá á¤áá ááááᢠDBT áááᣠáĽá ááŤáááŤáá˝ (áááá˝)ᣠáá áá¨áŞáŤáŁ áá°á (á áľááá) áĽá á¨áĽá á á áľá°áłáłáŞá áŤáŤáľáłáᢠáĽááá á ááĽá¨ áááŽá˝ á ááľ áá á ááŁáá ááĽááľá á¨ááἠáá¨ááť á¨á°áá á¨áľáŤ á áŤáŁá˘ áŤáááᢠáᏠá DWH ááľáĽ áááŚá˝á ááááŁá á á¨á°áťá ááááľ á¨ááá˘
á á˛á˘á˛ ááá˘áá˝ á¨áá¨á°áá¸á áĽáááśá˝ áĽáá°áá¨á°áá á°ááá ááá˘
- áŽáľáŁ GUI áłáááᣠááľáĽáľáĽ á¨áľááłá áááá ááááá˝ ááᥠá¨áá ááá˘
- á¨áá¨á áá á áĽáŽ ááľáŤáľ á¨áśááľáá áá ááľáľá (áśááľáá á˘ááááŞáá) ááἠá°áááŽáá˝á ááľá°áŤá¨á á áá áľá˘
- ááłá á¨áá¨á áá á¨á° áááľ áĽáá° áááľ ááá áśááľáá á á°á ááá áá á á¨á°áĽ ááĽáĽá áľá ááá á áá áľá˘
- á¨áľááłá ááłáŞáŤáá˝ áĽáť áłááá áŽáąá á¨áááľ ááá áá á á¨á°áĄ ááĽá¨áľ áĽá¨áá áááłá
áĽááá áá áĽáááśá˝ áᏠᨠ850 á áá áŠáŁááŤáá˝ áĽá á áá á¨ááááá áááľ ááĽá¨áá, áĽá ááá°ááą áááá አáĽá á áľá°áłá˝ á áĽáŤáá˝ áá°á¨áľ áááá.
ááááľ ááá¸á á°áá˝áŁ á¨áĽááľ ááŤáľ á ááľ á OTUS ááľáĽ á¨á°á¨áá° áľáá
ááľ á áŤá á áľáá á¨á°áŤááľ á¨á°á¨áá° áľáá
ááľ á¨áŞá˛áŽ áá¨áť á áá˘
á¨á˛á˘á˛ áĽá á¨áłáł áá¨ááťáá˝ á á°á¨ááŞáŁ á OTUS ááľá¨á áá áĽáá° á¨ááἠáááá˛áľ áŽááľ á áŤáᣠáĽá áĽá áŁáá°á¨áŚáź á ááá˝ á°ááá áĽá áááá áááśá˝ áá áľáá ááśá˝á áĽáááŤááá˘
- ááľáá áłáł á áááŹá˝áá˝ á ááá´áá¸á á áá°-ááłáŚá˝
- á áľááá áĽá á áľááá áĽá¨áľ áááááą
- á¨áá¨á áááŽá˝á áááŤá á¨áááŞáŤ ááááśá˝ áĽá ááłáŞáŤáá˝
- á DWH ááľáĽ á¨áľááłá á¨áá°áĽá ááľ ááááŁáľ
- NoSQL á˝áá°-ááłáŚá˝áĄ HBaseᣠCassandraᣠElasticSearch
- á¨ááľáľá áĽá áŚááŹáľáľáŤ á á°á¨áááľ ááááá˝
- á¨áá¨á¨áť ááŽáááľáĄ áááá á˝ááłáá˝ á á ááŤáŞ áľáá áľá áá°áŁá°áĽ
ááŁááťáá˝
DBT á°ááľ - áŚáá´áá á°ááśá˝á˛á˘á˛ á áľááá áááľá áá? - á¨á˛á˘á˛ á°áŤá˛áá˝ á á ááą á¨áá¨á áá á˝áá áááááá¨ááἠáááŁáł ááŁáŞáŤ áá ááá Redshift áá¨ááť â YouTube, OTUS á¨áááľ áľáá ááľ áá¨áťá¨ááŞáááá ááá˘áŤ - á áŁá á áἠá¨ááá áááľ áľáá ááľ áá 15ᣠ2020 ááá˘á¨ááἠáá ááľáľá áŽááľ - áŚá˛á¤áľá¨á á°á áľááłá á¨áľáŤ áá°áľ ááááŁáľ - á¨áá°ááąá á¨ááἠáĽá á¨áľááłá áĽááłá¨áááľ ááá áľáá°á ááá á áá ááᢠ- á¨áľááłá áááá° ááἠáĽá á¨áááľ ááá á°á˝áĽáááŁáááľ áŤáá áá á°áľ áĽá á ááśááľáľ á¨áááŁáł áá¨áŤ á dbtCloud - DBT á áá áá CI á¨ááááŁáľ ááááá˝á DBT á áἠáľáá á áááá - á°ááááąáŁ áŤáľá áááĽááľ á¨á°á¨á á á°á¨á áááŞáŤáá˝jaffle áąá - Github DBT á áἠ- Github, á¨áááŞáŤ ááŽáááľ áŽáľ
ááá: hab.com