Parizvino, inenge kambani yese pasi rose inounganidza zviverengero nezvezviito zvevashandisi pawebhu sosi. Kukurudzira kwakajeka - makambani anoda kuziva kuti chigadzirwa / webhusaiti yavo inoshandiswa sei uye kunzwisisa zviri nani vashandisi vavo. Ehe, kune huwandu hukuru hwezvishandiso pamusika kugadzirisa dambudziko iri - kubva kune analytics masisitimu anopa data muchimiro chedhibhodhi uye magirafu (semuenzaniso.
Asi takawana dambudziko risati ragadziriswa. Ndizvo zvakazvarwa
Nei tichifanira kukudziridza basa redu pachedu?
Akanga ari makore makumi mapfumbamwe, takararama nepose pataigona. 2019, takagadzira iyo API Yekutanga Mutengi Data Platform kSense, izvo zvakaita kuti zvikwanise kuunganidza data kubva kwakasiyana masosi (Facebook ads, Stripe, Salesforce, Google play, Google Analytics, nezvimwewo) kuti iwedzere nyore kuongorora data, kuona zvinovimbika, nezvimwe. Takaona kuti vashandisi vazhinji vanoshandisa chikuva chedu chekuongorora data kunyanya Google Analytics (pano GA). Takataura nevamwe vashandisi uye takaona kuti vanoda data yeanalytics yechigadzirwa chavo chavanotambira vachishandisa GA, asi.
Vakaisa Segment javascript pixel pane yavo webhu sosi uye data nezve maitiro evashandisi vavo yakaiswa mudura rakatsanangurwa (semuenzaniso Postgres). Asi Segment zvakare ine kuderera kwayo - mutengo. Semuenzaniso, kana webhu saiti ine 90,000 MTU (mwedzi inoteverwa vashandisi), saka iwe unofanirwa kubhadhara ~ 1,000 $ pamwedzi kune cashier. Paive zvakare nedambudziko rechitatu - mamwe mabrowser ekuwedzera (seAdBlock) akavhara kuunganidzwa kweanalytics nekuti... http zvikumbiro kubva kubrowser zvakatumirwa kuGA uye Segment domains. Zvichienderana nezvido zvevatengi vedu, isu takagadzira sevhisi yekuongorora iyo inounganidza seti yakazara yedata (isina sampling), yemahara uye inogona kushanda pachedu.
Mashandiro anoita sevhisi
Iyo sevhisi ine zvikamu zvitatu: javascript pixel (iyo yatakazonyora zvakare mutypescript), sevha chikamu chinoitwa mumutauro weGO, uye yakarongwa kushandisa Redshift neBigQuery sedura remukati (gare gare ivo vakawedzera rutsigiro Postgres, ClickHouse uye Snowflake).
Zvakasarudzwa kusiya chimiro cheGA uye Segment zviitiko zvisina kuchinjwa. Chaingodiwa kwaive kudzokorora zviitiko zvese kubva pawebhu sosi iyo pixel inoiswa kune yedu backend. Sezvazvinoitika, izvi hazvina kuoma kuita. Iyo Javascript pixel yakapfuura iyo yekutanga raibhurari nzira yeGA neitsva, iyo yakadhirodha chiitiko ichi musystem yedu.
//'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);
});
});
}
NeSegment pixel zvese zviri nyore; ine middleware nzira, imwe yatakashandisa.
//'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.');
}
Pamusoro pekukopa zviitiko, isu takawedzera kugona kutumira zvisina tsarukano 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'
});
Tevere, ngatitaure nezve server chikamu. Iyo backend inofanirwa kugamuchira zvikumbiro zve http, zvizadze nerumwe ruzivo, semuenzaniso, geo data (ndatenda
//Π²Ρ
ΠΎΠ΄ΡΡΠΈΠΉ 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"
}
Nekudaro, arrays parizvino anongoshandurwa kuita tambo nekuti Haasi ese ane hukama dhatabhesi anotsigira akadzokororwa minda. Zvinogonekawo kushandura mazita eminda kana kuadzima uchishandisa sarudzo yemitemo yemepu. Ivo vanokutendera iwe kuti uchinje iyo data schema kana zvichidikanwa kana kushandura imwe mhando yedata kune imwe. Semuenzaniso, kana munda wejson uine tambo ine timestamp (field_3_sub_field_1_sub_sub_field_1 kubva pamuenzaniso uri pamusoro), saka kuti ugadzire munda mudhatabhesi nerudzi rwestamp yenguva, unofanirwa kunyora mutemo wemepu mukugadzirisa. Mune mamwe mazwi, iyo data data yemunda inotemerwa kutanga neiyo json kukosha, uyezve mhando yekukanda mutemo (kana yakagadziriswa) inoshandiswa. Taona mhando ina dzemadata makuru: STRING, FLOAT4, INT64 uye TIMESTAMP. Iyo mepu uye yemhando yekukanda mitemo inoita seizvi:
rules:
- "/field_1/subfield_1 -> " #ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ
- "/field_2/subfield_1 -> /field_10/subfield_1" #ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΠΏΠΎΠ»Ρ
- "/field_3/subfield_1/subsubfield_1 -> (timestamp) /field_20" #ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΠΏΠΎΠ»Ρ ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠ°
Algorithm yekusarudza rudzi rwe data:
- shandura json chimiro kuita flat chimiro
- kusarudza mhando yedata yeminda nemitengo
- kushandisa mepu uye kutaipa mitemo yekukanda
Zvadaro kubva kune inouya json chimiro:
{
"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"
}
}
iyo data schema ichawanikwa:
"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
Isu takafunga zvakare kuti mushandisi anofanira kukwanisa kugadzirisa kugovera kana kupatsanura data mudhatabhesi zvinoenderana nemamwe maitiro uye kuita kugona kuseta zita retafura nekusingaperi kana.
tableName: '{{.product_type}}_{{._timestamp.Format "2006_01"}}'
Nekudaro, chimiro chezviitiko zvinouya chinogona kuchinja panguva yekumhanya. Isu takaita algorithm yekutarisa musiyano pakati pechimiro chetafura iripo uye chimiro chechiitiko chiri kuuya. Kana mutsauko ukawanikwa, tafura ichagadziridzwa neminda mitsva. Kuti uite izvi, shandisa chigamba SQL mubvunzo:
#ΠΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ Postgres
ALTER TABLE "schema"."table" ADD COLUMN new_column character varying
akitekicha
Sei uchifanira kunyora zviitiko kune faira system, uye kwete kungozvinyora zvakananga kune database? Databases haiwanzo kuita zvakanaka kana ichibata nehuwandu hukuru hwekuisa (
Open Source uye zvirongwa zvenguva yemberi
Pane imwe nguva, sevhisi yakatanga kutaridzika sechigadzirwa chakazara uye isu takasarudza kuiburitsa kuOpen Source. Parizvino, kubatanidzwa nePostgres, ClickHouse, BigQuery, Redshift, S3, Snowflake yakaitwa. Zvese zvakabatanidzwa zvinotsigira ese batch uye yekufambisa modhi yekurodha data. Yakawedzera rutsigiro rwezvikumbiro kuburikidza neAPI.
Ikozvino yekubatanidza chirongwa chinotaridzika seizvi:
Kunyangwe iyo sevhisi inogona kushandiswa yakazvimiririra (semuenzaniso kushandisa Docker), isu tinewo
β
β
β
Tichafara kana EventNative ikabatsira kugadzirisa matambudziko ako!
Vashandisi vakanyoresa chete ndivo vanogona kutora chikamu muongororo.
Ndeipi nhamba yekuunganidza system inoshandiswa mukambani yako?
-
48,0%Google Analytics12
-
4,0%Chikamu1
-
16,0%Imwe (nyora mumashoko)4
-
32,0%Wakaita sevhisi yako8
25 vashandisi vakavhota. 6 vashandisi vakaramba.
Source: www.habr.com