
こんにちは、Habr!私の名前はArtemyKozyrです。
近年、私はデータと現在のビッグデータと呼ばれるものに関して非常に幅広い経験を積み重ねてきました。
少し前までは、インターネットマーケティングとエンドツーエンド分析の分野への関心も、ゼロからではなく、急上昇しました。現在の代理店の友人から、実際のクライアントのデータとケースが提供されました。スキップしました離れて行きます。
それは非常に興味深いことがわかりました:Azure SQL + dbt + Github Actions + Metabase。
タスクを正しく行うための成功の半分
だから、賞賛せずに、ポイントにまっすぐに試してみましょう。クライアントの肖像(これは私たちがサービスを行っているものです):オンラインストア/小売ネットワーク/モバイルアプリケーション/教育プラットフォームの所有者。それは以下の目標を追求します:
- 製品の位置付けと宣伝。ビジネスの成長
- プロモーションチャネルの最適化:最良の結果が得られる領域に焦点を当てる
- 投資された各ルーブルの費用と収益指標の管理
- ユーザーのセグメンテーションとユーザーとのコミュニケーションの構築
平均して、彼は4つのサービスグループを使用しています。
- CRM(AmoCRM、Bitrix24)-リード、ファネル、セールス。トランザクションのライフサイクルと実際の属性
- (Yandex.Metrika, Google Analytics) — , , ,
- (Facebook, Google Adwords, Yandex.Direct) — , -, ,
- Call-tracking/Event tracking — , -
, : , , CRM, . . :
, , . :
- ()
- ( !)
- ( )
- ( )
()
- . : : ? ( 3:13).
myBI Connect. - , -. , :
1.
( ), , ETL-.
, Facebook (Campaigns), (Adsets) (Ads), , , , , ..
2. //
.? .Clickhouse . , , , ( ).
https://api-metrika.yandex.net/stat/v1/data.csv ?ids=55254416 &dimensions=ym:s:date, ym:s:UTMSource, ym:s:UTMMedium, ym:s:UTMCampaign &metrics=ym:s:visits, ym:s:ecommercePurchases, ym:s:ecommerceRevenue &date1=2020-12-01 &date2=2020-12-31 &group=day &lang=en &accuracy=full &sort=ym:s:date &limit=100000 &pretty=true
JSON-, ( cron), (requests), .. .
myBI Connect .
3. Webhook ,
- CRM? ?
- ! Webhook .
. inhouse-CRM, XML:
# get data from XML endpoint with curl utility
curl "https://www.internal-crm.ru/order-list.xml?date-from=01-12-2020&date-to=31-12-2020" -o export.xml
# convert XML to JSON with xq utility
xq . export.xml > export.json
# parse JSON doc with jq utility
jq '[."order-list".date[] | .order[]]' export.json > parsed.json
# post to myBI Connect Webhook endpoint with curl utility
curl --header "Content-Type: application/json" \
--request POST \
--data @parsed.json \
https://app.mybi.ru/webhook/23576/xhsfcxmlyh/
XML, JSON, , myBI Connect Webhook. shell-, .
4.
, . .
(Data Modeling), . , , () - .
DWH :
- (1) — , , CRM
- (2) — (, );
- (3) — -, ;
dbt. git-, .sql ( ) .yaml (). dbt : Data Build Tool .
- : BigQuery, Redshift, Snowflake, Postgres, Spark, Presto. Azure SQL Database (managed SQL Server). , ; , -, ( ).
DWH :
1. (Sources)
- , myBI Connect. .
2. (Staging)
( views), . :
- , UTM-
- : , ..
- ( )
3. (Auxiliary)
Aux . () :
- — , , ( )
- : , ..
4. (Marts)
— , . , - . . :
- , ,
- -: ,
- : full join,
— ?
— , .
— . , API, , Github Action, .
. . , ().
, , . , . Slack.
— . , . .
:
- ,
- , , -
- (x-ray)
Open Source BI Metabase (!). Amazon Elastic Beanstalk, :
- Docker-
- Postgres (AWS RDS)
- (Load Balancing) -Healthcheck
- Metabase
BI Metabase AWS Elastic Beanstalk
? ! , , . , .
1.
, . , ...
. - — . .
(1) : , , { }, UTM- ( !), , . , , . , .
(2) -. - - php-, .
(3) , . , Google Adwords aud-, kwd-, pla-.
(4) , . !
, .
2. CRM
CRM, , . , , - . , , .
— , CRM-, ?
— : .
? , .
3. ( )
, , . . : . - :
from costs c full join conversions cv on c.[] = cv.[] and c.[ ] = cv.[ ] and c.[ ] = cv.[ ] and c.[ ] = cv.[ ]
NULL? ( NULL = NULL).
: , -:
--
{%- set key_field_list = [
'[]',
'[ ]',
'[ ]',
'[ ]'
]
-%}
-- -
select
{{ concat_key(key_field_list) }} as concat_key
, {{ surrogate_key(key_field_list) }} as hash_key
...
-- :
from costs c
full join conversions cv on c.hash_key = cv.hash_key
. .
4.
, full join. , , , : CRM, , ..
-, , ( ). -, .
-, - , . -:
- meta_is_row_match (true/false) — ?
- meta_row_origin — (././AmoCRM)?
, CRM - ? . , , . :
select
...
, sum(1) as []
, sum(CASE WHEN [] LIKE '%%' THEN 1 ELSE 0 END) as [ - ]
, sum(CASE WHEN [ ] LIKE '%%' THEN 1 ELSE 0 END) as [ - ]
, sum(CASE WHEN [ ] LIKE '%%' THEN [] ELSE 0 END) as [ - ]
...
5.
. . , API .. , ym:s:<AttributionModel>UTMSource:
ym:s:lastsignUTMSource --
ym:s:firstUTMSource --
ym:s:lastUTMSource --
ym:s:last_yandex_direct_clickUTMSource --
6. ()
- . , .
Github Action kzzzr / mybi-dbt-action — , Docker-, , , , . , , .
. . , , . .
, . — . , . . .
— ? ?
— 1 5 .
— , ?
— .
, TODO:
- : , API, Webhook
- , dbt CORE . .
- + + + (- -)
- ( + ),
- ( ) Github Actions
- , , (DAG)
- : Git-, DEV PROD.
- : , -, .
, . :
- — Continuous Integration & Data Tests. , .
- (Data Quality): , . , Wheely : : QA .
- 1- . , http://spasibo-metabase.eu-central-1.elasticbeanstalk.com/
- Apache Superset Metabase. , .
- - . : , .
- self-service BI. . , , , .
- : , , .
- . . ! .
, ?
pet-project, . :
- , . , ?
- . Private, public Open Source.
- . , - .
- . — .
このプロジェクトに関連するニュースを電報チャンネルhttps://t.me/enthusiastechで公開します。
最新情報をお楽しみに、質問をしてください。喜んでお答えします。
清聴ありがとうございました。












