αα
αα
α»αααααααααααααΎαααααααααααα»αα αα»αααΆααα’αααα
ααΎαα·ααααααααααΌααααα·αα·α’αααΈαααααααΆαααααα’αααααααΎααααΆαααα
ααΎααααΆαααα αααααα ααΆαααΎαααΉαα
α·αααααΊα
αααΆααααΆαα - αααα»αα αα»αα
ααααΉαααΈαααααααααα·ααα/ααα ααααααααααα½αααααααΌαααΆαααααΎααααΆαα αα·ααααααΆααααα
αααΆααα’αααΈα’αααααααΎααααΆαααααααα½αααα ααΆααΆααα·αααΆαα ααΆαα§ααααααα½αα
ααα½ααααα
ααΎααΈααααΆαααΎααααΈαααααααΆααααα αΆααα - ααΈαααααααααα·ααΆααααααααααα·αααααααααα»αααααααααΆααααΆααααααααααα αα·αααααΆα αα (α§ααΆα ααα
ααα»ααααβααΎαβααΆαβααβααΎαβαααα αΆβαααβαα·αβααΆααβααααΌαβααΆαβαααααααΆαβαα
βα‘αΎαβααα ααΌα
ααααααΎααα
α ααα»α’αααΈααΎααα½αα’αα·ααααααααΆααααααααΆαααααα½α?
ααΆααΆααααααααααΈ 2019 ααΎαααΆααααααΆαααΆαααΈαα·αααα’αααα»ααααααΎαα’αΆα
ααααΎααΆαα ααααΆα XNUMX ααΎαααΆααααααΎα API First Customer Data Platform kSenseαααααααΎα±ααααΆα’αΆα
αααααΌααααα»ααα·ααααααααΈαααααααααααααααΆ (ααΆαααααΆαααΆαα·αααααααααΆα Facebook, Stripe, Salesforce, Google Play, Google Analytics ααα) αααααΆααααΆααα·ααΆααα·ααααααααΆααααααΆααααα½α ααΆααααααα’ααααααααΆαααΆαα’αΆαααααααα ααΎαααΆαααααααααΆααααΎαααΆα’αααααααΎααααΆααααΆα
αααΎαααααΎαααα·ααΆααααααΎααααααΆααααΆααα·ααΆααα·ααααααααΆαα·ααα Google Analytics (ααα
ααα GA) α ααΎαααΆααα·ααΆααα
ααΆααα’αααααααΎααααΆαααα½αα
ααα½α α αΎαααΆαααααΎαααΆαα½αααααααΌαααΆααα·αααααααα·ααΆααααααΆααααα·ααααααααα½αααααααα½αααααα½αααΆααααααααΎ GA ααα»αααα
αα½αααααΆαααα‘αΎα Segment javascript pixel αα ααΎααααΆαααα ααααααααααα½ααα α αΎααα·ααααααα’αααΈα’αΆαααααα·αα·ααΆααααα’αααααααΎαααααα½αααααααΌαααΆααααα»ααα αααα»αααΌαααααΆααα·αααααααααααΆααααααΆαα (α§ααΆα ααα Postgres) α ααα»αααα Segment ααααΆααα»ααα·ααααα·ααααααΆααααα - αααααα α§ααΆα ααα ααααα·αααΎααααΆαααα αααααααΆα 90,000 MTU (α’αααααααΎααααΆαααααααΆαααΆαααΆααααα αΆααα) αααα’αααααααΌααααααααΆαα ~ 1,000 αα»ααααΆααααα»ααα½ααααα α±ααα’ααααα·ααα»αα ααΆααααΆααααα αΆααΈααΈααααα - ααααααααααααααααα·ααΈαα»ααααα½αα ααα½α (ααΌα ααΆ AdBlock) ααΆαααΆααΆααααΆααααααΌααααα»αααααΆααα·ααΆααααααΆααα ... ααααΎ http ααΈαααααα·ααΈαα»αααααααΌαααΆαααααΎαα ααα GA αα·α Segment α αααααα’ααααΎααααααααΆααααΆααααα’αα·αα·ααααααααΎα ααΎαααΆααααααΎαααααΆαααααα·ααΆαααααααααΌααα·αααααααααααααα½α (αααααααΆαααααΌ) ααΊα₯ααα·ααααα αα·αα’αΆα ααααΎαααΆαααΎα αααααΆαα ααΆααααααααααααααΎαααααΆααα
αααααααααααΆααααααααΎαααΆα
ααααΆαααααααααΆαααΈαααααα javascript pixel (ααααααααααααΎααααααα‘αΎααα·αααΆ typescript) ααααα server ααααΌαααΆαα’αα»ααααααΆααΆααΆ GO α αΎαααΆααααΌαααΆααααααααααΎ Redshift αα·α BigQuery ααΆααΌαααααΆααα·αααααααααα»ααααα (ααααααααα½αααααΆαααααααααΆαααΆαααααααααΆαα Postgres, ClickHouse αα·α Snowflake) α
ααΆααααΌαααΆααααααα α α·αααα αΆαα ααααΈαα ααΆααααααααααααααΉαααα·ααΆααα GA αα·α Segment αα·αααααΆααααααΌαα α’αααΈααΆααα’αααααααααΌαααΆαααΊα ααααααααΉαααα·ααΆαααααΆααα’ααααΈααααΆαααα ααααααααααΈααααααααΌαααΆαααα‘αΎααα αααααααΆααααααααααααΎαα ααΌα αααααΆααααα ααααααα·ααα·ααΆαααααΎααα ααΈαααα Javascript ααα·ααααα·ααΈααΆααααααααααΆααα GA ααΎαααΆαα½αααΉααα·ααΈααααΈαα½α αααα ααααααααΉαααα·ααΆααααα αααα»αααααααααααααααΎαα
//'ga' - ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Google Analytics
if (window.ga) {
ga(tracker => {
var originalSendHitTask = tracker.get('sendHitTask');
tracker.set('sendHitTask', (model) => {
var payLoad = model.get('hitPayload');
//ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ Π² GA
originalSendHitTask(model);
let jsonPayload = this.parseQuery(payLoad);
//ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΠ±ΡΡΠΈΡ Π² Π½Π°Ρ ΡΠ΅ΡΠ²ΠΈΡ
this.send3p('ga', jsonPayload);
});
});
}
ααΆαα½αααΉα Segment pixel α’αααΈααααααααΆαααΊααΆααααααΆα ααΆααΆααα·ααΈααΆααααα Middleware αα½ααααααΎαααααΆααααααΎα
//'analytics' - ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Segment
if (window.analytics) {
if (window.analytics.addSourceMiddleware) {
window.analytics.addSourceMiddleware(chain => {
try {
//Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ Π² Π½Π°Ρ ΡΠ΅ΡΠ²ΠΈΡ
this.send3p('ajs', chain.payload);
} catch (e) {
LOG.warn('Failed to send an event', e)
}
//ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ±ΡΡΠΈΡ Π² Segment
chain.next(chain.payload);
});
} else {
LOG.warn("Invalid interceptor state. Analytics js initialized, but not completely");
}
} else {
LOG.warn('Analytics.js listener is not set.');
}
ααααααααΈααΎααΆαα ααααααααΉαααα·ααΆααα ααΎαααΆααααααααααααααΆααααα»αααΆαααααΎ json ααααΆαα
//ΠΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΠ±ΡΡΠΈΠΉ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌ json ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ
eventN.track('product_page_view', {
product_id: '1e48fb70-ef12-4ea9-ab10-fd0b910c49ce',
product_price: 399.99,
price_currency: 'USD'
product_release_start: '2020-09-25T12:38:27.763000Z'
});
αααααΆααααΌααα·ααΆαα’αααΈααααααααΆαααΈαααα αααααααΆαααααααα½αααααα½αααααααΎ http ααααααα½αααΆααΆαα½αααααααΆααααααα α§ααΆα ααα αα·ααααααααΌαα·ααΆααααα (ααΌαα’ααα»α
//Π²Ρ
ΠΎΠ΄ΡΡΠΈΠΉ json
{
"field_1": {
"sub_field_1": "text1",
"sub_field_2": 100
},
"field_2": "text2",
"field_3": {
"sub_field_1": {
"sub_sub_field_1": "2020-09-25T12:38:27.763000Z"
}
}
}
//ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
{
"field_1_sub_field_1": "text1",
"field_1_sub_field_2": 100,
"field_2": "text2",
"field_3_sub_field_1_sub_sub_field_1": "2020-09-25T12:38:27.763000Z"
}
αααααΆαααΆαααΆααααα α’αΆαααα αα α»ααααααααααΌαααΆαααααααααα ααΆααααα’αααα αααααΆααα αα·ααααααΌαααααΆααα·ααααααααααΆααααααααΆααα’ααααΆααααααΆααααααααα ααΆααα’αΆα ααααΎαα ααΆαααΎααααΈααααΆααααααΌααααααααΆα α¬αα»ααα½αααΆαααααααΎα αααΆααααααααααααΈααααα α α·αααα αα½αααα’αα»ααααΆαα±ααα’αααααααΆααααααΌααααααααΆααααα·ααααααααααα·αααΎα αΆαααΆα αα¬αααααααααααααα·αααααααα½ααα ααααααααααααααα α§ααΆα ααα ααααα·αααΎααΆα json ααΆαααααα’αααααααααΆαααααΆαααααααΆ (field_3_sub_field_1_sub_sub_field_1 ααΈα§ααΆα αααααΆαααΎ) αααααΆααααααΎααααΈαααααΎαααΆααα½ααα αααα»αααΌαααααΆααα·ααααααααΆαα½αααΉααααααααααααααΆ α’αααααααΌααααααα αααΆαααααααΈαααα»αααΆαααααααα ααΆααααααααα αααααΆααα·αααα αααααααα·ααααααααααΆαααααΌαααΆααααααααΆαα»ααααααααα json α αΎααααααΆαααα α αααΆααααααααααα (ααααα·αααΎααΆαααααααα ααΆαααααααα) ααααΌαααΆαα’αα»ααααα ααΎαααΆαααααααααααααα·ααααααααααΆαααα ααα½α 4α STRING, FLOAT64, INT64 αα·α TIMESTAMPα α αααΆααααααΆαααΆαααααααΈ αα·αααααααααΎααα ααΌα αααα
rules:
- "/field_1/subfield_1 -> " #ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ
- "/field_2/subfield_1 -> /field_10/subfield_1" #ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΠΏΠΎΠ»Ρ
- "/field_3/subfield_1/subsubfield_1 -> (timestamp) /field_20" #ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΠΏΠΎΠ»Ρ ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠ°
αααα½ααααααααΆααααααΆααααααααααααααα·ααααααα
- ααααααα ααΆαααααααα json αα ααΆαα ααΆααααααααααΆαααααΎ
- ααααααααααααα·ααααααααααΆααααααααα
- ααΆαβα’αα»ααααβααΆαβααΌαβαααααΈ αα·αβααααααβα αααΆααβααΆαβαααααααΆα
αααααΆααααααΈαα ααΆαααααααα json α αΌαα
{
"product_id": "1e48fb70-ef12-4ea9-ab10-fd0b910c49ce",
"product_price": 399.99,
"price_currency": "USD",
"product_type": "supplies",
"product_release_start": "2020-09-25T12:38:27.763000Z",
"images": {
"main": "picture1",
"sub": "picture2"
}
}
αααααααΆααααα·ααααααααΉαααα½αααΆαα
"product_id" character varying,
"product_price" numeric (38,18),
"price_currency" character varying,
"product_type" character varying,
"product_release_start" timestamp,
"images_main" character varying,
"images_sub" character varying
ααΎαααααΆααα·ααααααααΆ α’αααααααΎααααΆαααα½αααα’αΆα
ααααααα
ααΆααααααααααΆααααα
αα α¬αααα
αααα·αααααααα
αααα»αααΌαααααΆααα·αααααααααααααα
ααΆααααααααα·αα·α
αααααααααααα α αΎαααΆαα’αα»αααααααααααΆααααα»αααΆαααααααααααααΆααΆααααααα α¬
tableName: '{{.product_type}}_{{._timestamp.Format "2006_01"}}'
ααααααΆαααΆααααα αα ααΆααααααααααααααΉαααα·ααΆαααα αΌαα’αΆα ααααΆααααααΌααα αααααααΎαααΆαα ααΎαααΆαα’αα»αααααααα½ααααααααΆαααΎααααΈαα·αα·αααααΎαααΆααα»αααααΆαααΆααα ααΆααααααααααααΆααΆααααααΆαααααΆαα αα·ααα ααΆααααααααααααααΉαααα·ααΆαααα αΌαα ααααα·αααΎααααΎαααΆααα»αααααΆ ααΆααΆαααΉαααααΌαααΆαα’αΆαααααααΆαα½αααΉαααΆαααααΈα ααΎααααΈααααΎααΌα αααααΌαααααΎ patch SQL queryα
#ΠΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ Postgres
ALTER TABLE "schema"."table" ADD COLUMN new_column character varying
ααααΆαααααααα
α ααα»α’αααΈααΆαααΆα’αααααααΌαααΆααααααααααΉαααα·ααΆααααα
ααΆααααααααααα―αααΆα α αΎααα·αααααΉααααααααααΆαααααααΆαααα
ααΌαααααΆααα·αααααααα? ααΌαααααΆααα·αααααααα·ααααααααααΎαααΆαααα’αααα
ααααααααααΆαααΆαα½αα
ααα½αα
αααΎαααααΆααααα
αΌα (
αααααααΎαα αα αα·ααααααΆααααααΆααα’ααΆαα
αα α ααα»α αααα ααααΆααααα αΆααααααΎαααΎααα ααΌα ααΆααα·ααααααααα α αΎαααΎαααΆααααααα α α·ααααααα ααααΆαα ααΆαααααααΎαα αα α αα αα α»αααααα ααΆααα½ααααα αΌαααΆαα½α Postgres, ClickHouse, BigQuery, Redshift, S3, Snowflake ααααΌαααΆαα’αα»ααααα ααΆααα½ααααα αΌαααΆααα’ααααΆααααααΆααααααααααα»α αα·αααΆαααααααΈαααααΆααααα»ααα·ααααααα ααΆαααααααααΆαααΆαααααααααΆααααααΎααΆαααα API α
αααααααΆααααα½ααααα αΌααα αα α»ααααααααΎααα ααΌα ααα:
αααααΈααΆααααΆααααα’αΆα
ααααΌαααΆαααααΎαααα―αααΆααα (α§ααΆα αααααΆαααααΎ Docker) ααΎαααααΆααααααα
β
β
β
ααΎαααΉαααΈαααΆαααααα·αααΎ EventNative αα½ααααααααΆααααα αΆααααα’ααα!
ααΆαααα’αααααααΎααααΆαααααααΆαα
α»ααααααααα»ααααααααα’αΆα
α
αΌααα½ααααα»αααΆααααααααα·αααα
ααΎβααααααααβαααααΌαβαααα·αα·βα’αααΈβαααβααααΌαβααΆαβααααΎβαααα»αβαααα»αα αα»αβααααβα’ααα?
-
48,0%Google Analytics α‘α’
-
4,0%αααααααΈ 1
-
16,0%αα½αααα (ααααααααα»αααα·ααααα) α€
-
32,0%α’αα»ααααααααΆααααααααα’ααα α¨
α’αααααααΎααααΆαα 25 ααΆααααΆαααααααααα α’αααααααΎααααΆαα α‘α€ ααΆααααααΌαααΆαα αΆαααΆααα
ααααα: www.habr.com