Waqtigan xaadirka ah, ku dhawaad shirkad kasta oo adduunka ah waxay ururisaa tirakoobyada ku saabsan ficillada isticmaale ee ilaha shabakadda. Dhiirigelintu waa caddahay - shirkaduhu waxay rabaan inay ogaadaan sida badeecadooda/mareegaha loo isticmaalo oo ay si fiican u fahmaan isticmaalkooda. Dabcan, waxaa jira tiro badan oo qalab ah oo suuqa ku jira si loo xalliyo dhibaatadan - laga soo bilaabo hababka falanqaynta ee bixiya xogta qaabka dashboards iyo garaafyada (tusaale ahaan.
Laakiin waxaan helnay dhibaato aan wali la xalin. Sidaas ayaa ku dhalatay
Maxaynu u horumarinaynaa adeegeena?
Waxay ahayd sagaashamaadkii, waxaan ka badbaadnay intii karaankeena ah. 2019, waxaanu samaynay API Xogta Macmiilka Koowaad kSense, taas oo suurtogal ka dhigtay in la isku geeyo xogta laga helay ilo kala duwan (Xayeysiiska Facebook, Stripe, Salesforce, Google play, Google Analytics, iwm) si loo falanqeeyo xogta ku habboon, ogaanshaha ku tiirsanaanta, iwm. Waxaan ogaanay in isticmaaleyaal badan ay u isticmaalaan madalkeena falanqaynta xogta gaar ahaan Google Analytics (hadda dambe GA). Waxaan la hadalnay qaar ka mid ah isticmaalayaasha waxaana ogaanay inay u baahan yihiin xogta falanqaynta ee alaabtooda ay helaan iyagoo isticmaalaya GA, laakiin
Waxay ku rakibeen qaybta javascript pixel ilaha shabakadooda iyo xogta ku saabsan habdhaqanka isticmaalayaashooda ayaa lagu shubay xogta la cayimay (tusaale Postgres). Laakiin Qaybta sidoo kale waxay leedahay hoos u dhaceeda - qiimaha. Tusaale ahaan, haddii ilaha webka uu leeyahay 90,000 MTU ( isticmaalayaasha la dabagalo bishiiba), markaa waxaad u baahan tahay inaad bixiso ~ 1,000 $ bishiiba khasnajiga. Waxa kale oo jirtay dhib saddexaad - kordhinta browserka qaarkood (sida AdBlock) ayaa xannibay ururinta falanqaynta sababtoo ah... Codsiyada http ee browserka ayaa loo diray GA iyo xayndaabyada Qaybta. Iyada oo ku saleysan rabitaanka macaamiisheena, waxaan abuurnay adeeg falanqeyn kaas oo aruuriya xog dhameystiran (aan la qaadin), waa bilaash oo ka shaqeyn kara kaabayaashayaga.
Sida adeeggu u shaqeeyo
Adeeggu waxa uu ka kooban yahay saddex qaybood oo kala ah:-pixel javascript (oo aan markii dambe dib ugu qornay far-qorista), qaybta server-ka waxa lagu hirgeliyay luqadda GO-ga, waxaana la qorsheeyay in Redshift iyo BigQuery loo isticmaalo kayd ahaan gudaha guriga (kadibna waxay ku biiriyeen taageero. Postgres, ClickHouse iyo Snowflake).
Waxaa la go'aansaday in laga tago qaab-dhismeedka GA iyo dhacdooyinka Qaybta aan isbeddelin. Waxa kaliya ee loo baahnaa waxay ahayd in dhammaan dhacdooyinka laga soo min guuriyo ilaha shabakadda ee pixel-ku ku rakiban yahay dhabarkayaga dambe. Sida ay soo baxday, tani ma adka in la sameeyo. pixel-ka Javascript-ku waxa uu ka saaray habkii asalka ahaa ee maktabadda GA mid cusub, kaas oo ku koobiyay dhacdada nidaamkeena.
//'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);
});
});
}
Qaybta pixel-ka wax walba way ka fudud yihiin; waxay leedahay habab dhexdhexaad ah, mid ka mid ah oo aan isticmaalnay.
//'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.');
}
Marka laga soo tago koobiyeynta dhacdooyinka, waxaanu ku darnay awooda lagu diro json gardarrada:
//Отправка событий с произвольным 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'
});
Marka xigta, aan ka hadalno qaybta server-ka. Dhabarka dambe waa inuu aqbalaa codsiyada http, ka buuxi macluumaad dheeraad ah, tusaale ahaan, xogta geo (mahadsanid
//входящий 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"
}
Si kastaba ha ahaatee, arrays ayaa hadda si fudud loogu beddelaa xargaha sababtoo ah Dhammaan kaydadka xogta ee xidhiidhka ahi ma taageeraan meelaha soo noqnoqda. Waxa kale oo suurtogal ah in la beddelo magacyada goobta ama la tirtiro iyada oo la adeegsanayo xeerarka khariidaynta ikhtiyaariga ah. Waxay kuu oggolaanayaan inaad beddesho nidaamka xogta haddii loo baahdo ama u beddelo nooc xog oo kale. Tusaale ahaan, haddii goobta json ay ka kooban tahay xadhig leh timestampgaroonka_3_sub_goob_1_sub_sub_goob_1 laga bilaabo tusaalaha kore), ka dib si aad u abuurto goob ku jirta xogta xogta oo leh nooca timestamp, waxaad u baahan tahay inaad ku qorto xeerka khariidadda qaabeynta. Si kale haddii loo dhigo, nooca xogta ee goobta ayaa marka hore lagu go'aamiyaa qiimaha json, ka dibna nooca qaanuunka tuurista (haddii la habeeyo) ayaa lagu dabaqaa. Waxaan aqoonsannay 4 nooc oo xog ah: STRING, FLOAT64, INT64 iyo TIMESTAMP. Xeerarka qaabaynta iyo nooca wax shubista ayaa u eg sidan:
rules:
- "/field_1/subfield_1 -> " #правило удаления поля
- "/field_2/subfield_1 -> /field_10/subfield_1" #правило переноса поля
- "/field_3/subfield_1/subsubfield_1 -> (timestamp) /field_20" #правило переноса поля и приведения типа
Algorithm ee go'aaminta nooca xogta:
- u beddel qaab dhismeedka json qaab dhismeed siman
- go'aaminta nooca xogta ee goobaha qiyamka
- ku dhaqanka qariirada iyo nooca qawaaniinta
Ka dib qaab dhismeedka json ee soo socda:
{
"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"
}
}
qorshaha xogta ayaa la heli doonaa:
"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
Waxaan sidoo kale u maleynay in isticmaaluhu uu awood u leeyahay inuu habeeyo qaybinta ama u qaybiyo xogta database-ka iyadoo loo eegayo shuruudaha kale oo la hirgeliyay awoodda lagu dejiyo magaca miiska oo joogto ah ama
tableName: '{{.product_type}}_{{._timestamp.Format "2006_01"}}'
Si kastaba ha ahaatee, qaab dhismeedka dhacdooyinka soo socda ayaa isbedeli kara wakhtiga runtime. Waxaan hirgelinay algorithm si loo hubiyo faraqa u dhexeeya qaab dhismeedka miiska jira iyo qaab dhismeedka dhacdo soo socota. Haddii farqi la helo, shaxda waxaa lagu cusboonaysiin doonaa goobo cusub. Si tan loo sameeyo, isticmaal patch SQL weydiinta:
#Пример для Postgres
ALTER TABLE "schema"."table" ADD COLUMN new_column character varying
naqshadaha
Maxaad ugu baahan tahay inaad dhacdooyinka u qorto nidaamka faylka, oo aadan si toos ah ugu qorin kaydka xogta? Database-yada had iyo jeer si fiican uma shaqeeyaan marka la macaamilayo tiro badan oo la gelinayo (
Isha furan iyo qorshayaasha mustaqbalka
Waqtiga qaar, adeeggu wuxuu bilaabay inuu u ekaado badeecad dhamaystiran waxaanan go'aansanay inaan u sii deyno Isha Furan. Hadda, isdhexgalka Postgres, ClickHouse, BigQuery, Redshift, S3, Snowflake ayaa la hirgeliyay. Dhammaan isku xidhka waxa ay taageeraan labada dufcadood iyo hababka baahinta xogta. Taageero lagu daray codsiyada API
Nidaamka isdhexgalka hadda wuxuu u eg yahay sidan:
In kasta oo adeegga loo isticmaali karo si madax bannaan (tusaale ahaan adeegsiga Docker), waxaan sidoo kale haysanaa
→
→
→
Waan ku farxi doonaa haddii EventNative ay kaa caawiso xallinta dhibaatooyinkaaga!
Isticmaalayaasha diiwaangashan oo keliya ayaa ka qaybqaadan kara sahanka.
Waa maxay nidaamka ururinta tirakoobka ee shirkaddaada lagu isticmaalo?
-
48,0%Google Analytics12
-
4,0%Qaybta1
-
16,0%Mid kale (ku qor faallooyinka)4
-
32,0%Hirgeliyey adeeggaaga8
25 isticmaale ayaa u codeeyay. 6 isticmaale ayaa ka aamusay.
Source: www.habr.com