ΠΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², ΡΠ΅ΡΠΈΡΠΈ ΡΠ΅ΠΊΠΎΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠ° Π²ΠΎ ΡΠ²Π΅ΡΠΎΡ ΡΠΎΠ±ΠΈΡΠ° ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π·Π° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΡΠ΅ Π½Π° Π²Π΅Π±-ΡΠ΅ΡΡΡΡ. ΠΠΎΡΠΈΠ²Π°ΡΠΈΡΠ°ΡΠ° Π΅ ΡΠ°ΡΠ½Π° - ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈΡΠ΅ ΡΠ°ΠΊΠ°Π°Ρ Π΄Π° Π·Π½Π°Π°Ρ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π½ΠΈΠ²Π½ΠΈΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄/Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡΠ° ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΎ Π΄Π° Π³ΠΈ ΡΠ°Π·Π±Π΅ΡΠ°Ρ ΡΠ²ΠΎΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ. Π‘Π΅ ΡΠ°Π·Π±ΠΈΡΠ°, Π½Π° ΠΏΠ°Π·Π°ΡΠΎΡ ΠΈΠΌΠ° Π³ΠΎΠ»Π΅ΠΌ Π±ΡΠΎΡ Π°Π»Π°ΡΠΊΠΈ Π·Π° ΡΠ΅ΡΠ°Π²Π°ΡΠ΅ Π½Π° ΠΎΠ²ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ - ΠΎΠ΄ Π°Π½Π°Π»ΠΈΡΠΈΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΊΠΎΠΈ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π°Π°Ρ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π²ΠΎ ΡΠΎΡΠΌΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈ ΡΠ°Π±Π»ΠΈ ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΎΠ½ΠΈ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ
ΠΠΎ, Π½Π°ΡΠ΄ΠΎΠ²ΠΌΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΊΠΎΡ ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ Π΅ ΡΠ΅ΡΠ΅Π½. Π’Π°ΠΊΠ° ΡΠΎΠ΄Π΅Π½
ΠΠΎΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ°Π·Π²ΠΈΠ²Π°ΠΌΠ΅ ΡΠΎΠΏΡΡΠ²Π΅Π½Π° ΡΡΠ»ΡΠ³Π°?
ΠΠ΅Π° Π΄Π΅Π²Π΅Π΄Π΅ΡΠ΅ΡΡΠΈ, ΠΎΠΏΡΡΠ°Π½Π°Π²ΠΌΠ΅ Π½Π°ΡΠ΄ΠΎΠ±ΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Π²ΠΌΠ΅. ΠΠΎ 2019 Π³ΠΎΠ΄ΠΈΠ½Π°, Π³ΠΎ ΡΠ°Π·Π²ΠΈΠ²ΠΌΠ΅ ΠΏΡΠ²ΠΈΠΎΡ API Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π·Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΈΡΠ΅ kSense, ΡΡΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΈΠ·Π²ΠΎΡΠΈ (ΡΠ΅ΠΊΠ»Π°ΠΌΠΈ Π½Π° Facebook, Stripe, Salesforce, Google play, Google Analytics ΠΈΡΠ½.) Π·Π° ΠΏΠΎΠΏΠΎΠ³ΠΎΠ΄Π½Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°ΡΠ΅ Π½Π° Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΈΡΠ½. ΠΠ°Π±Π΅Π»Π΅ΠΆΠ°Π²ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΌΠ½ΠΎΠ³Ρ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΡΠ° ΠΊΠΎΡΠΈΡΡΠ°Ρ Π½Π°ΡΠ°ΡΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π·Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Google Analytics (Π²ΠΎ Π½Π°ΡΠ°ΠΌΠΎΡΠ½ΠΈΠΎΡ ΡΠ΅ΠΊΡΡ GA). Π Π°Π·Π³ΠΎΠ²Π°ΡΠ°Π²ΠΌΠ΅ ΡΠΎ Π½Π΅ΠΊΠΎΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΈ Π΄ΠΎΠ·Π½Π°Π²ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΈΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π½ΠΈΠ²Π½ΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ, ΠΊΠΎΠΈ Π³ΠΈ Π΄ΠΎΠ±ΠΈΠ²Π°Π°Ρ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° GA, Π½ΠΎ
Π’ΠΈΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π° Segment javascript ΠΏΠΈΠΊΡΠ΅Π» Π½Π° Π½ΠΈΠ²Π½ΠΈΠΎΡ Π²Π΅Π±-ΡΠ΅ΡΡΡΡ ΠΈ Π½ΠΈΠ²Π½ΠΈΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° ΠΎΠ΄Π½Π΅ΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈΡΠ΅ Π±Π΅Π° Π²ΡΠΈΡΠ°Π½ΠΈ Π²ΠΎ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ (Π½Π° ΠΏΡ. Postgres). ΠΠΎ, Π‘Π΅Π³ΠΌΠ΅Π½Ρ ΠΈΠΌΠ° ΠΈ ΡΠ²ΠΎΡ ΠΌΠΈΠ½ΡΡ - ΡΠ΅Π½Π°ΡΠ°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ Π²Π΅Π±-ΡΠ΅ΡΡΡΡ ΠΈΠΌΠ° 90,000 MTU (ΠΌΠ΅ΡΠ΅ΡΠ½ΠΈ ΡΠ»Π΅Π΄Π΅Π½ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ), ΡΠΎΠ³Π°Ρ ΡΡΠ΅Π±Π° Π΄Π° ΠΏΠ»Π°ΡΠ°ΡΠ΅ ~ 1,000 Π΄ΠΎΠ»Π°ΡΠΈ ΠΌΠ΅ΡΠ΅ΡΠ½ΠΎ Π½Π° Π±Π»Π°Π³Π°ΡΠ½Π°ΡΠ°. ΠΠΌΠ°ΡΠ΅ ΠΈ ΡΡΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ - Π½Π΅ΠΊΠΎΠΈ Π΅ΠΊΡΡΠ΅Π½Π·ΠΈΠΈ Π½Π° ΠΏΡΠ΅Π»ΠΈΡΡΡΠ²Π°ΡΠΈ (ΠΊΠ°ΠΊΠΎ AdBlock) ΡΠ° Π±Π»ΠΎΠΊΠΈΡΠ°Π° ΠΊΠΎΠ»Π΅ΠΊΡΠΈΡΠ°ΡΠ° Π½Π° Π°Π½Π°Π»ΠΈΡΠΈΠΊΠ°. ΠΠ°ΡΠ°ΡΠ°ΡΠ° http ΠΎΠ΄ ΠΏΡΠ΅Π»ΠΈΡΡΡΠ²Π°ΡΠΎΡ Π±Π΅Π° ΠΈΡΠΏΡΠ°ΡΠ΅Π½ΠΈ Π΄ΠΎ Π΄ΠΎΠΌΠ΅Π½ΠΈΡΠ΅ GA ΠΈ Segment. ΠΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΠΆΠ΅Π»Π±Π°ΡΠ° Π½Π° Π½Π°ΡΠΈΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ, ΡΠΎΠ·Π΄Π°Π΄ΠΎΠ²ΠΌΠ΅ Π°Π½Π°Π»ΠΈΡΠΈΡΠΊΠ° ΡΡΠ»ΡΠ³Π° ΠΊΠΎΡΠ° ΡΠΎΠ±ΠΈΡΠ° ΡΠ΅Π»ΠΎΡΠ΅Π½ ΡΠ΅Ρ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ (Π±Π΅Π· Π·Π΅ΠΌΠ°ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΎΡΠΈ), Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π½Π° Π½Π°ΡΠ°ΡΠ° ΡΠΎΠΏΡΡΠ²Π΅Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°.
ΠΠ°ΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ° ΡΡΠ»ΡΠ³Π°ΡΠ°
Π£ΡΠ»ΡΠ³Π°ΡΠ° ΡΠ΅ ΡΠΎΡΡΠΎΠΈ ΠΎΠ΄ ΡΡΠΈ Π΄Π΅Π»Π°: javascript ΠΏΠΈΠΊΡΠ΅Π» (ΠΊΠΎΡ ΠΏΠΎΠ΄ΠΎΡΠ½Π° Π³ΠΎ ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠΈΠ²ΠΌΠ΅ Π²ΠΎ ΡΠΈΠΏΠΊΠ°), Π΄Π΅Π» ΠΎΠ΄ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ GO ΠΈ Π±Π΅ΡΠ΅ ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΎ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Redshift ΠΈ BigQuery ΠΊΠ°ΠΊΠΎ Π²Π½Π°ΡΡΠ΅ΡΠ½Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ (ΠΏΠΎΠ΄ΠΎΡΠ½Π° Π΄ΠΎΠ΄Π°Π΄ΠΎΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Postgres , ClickHouse ΠΈ Snowflake).
Π‘ΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Π½Π°ΡΡΠ°Π½ΠΈΡΠ΅ ΠΠ ΠΈ Π‘Π΅Π³ΠΌΠ΅Π½Ρ ΠΎΠ΄Π»ΡΡΠΈΡΠ° Π΄Π° ΠΎΡΡΠ°Π½Π°Ρ Π½Π΅ΠΏΡΠΎΠΌΠ΅Π½Π΅ΡΠΈ. Π‘Γ¨ ΡΡΠΎ Π±Π΅ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π±Π΅ΡΠ΅ Π΄Π° ΡΠ΅ Π΄ΡΠΏΠ»ΠΈΡΠ°Π°Ρ ΡΠΈΡΠ΅ Π½Π°ΡΡΠ°Π½ΠΈ ΠΎΠ΄ Π²Π΅Π±-ΡΠ΅ΡΡΡΡΠΎΡ ΠΊΠ°Π΄Π΅ ΡΡΠΎ Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ ΠΏΠΈΠΊΡΠ΅Π»ΠΎΡ Π²ΠΎ Π½Π°ΡΠΈΠΎΡ Π·Π°Π΄Π΅Π½ Π΄Π΅Π». ΠΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΈΡΠΏΠΎΡΡΠ°Π²ΡΠ²Π°, ΠΎΠ²Π° Π΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ. ΠΠΈΠΊΡΠ΅Π»ΠΎΡ 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, ΡΓ¨ Π΅ ΠΏΠΎΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ, ΠΈΠΌΠ° ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π½Π° ΡΡΠ΅Π΄Π΅Π½ ΡΠΎΡΡΠ²Π΅Ρ, Π° Π½ΠΈΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅Π²ΠΌΠ΅ Π΅Π΄Π΅Π½ ΠΎΠ΄ Π½ΠΈΠ².
//'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 ΡΠΎΠ΄ΡΠΆΠΈ Π½ΠΈΠ·Π° ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΠ΅ΡΠ°Ρ (ΠΏΠΎΠ»Π΅_3_ΠΏΠΎΠ΄_ΠΏΠΎΠ»Π΅_1_ΠΏΠΎΠ΄_ΠΏΠΎΠ΄_ΠΏΠΎΠ»Π΅_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 struct Π²ΠΎ ΡΠ°ΠΌΠ½Π° ΡΡΡΡΠΊΡΡΡΠ°
- ΠΎΠ΄ΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠ½ΠΈΠΎΡ ΡΠΈΠΏ Π½Π° ΠΏΠΎΠ»ΠΈΡΠ° ΠΏΠΎ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ
- ΠΏΡΠΈΠΌΠ΅Π½Π° Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π·Π° ΠΌΠ°ΠΏΠΈΡΠ°ΡΠ΅ ΠΈ Π»ΠΈΠ΅ΡΠ΅ Π½Π° ΡΠΈΠΏΠΎΠ²ΠΈ
ΠΠΎΡΠΎΠ° ΠΎΠ΄ Π΄ΠΎΡΠ΄ΠΎΠ²Π½Π°ΡΠ° 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"}}'
Π‘Π΅ΠΏΠ°ΠΊ, ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Π΄ΠΎΡΠ΄ΠΎΠ²Π½ΠΈΡΠ΅ Π½Π°ΡΡΠ°Π½ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅. ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π²ΠΌΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠ°ΠΌ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΏΠΎΠΌΠ΅ΡΡ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠ° ΡΠ°Π±Π΅Π»Π° ΠΈ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Π΄ΠΎΡΠ΄ΠΎΠ²Π΅Π½ Π½Π°ΡΡΠ°Π½. ΠΠΊΠΎ ΡΠ΅ Π½Π°ΡΠ΄Π΅ ΡΠ°Π·Π»ΠΈΠΊΠ°, ΡΠ°Π±Π΅Π»Π°ΡΠ° ΡΠ΅ ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ° ΡΠΎ Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ»ΠΈΡΠ°. ΠΠ° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΠΎΠ²Π°, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π³ΠΎ Π±Π°ΡΠ°ΡΠ΅ΡΠΎ Π·Π° Π·Π°ΠΊΡΠΏΠΈ SQL:
#ΠΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ Postgres
ALTER TABLE "schema"."table" ADD COLUMN new_column character varying
Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°
ΠΠΎΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π½Π°ΡΡΠ°Π½ΠΈ Π²ΠΎ Π΄Π°ΡΠΎΡΠ΅ΡΠ½ΠΈΠΎΡ ΡΠΈΡΡΠ΅ΠΌ, Π° Π½Π΅ ΡΠ°ΠΌΠΎ Π΄Π° Π³ΠΈ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π²ΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ? ΠΠ°Π·ΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π½Π΅ ΡΠ΅ΠΊΠΎΠ³Π°Ρ ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Π°Ρ Π²ΠΈΡΠΎΠΊΠΈ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ ΡΠΎ Π³ΠΎΠ»Π΅ΠΌ Π±ΡΠΎΡ Π²ΠΌΠ΅ΡΠ½ΡΠ²Π°ΡΠ° (
ΠΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ ΠΈ ΠΈΠ΄Π½ΠΈ ΠΏΠ»Π°Π½ΠΎΠ²ΠΈ
ΠΠΎ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ, ΡΡΠ»ΡΠ³Π°ΡΠ° ΡΡΠ°Π½Π° ΠΊΠ°ΠΊΠΎ ΠΏΠΎΠ»Π½ΠΎΠΏΡΠ°Π²Π΅Π½ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ ΠΈ ΡΠ΅ΡΠΈΠ²ΠΌΠ΅ Π΄Π° ΡΠ° ΡΡΠ°Π²ΠΈΠΌΠ΅ Π²ΠΎ ΡΠΎΡΡΠ²Π΅Ρ ΡΠΎ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄. ΠΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ² ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΡΠΎ Postgres, ClickHouse, BigQuery, Redshift, S3, Snowflake. Π‘ΠΈΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π°Π°Ρ ΠΈ ΡΠ΅ΡΠΈΡΠΊΠΈ ΠΈ ΡΠ΅ΠΆΠΈΠΌΠΈ Π·Π° Π²ΡΠΈΡΡΠ²Π°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° ΡΡΡΠΈΠΌΠΈΠ½Π³. ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Π±Π°ΡΠ°ΡΠ° ΠΏΡΠ΅ΠΊΡ API.
Π’Π΅ΠΊΠΎΠ²Π½Π°ΡΠ° ΡΠ΅ΠΌΠ° Π·Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ° ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:
ΠΠ°ΠΊΠΎ ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠ½ΠΎ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Docker), Π½ΠΈΠ΅ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠΌΠ°ΠΌΠ΅
β
β
β
ΠΠ΅ Π½ΠΈ Π±ΠΈΠ΄Π΅ ΠΌΠΈΠ»ΠΎ Π΄ΠΎΠΊΠΎΠ»ΠΊΡ EventNative Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° Π³ΠΈ ΡΠ΅ΡΠΈΡΠ΅ Π²Π°ΡΠΈΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ!
Π‘Π°ΠΌΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½ΠΈ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π°Ρ Π²ΠΎ Π°Π½ΠΊΠ΅ΡΠ°ΡΠ°.
ΠΠ°ΠΊΠΎΠ² ΡΠΈΡΡΠ΅ΠΌ Π·Π° ΡΠΎΠ±ΠΈΡΠ°ΡΠ΅ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ Π²Π°ΡΠ°ΡΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠ°
-
48,0%Google Analytics12
-
4,0%Π‘Π΅Π³ΠΌΠ΅Π½Ρ 1
-
16,0%ΠΡΡΠ³ΠΎ (Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ Π²ΠΎ ΠΊΠΎΠΌΠ΅Π½ΡΠ°Ρ) 4
-
32,0%ΠΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π²ΡΠ΅ Π²Π°ΡΠ°ΡΠ° ΡΡΠ»ΡΠ³Π°8
ΠΠ»Π°ΡΠ°Π° 25 ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ. 6 ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ Π±Π΅Π° Π²ΠΎΠ·Π΄ΡΠΆΠ°Π½ΠΈ.
ΠΠ·Π²ΠΎΡ: www.habr.com