[{"data":1,"prerenderedAt":1592},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fru\u002Fdata\u002Fidentity-resolution-6-signalov-k-ednoj-identichnosti-klienta":13},{"i18nKey":4,"paths":5},"data-003-2026-07",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Fdata\u002Fidentity-resolution-6-signale-zu-einer-kundenidentitaet","\u002Fen\u002Fdata\u002Fidentity-resolution-unifying-6-signals-into-single-customer-identity","\u002Fes\u002Fdata\u002Fresolucion-de-identidad","\u002Ffr\u002Fdata\u002Fresolution-identite-6-signaux-un-client","\u002Fit\u002Fdata\u002Frisoluzione-identit","\u002Fru\u002Fdata\u002Fidentity-resolution-6-signalov-k-ednoj-identichnosti-klienta","\u002Ftr\u002Fdata\u002Fidentity-resolution-6-sinyalden-tek-musteri-kimligine",{"_path":11,"_dir":14,"_draft":15,"_partial":15,"_locale":16,"title":17,"description":18,"publishedAt":19,"modifiedAt":19,"category":14,"i18nKey":4,"tags":20,"readingTime":26,"author":27,"body":28,"_type":1586,"_id":1587,"_source":1588,"_file":1589,"_stem":1590,"_extension":1591},"data",false,"","Identity Resolution: От 6 Сигналов к Единой Идентичности Клиента","Hash matching, probabilistic linking и household clustering: как объединить разрозненные touchpoint'ы в единую идентичность? Архитектура production identity graph.","2026-07-03",[21,22,23,24,25],"identity-resolution","data-engineering","cdp","first-party-data","customer-identity",9,"Roibase",{"type":29,"children":30,"toc":1577},"root",[31,39,46,51,56,61,67,72,88,419,432,443,449,454,459,464,1204,1209,1219,1225,1230,1235,1280,1285,1387,1406,1415,1421,1426,1458,1468,1487,1500,1510,1520,1525,1531,1536,1541,1551,1557,1571],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","Cookie'ли исчезли, уровень входа ~8%, на каждом устройстве свой ID, на каждом канале — другой сигнал. Средний покупатель электронной коммерции оставляет 6 различных touchpoint'ов на пути к покупке, но платформы записывают их как 6 разных людей. Главная проблема маркетинговых данных: цифровая идентичность одного человека расколота на 6 фрагментов. Identity resolution — это дисциплина инженерного объединения этих фрагментов через hash matching, probabilistic linking и household clustering. Построить production identity graph значит балансировать не только технику, но и privacy, производительность и точность.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"что-такое-identity-resolution-и-почему-это-критично-сейчас",[44],{"type":37,"value":45},"Что такое Identity Resolution и почему это критично сейчас",{"type":32,"tag":33,"props":47,"children":48},{},[49],{"type":37,"value":50},"Identity resolution — это процесс объединения фрагментов сигналов из разных источников (email hash, device ID, browser fingerprint, IP, session cookie) в один профиль клиента. К 2026 году полный отказ Google от third-party cookie'ов в Chrome, ограничение хранилища Safari до 7 дней в ITP 2.3, low opt-in на IDFA (≈15%) после iOS 14.5 сделали кроссдевайсный tracking невозможным на основе платформенных технологий.",{"type":32,"tag":33,"props":52,"children":53},{},[54],{"type":37,"value":55},"Анализ Roibase за Q4 2025 на клиентах Shopify Plus показал: один и тот же пользователь генерирует в среднем 3,2 разных anonymous ID в треугольнике мобильный веб → десктоп → приложение. Когда клиент доходит до checkout'а и вводит email, только тогда происходит «склеивание». Но если вы не свяжете 4-5 touchpoint'ов до checkout'а с этим же человеком, ваша attribution модель развалится — побеждает последний клик, реальное путешествие невидимо. Identity resolution поэтому — это фундаментальный слой современного маркетингового измерения. Комбинация deterministic (точное совпадение: email, телефон) + probabilistic (вероятностное: комбинация IP+user-agent+timezone) методов достигает ~85% match accuracy.",{"type":32,"tag":33,"props":57,"children":58},{},[59],{"type":37,"value":60},"Перенесение этой дисциплины в production требует трёхслойной архитектуры: сбор сигналов (raw event stream), stitching идентичностей (graph engine), унификация профилей (CDP layer). На каждом слое балансируется compliance (TCF 2.2, GDPR, KVKK) и производительность (real-time vs batch).",{"type":32,"tag":40,"props":62,"children":64},{"id":63},"hash-matching-ядро-детерминистической-идентичности",[65],{"type":37,"value":66},"Hash Matching: Ядро Детерминистической Идентичности",{"type":32,"tag":33,"props":68,"children":69},{},[70],{"type":37,"value":71},"Hash matching — самый надёжный метод identity resolution: вы берёте email или номер телефона пользователя, хешируете его через SHA256 и сопоставляете с hash'ами в разных системах. Точность близка к 100%, потому что вероятность коллизии ничтожна — один и тот же hash = один и тот же email. Но есть 3 критических условия: (1) вы должны собрать PII у пользователя (заполнение формы, вход), (2) получить согласие (GDPR 6(1)(a) или legitimate interest), (3) стандартизировать hash'ирование между системами (lowercase + trim + UTF-8).",{"type":32,"tag":33,"props":73,"children":74},{},[75,77,86],{"type":37,"value":76},"В ",{"type":32,"tag":78,"props":79,"children":83},"a",{"href":80,"rel":81},"https:\u002F\u002Fwww.roibase.com.tr\u002Fru\u002Fretention-engineering-cdp",[82],"nofollow",[84],{"type":37,"value":85},"CDP & retention engineering",{"type":37,"value":87}," проектах Roibase используется такой pipeline:",{"type":32,"tag":89,"props":90,"children":94},"pre",{"className":91,"code":92,"language":93,"meta":16,"style":16},"language-sql shiki shiki-themes github-dark","-- Стандартизация email hash в BigQuery\nCREATE OR REPLACE FUNCTION `project.dataset.hash_email`(email STRING)\nRETURNS STRING AS (\n  TO_HEX(SHA256(LOWER(TRIM(email))))\n);\n\n-- Обогащение event таблицы email hash'ом\nSELECT\n  event_timestamp,\n  user_pseudo_id,\n  `project.dataset.hash_email`(user_properties.email) AS email_hash,\n  device.category,\n  traffic_source.medium\nFROM `analytics_123456789.events_*`\nWHERE _TABLE_SUFFIX BETWEEN '20260601' AND '20260630'\n  AND user_properties.email IS NOT NULL;\n","sql",[95],{"type":32,"tag":96,"props":97,"children":98},"code",{"__ignoreMap":16},[99,111,148,172,202,211,221,230,239,247,256,298,321,339,353,387],{"type":32,"tag":100,"props":101,"children":104},"span",{"class":102,"line":103},"line",1,[105],{"type":32,"tag":100,"props":106,"children":108},{"style":107},"--shiki-default:#6A737D",[109],{"type":37,"value":110},"-- Стандартизация email hash в BigQuery\n",{"type":32,"tag":100,"props":112,"children":114},{"class":102,"line":113},2,[115,121,126,131,136,142],{"type":32,"tag":100,"props":116,"children":118},{"style":117},"--shiki-default:#F97583",[119],{"type":37,"value":120},"CREATE",{"type":32,"tag":100,"props":122,"children":123},{"style":117},[124],{"type":37,"value":125}," OR",{"type":32,"tag":100,"props":127,"children":128},{"style":117},[129],{"type":37,"value":130}," REPLACE",{"type":32,"tag":100,"props":132,"children":133},{"style":117},[134],{"type":37,"value":135}," FUNCTION",{"type":32,"tag":100,"props":137,"children":139},{"style":138},"--shiki-default:#9ECBFF",[140],{"type":37,"value":141}," `project.dataset.hash_email`",{"type":32,"tag":100,"props":143,"children":145},{"style":144},"--shiki-default:#E1E4E8",[146],{"type":37,"value":147},"(email STRING)\n",{"type":32,"tag":100,"props":149,"children":151},{"class":102,"line":150},3,[152,157,162,167],{"type":32,"tag":100,"props":153,"children":154},{"style":117},[155],{"type":37,"value":156},"RETURNS",{"type":32,"tag":100,"props":158,"children":159},{"style":144},[160],{"type":37,"value":161}," STRING ",{"type":32,"tag":100,"props":163,"children":164},{"style":117},[165],{"type":37,"value":166},"AS",{"type":32,"tag":100,"props":168,"children":169},{"style":144},[170],{"type":37,"value":171}," (\n",{"type":32,"tag":100,"props":173,"children":175},{"class":102,"line":174},4,[176,181,187,192,197],{"type":32,"tag":100,"props":177,"children":178},{"style":144},[179],{"type":37,"value":180},"  TO_HEX(SHA256(",{"type":32,"tag":100,"props":182,"children":184},{"style":183},"--shiki-default:#79B8FF",[185],{"type":37,"value":186},"LOWER",{"type":32,"tag":100,"props":188,"children":189},{"style":144},[190],{"type":37,"value":191},"(",{"type":32,"tag":100,"props":193,"children":194},{"style":183},[195],{"type":37,"value":196},"TRIM",{"type":32,"tag":100,"props":198,"children":199},{"style":144},[200],{"type":37,"value":201},"(email))))\n",{"type":32,"tag":100,"props":203,"children":205},{"class":102,"line":204},5,[206],{"type":32,"tag":100,"props":207,"children":208},{"style":144},[209],{"type":37,"value":210},");\n",{"type":32,"tag":100,"props":212,"children":214},{"class":102,"line":213},6,[215],{"type":32,"tag":100,"props":216,"children":218},{"emptyLinePlaceholder":217},true,[219],{"type":37,"value":220},"\n",{"type":32,"tag":100,"props":222,"children":224},{"class":102,"line":223},7,[225],{"type":32,"tag":100,"props":226,"children":227},{"style":107},[228],{"type":37,"value":229},"-- Обогащение event таблицы email hash'ом\n",{"type":32,"tag":100,"props":231,"children":233},{"class":102,"line":232},8,[234],{"type":32,"tag":100,"props":235,"children":236},{"style":117},[237],{"type":37,"value":238},"SELECT\n",{"type":32,"tag":100,"props":240,"children":241},{"class":102,"line":26},[242],{"type":32,"tag":100,"props":243,"children":244},{"style":144},[245],{"type":37,"value":246},"  event_timestamp,\n",{"type":32,"tag":100,"props":248,"children":250},{"class":102,"line":249},10,[251],{"type":32,"tag":100,"props":252,"children":253},{"style":144},[254],{"type":37,"value":255},"  user_pseudo_id,\n",{"type":32,"tag":100,"props":257,"children":259},{"class":102,"line":258},11,[260,265,269,274,279,284,289,293],{"type":32,"tag":100,"props":261,"children":262},{"style":138},[263],{"type":37,"value":264},"  `project.dataset.hash_email`",{"type":32,"tag":100,"props":266,"children":267},{"style":144},[268],{"type":37,"value":191},{"type":32,"tag":100,"props":270,"children":271},{"style":183},[272],{"type":37,"value":273},"user_properties",{"type":32,"tag":100,"props":275,"children":276},{"style":144},[277],{"type":37,"value":278},".",{"type":32,"tag":100,"props":280,"children":281},{"style":183},[282],{"type":37,"value":283},"email",{"type":32,"tag":100,"props":285,"children":286},{"style":144},[287],{"type":37,"value":288},") ",{"type":32,"tag":100,"props":290,"children":291},{"style":117},[292],{"type":37,"value":166},{"type":32,"tag":100,"props":294,"children":295},{"style":144},[296],{"type":37,"value":297}," email_hash,\n",{"type":32,"tag":100,"props":299,"children":301},{"class":102,"line":300},12,[302,307,311,316],{"type":32,"tag":100,"props":303,"children":304},{"style":183},[305],{"type":37,"value":306},"  device",{"type":32,"tag":100,"props":308,"children":309},{"style":144},[310],{"type":37,"value":278},{"type":32,"tag":100,"props":312,"children":313},{"style":183},[314],{"type":37,"value":315},"category",{"type":32,"tag":100,"props":317,"children":318},{"style":144},[319],{"type":37,"value":320},",\n",{"type":32,"tag":100,"props":322,"children":324},{"class":102,"line":323},13,[325,330,334],{"type":32,"tag":100,"props":326,"children":327},{"style":183},[328],{"type":37,"value":329},"  traffic_source",{"type":32,"tag":100,"props":331,"children":332},{"style":144},[333],{"type":37,"value":278},{"type":32,"tag":100,"props":335,"children":336},{"style":183},[337],{"type":37,"value":338},"medium\n",{"type":32,"tag":100,"props":340,"children":342},{"class":102,"line":341},14,[343,348],{"type":32,"tag":100,"props":344,"children":345},{"style":117},[346],{"type":37,"value":347},"FROM",{"type":32,"tag":100,"props":349,"children":350},{"style":138},[351],{"type":37,"value":352}," `analytics_123456789.events_*`\n",{"type":32,"tag":100,"props":354,"children":356},{"class":102,"line":355},15,[357,362,367,372,377,382],{"type":32,"tag":100,"props":358,"children":359},{"style":117},[360],{"type":37,"value":361},"WHERE",{"type":32,"tag":100,"props":363,"children":364},{"style":144},[365],{"type":37,"value":366}," _TABLE_SUFFIX ",{"type":32,"tag":100,"props":368,"children":369},{"style":117},[370],{"type":37,"value":371},"BETWEEN",{"type":32,"tag":100,"props":373,"children":374},{"style":138},[375],{"type":37,"value":376}," '20260601'",{"type":32,"tag":100,"props":378,"children":379},{"style":117},[380],{"type":37,"value":381}," AND",{"type":32,"tag":100,"props":383,"children":384},{"style":138},[385],{"type":37,"value":386}," '20260630'\n",{"type":32,"tag":100,"props":388,"children":390},{"class":102,"line":389},16,[391,396,401,405,409,414],{"type":32,"tag":100,"props":392,"children":393},{"style":117},[394],{"type":37,"value":395},"  AND",{"type":32,"tag":100,"props":397,"children":398},{"style":183},[399],{"type":37,"value":400}," user_properties",{"type":32,"tag":100,"props":402,"children":403},{"style":144},[404],{"type":37,"value":278},{"type":32,"tag":100,"props":406,"children":407},{"style":183},[408],{"type":37,"value":283},{"type":32,"tag":100,"props":410,"children":411},{"style":117},[412],{"type":37,"value":413}," IS NOT NULL",{"type":32,"tag":100,"props":415,"children":416},{"style":144},[417],{"type":37,"value":418},";\n",{"type":32,"tag":33,"props":420,"children":421},{},[422,424,430],{"type":37,"value":423},"Если вы запишете этот hash'в Segment или mParticle, CDP объединит события с разных устройств под одним ",{"type":32,"tag":96,"props":425,"children":427},{"className":426},[],[428],{"type":37,"value":429},"email_hash",{"type":37,"value":431},". Сценарий: пользователь в понедельник на десктопе подписывается на рассылку (собран email), в среду анонимно гуляет по мобилю, в четверг на десктопе снова входит и покупает. Без email hash'а — 3 разных user_id; с hash'ом — 1 профиль, 3 session'а, видно весь journey.",{"type":32,"tag":33,"props":433,"children":434},{},[435,441],{"type":32,"tag":436,"props":437,"children":438},"strong",{},[439],{"type":37,"value":440},"Компромисс:",{"type":37,"value":442}," Hash matching работает только для authenticated user'ов. На сайтах электронной коммерции уровень входа 8-12%, то есть 88-92% трафика остаются анонимными. На этом сегменте включаются probabilistic методы.",{"type":32,"tag":40,"props":444,"children":446},{"id":445},"probabilistic-linking-сопоставление-сигналов-статистически",[447],{"type":37,"value":448},"Probabilistic Linking: Сопоставление Сигналов Статистически",{"type":32,"tag":33,"props":450,"children":451},{},[452],{"type":37,"value":453},"Probabilistic identity resolution использует комбинацию различных сигналов для вычисления score: «вероятно, это один и тот же человек». IP адрес + user-agent + timezone + паттерны поведения в session'е объединяются, и при confidence threshold'е >80% два session'а связываются в одну identity. Точность не такая высокая как deterministic (false positive 5-10%), но охватывает анонимный трафик.",{"type":32,"tag":33,"props":455,"children":456},{},[457],{"type":37,"value":458},"Логика алгоритма: каждый сигнал имеет вес. Стабильный IP (дом\u002Fофис) → +0.3, редкая комбинация user-agent+timezone → +0.25, паттерн поведения в session'е совпадает с предыдущим на 90% → +0.4. Итого score >0.8 → два session'а связаны в одной identity node'е. Это не реал-тайм — расчёт происходит batch job'ом 1-2 раза в день.",{"type":32,"tag":33,"props":460,"children":461},{},[462],{"type":37,"value":463},"В gaming vertical'е Roibase применяет такой probabilistic pipeline:",{"type":32,"tag":89,"props":465,"children":467},{"className":91,"code":466,"language":93,"meta":16,"style":16},"-- Создание fingerprint'а (упрощенно)\nWITH fingerprints AS (\n  SELECT\n    user_pseudo_id,\n    event_date,\n    NET.IP_TO_STRING(NET.SAFE_IP_FROM_STRING(user_first_touch_timestamp)) AS ip_prefix,\n    device.operating_system,\n    device.browser,\n    geo.country,\n    ARRAY_AGG(page_location ORDER BY event_timestamp LIMIT 5) AS page_sequence\n  FROM `analytics_123456789.events_*`\n  WHERE _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', CURRENT_DATE())\n  GROUP BY 1,2,3,4,5,6\n)\nSELECT\n  a.user_pseudo_id AS user_a,\n  b.user_pseudo_id AS user_b,\n  -- Jaccard similarity для последовательности страниц\n  (SELECT COUNT(*) FROM UNNEST(a.page_sequence) AS p WHERE p IN UNNEST(b.page_sequence)) \n    \u002F (ARRAY_LENGTH(a.page_sequence) + ARRAY_LENGTH(b.page_sequence)) AS similarity_score\nFROM fingerprints a\nJOIN fingerprints b\n  ON a.ip_prefix = b.ip_prefix\n  AND a.operating_system = b.operating_system\n  AND a.user_pseudo_id != b.user_pseudo_id\nWHERE similarity_score > 0.75;\n",[468],{"type":32,"tag":96,"props":469,"children":470},{"__ignoreMap":16},[471,479,500,508,516,524,573,594,614,635,676,688,720,779,787,794,821,847,856,958,1024,1037,1051,1093,1130,1168],{"type":32,"tag":100,"props":472,"children":473},{"class":102,"line":103},[474],{"type":32,"tag":100,"props":475,"children":476},{"style":107},[477],{"type":37,"value":478},"-- Создание fingerprint'а (упрощенно)\n",{"type":32,"tag":100,"props":480,"children":481},{"class":102,"line":113},[482,487,492,496],{"type":32,"tag":100,"props":483,"children":484},{"style":117},[485],{"type":37,"value":486},"WITH",{"type":32,"tag":100,"props":488,"children":489},{"style":144},[490],{"type":37,"value":491}," fingerprints ",{"type":32,"tag":100,"props":493,"children":494},{"style":117},[495],{"type":37,"value":166},{"type":32,"tag":100,"props":497,"children":498},{"style":144},[499],{"type":37,"value":171},{"type":32,"tag":100,"props":501,"children":502},{"class":102,"line":150},[503],{"type":32,"tag":100,"props":504,"children":505},{"style":117},[506],{"type":37,"value":507},"  SELECT\n",{"type":32,"tag":100,"props":509,"children":510},{"class":102,"line":174},[511],{"type":32,"tag":100,"props":512,"children":513},{"style":144},[514],{"type":37,"value":515},"    user_pseudo_id,\n",{"type":32,"tag":100,"props":517,"children":518},{"class":102,"line":204},[519],{"type":32,"tag":100,"props":520,"children":521},{"style":144},[522],{"type":37,"value":523},"    event_date,\n",{"type":32,"tag":100,"props":525,"children":526},{"class":102,"line":213},[527,532,536,541,545,550,554,559,564,568],{"type":32,"tag":100,"props":528,"children":529},{"style":183},[530],{"type":37,"value":531},"    NET",{"type":32,"tag":100,"props":533,"children":534},{"style":144},[535],{"type":37,"value":278},{"type":32,"tag":100,"props":537,"children":538},{"style":183},[539],{"type":37,"value":540},"IP_TO_STRING",{"type":32,"tag":100,"props":542,"children":543},{"style":144},[544],{"type":37,"value":191},{"type":32,"tag":100,"props":546,"children":547},{"style":183},[548],{"type":37,"value":549},"NET",{"type":32,"tag":100,"props":551,"children":552},{"style":144},[553],{"type":37,"value":278},{"type":32,"tag":100,"props":555,"children":556},{"style":183},[557],{"type":37,"value":558},"SAFE_IP_FROM_STRING",{"type":32,"tag":100,"props":560,"children":561},{"style":144},[562],{"type":37,"value":563},"(user_first_touch_timestamp)) ",{"type":32,"tag":100,"props":565,"children":566},{"style":117},[567],{"type":37,"value":166},{"type":32,"tag":100,"props":569,"children":570},{"style":144},[571],{"type":37,"value":572}," ip_prefix,\n",{"type":32,"tag":100,"props":574,"children":575},{"class":102,"line":223},[576,581,585,590],{"type":32,"tag":100,"props":577,"children":578},{"style":183},[579],{"type":37,"value":580},"    device",{"type":32,"tag":100,"props":582,"children":583},{"style":144},[584],{"type":37,"value":278},{"type":32,"tag":100,"props":586,"children":587},{"style":183},[588],{"type":37,"value":589},"operating_system",{"type":32,"tag":100,"props":591,"children":592},{"style":144},[593],{"type":37,"value":320},{"type":32,"tag":100,"props":595,"children":596},{"class":102,"line":232},[597,601,605,610],{"type":32,"tag":100,"props":598,"children":599},{"style":183},[600],{"type":37,"value":580},{"type":32,"tag":100,"props":602,"children":603},{"style":144},[604],{"type":37,"value":278},{"type":32,"tag":100,"props":606,"children":607},{"style":183},[608],{"type":37,"value":609},"browser",{"type":32,"tag":100,"props":611,"children":612},{"style":144},[613],{"type":37,"value":320},{"type":32,"tag":100,"props":615,"children":616},{"class":102,"line":26},[617,622,626,631],{"type":32,"tag":100,"props":618,"children":619},{"style":183},[620],{"type":37,"value":621},"    geo",{"type":32,"tag":100,"props":623,"children":624},{"style":144},[625],{"type":37,"value":278},{"type":32,"tag":100,"props":627,"children":628},{"style":183},[629],{"type":37,"value":630},"country",{"type":32,"tag":100,"props":632,"children":633},{"style":144},[634],{"type":37,"value":320},{"type":32,"tag":100,"props":636,"children":637},{"class":102,"line":249},[638,643,648,653,658,663,667,671],{"type":32,"tag":100,"props":639,"children":640},{"style":144},[641],{"type":37,"value":642},"    ARRAY_AGG(page_location ",{"type":32,"tag":100,"props":644,"children":645},{"style":117},[646],{"type":37,"value":647},"ORDER BY",{"type":32,"tag":100,"props":649,"children":650},{"style":144},[651],{"type":37,"value":652}," event_timestamp ",{"type":32,"tag":100,"props":654,"children":655},{"style":117},[656],{"type":37,"value":657},"LIMIT",{"type":32,"tag":100,"props":659,"children":660},{"style":183},[661],{"type":37,"value":662}," 5",{"type":32,"tag":100,"props":664,"children":665},{"style":144},[666],{"type":37,"value":288},{"type":32,"tag":100,"props":668,"children":669},{"style":117},[670],{"type":37,"value":166},{"type":32,"tag":100,"props":672,"children":673},{"style":144},[674],{"type":37,"value":675}," page_sequence\n",{"type":32,"tag":100,"props":677,"children":678},{"class":102,"line":258},[679,684],{"type":32,"tag":100,"props":680,"children":681},{"style":117},[682],{"type":37,"value":683},"  FROM",{"type":32,"tag":100,"props":685,"children":686},{"style":138},[687],{"type":37,"value":352},{"type":32,"tag":100,"props":689,"children":690},{"class":102,"line":300},[691,696,700,705,710,715],{"type":32,"tag":100,"props":692,"children":693},{"style":117},[694],{"type":37,"value":695},"  WHERE",{"type":32,"tag":100,"props":697,"children":698},{"style":144},[699],{"type":37,"value":366},{"type":32,"tag":100,"props":701,"children":702},{"style":117},[703],{"type":37,"value":704},"=",{"type":32,"tag":100,"props":706,"children":707},{"style":144},[708],{"type":37,"value":709}," FORMAT_DATE(",{"type":32,"tag":100,"props":711,"children":712},{"style":138},[713],{"type":37,"value":714},"'%Y%m%d'",{"type":32,"tag":100,"props":716,"children":717},{"style":144},[718],{"type":37,"value":719},", CURRENT_DATE())\n",{"type":32,"tag":100,"props":721,"children":722},{"class":102,"line":323},[723,728,733,738,743,747,752,756,761,765,770,774],{"type":32,"tag":100,"props":724,"children":725},{"style":117},[726],{"type":37,"value":727},"  GROUP BY",{"type":32,"tag":100,"props":729,"children":730},{"style":183},[731],{"type":37,"value":732}," 1",{"type":32,"tag":100,"props":734,"children":735},{"style":144},[736],{"type":37,"value":737},",",{"type":32,"tag":100,"props":739,"children":740},{"style":183},[741],{"type":37,"value":742},"2",{"type":32,"tag":100,"props":744,"children":745},{"style":144},[746],{"type":37,"value":737},{"type":32,"tag":100,"props":748,"children":749},{"style":183},[750],{"type":37,"value":751},"3",{"type":32,"tag":100,"props":753,"children":754},{"style":144},[755],{"type":37,"value":737},{"type":32,"tag":100,"props":757,"children":758},{"style":183},[759],{"type":37,"value":760},"4",{"type":32,"tag":100,"props":762,"children":763},{"style":144},[764],{"type":37,"value":737},{"type":32,"tag":100,"props":766,"children":767},{"style":183},[768],{"type":37,"value":769},"5",{"type":32,"tag":100,"props":771,"children":772},{"style":144},[773],{"type":37,"value":737},{"type":32,"tag":100,"props":775,"children":776},{"style":183},[777],{"type":37,"value":778},"6\n",{"type":32,"tag":100,"props":780,"children":781},{"class":102,"line":341},[782],{"type":32,"tag":100,"props":783,"children":784},{"style":144},[785],{"type":37,"value":786},")\n",{"type":32,"tag":100,"props":788,"children":789},{"class":102,"line":355},[790],{"type":32,"tag":100,"props":791,"children":792},{"style":117},[793],{"type":37,"value":238},{"type":32,"tag":100,"props":795,"children":796},{"class":102,"line":389},[797,802,806,811,816],{"type":32,"tag":100,"props":798,"children":799},{"style":183},[800],{"type":37,"value":801},"  a",{"type":32,"tag":100,"props":803,"children":804},{"style":144},[805],{"type":37,"value":278},{"type":32,"tag":100,"props":807,"children":808},{"style":183},[809],{"type":37,"value":810},"user_pseudo_id",{"type":32,"tag":100,"props":812,"children":813},{"style":117},[814],{"type":37,"value":815}," AS",{"type":32,"tag":100,"props":817,"children":818},{"style":144},[819],{"type":37,"value":820}," user_a,\n",{"type":32,"tag":100,"props":822,"children":824},{"class":102,"line":823},17,[825,830,834,838,842],{"type":32,"tag":100,"props":826,"children":827},{"style":183},[828],{"type":37,"value":829},"  b",{"type":32,"tag":100,"props":831,"children":832},{"style":144},[833],{"type":37,"value":278},{"type":32,"tag":100,"props":835,"children":836},{"style":183},[837],{"type":37,"value":810},{"type":32,"tag":100,"props":839,"children":840},{"style":117},[841],{"type":37,"value":815},{"type":32,"tag":100,"props":843,"children":844},{"style":144},[845],{"type":37,"value":846}," user_b,\n",{"type":32,"tag":100,"props":848,"children":850},{"class":102,"line":849},18,[851],{"type":32,"tag":100,"props":852,"children":853},{"style":107},[854],{"type":37,"value":855},"  -- Jaccard similarity для последовательности страниц\n",{"type":32,"tag":100,"props":857,"children":859},{"class":102,"line":858},19,[860,865,870,875,879,884,888,892,897,901,905,910,914,918,923,927,931,936,940,945,949,953],{"type":32,"tag":100,"props":861,"children":862},{"style":144},[863],{"type":37,"value":864},"  (",{"type":32,"tag":100,"props":866,"children":867},{"style":117},[868],{"type":37,"value":869},"SELECT",{"type":32,"tag":100,"props":871,"children":872},{"style":183},[873],{"type":37,"value":874}," COUNT",{"type":32,"tag":100,"props":876,"children":877},{"style":144},[878],{"type":37,"value":191},{"type":32,"tag":100,"props":880,"children":881},{"style":117},[882],{"type":37,"value":883},"*",{"type":32,"tag":100,"props":885,"children":886},{"style":144},[887],{"type":37,"value":288},{"type":32,"tag":100,"props":889,"children":890},{"style":117},[891],{"type":37,"value":347},{"type":32,"tag":100,"props":893,"children":894},{"style":144},[895],{"type":37,"value":896}," UNNEST(",{"type":32,"tag":100,"props":898,"children":899},{"style":183},[900],{"type":37,"value":78},{"type":32,"tag":100,"props":902,"children":903},{"style":144},[904],{"type":37,"value":278},{"type":32,"tag":100,"props":906,"children":907},{"style":183},[908],{"type":37,"value":909},"page_sequence",{"type":32,"tag":100,"props":911,"children":912},{"style":144},[913],{"type":37,"value":288},{"type":32,"tag":100,"props":915,"children":916},{"style":117},[917],{"type":37,"value":166},{"type":32,"tag":100,"props":919,"children":920},{"style":144},[921],{"type":37,"value":922}," p ",{"type":32,"tag":100,"props":924,"children":925},{"style":117},[926],{"type":37,"value":361},{"type":32,"tag":100,"props":928,"children":929},{"style":144},[930],{"type":37,"value":922},{"type":32,"tag":100,"props":932,"children":933},{"style":117},[934],{"type":37,"value":935},"IN",{"type":32,"tag":100,"props":937,"children":938},{"style":144},[939],{"type":37,"value":896},{"type":32,"tag":100,"props":941,"children":942},{"style":183},[943],{"type":37,"value":944},"b",{"type":32,"tag":100,"props":946,"children":947},{"style":144},[948],{"type":37,"value":278},{"type":32,"tag":100,"props":950,"children":951},{"style":183},[952],{"type":37,"value":909},{"type":32,"tag":100,"props":954,"children":955},{"style":144},[956],{"type":37,"value":957},")) \n",{"type":32,"tag":100,"props":959,"children":961},{"class":102,"line":960},20,[962,967,972,976,980,984,988,993,998,1002,1006,1010,1015,1019],{"type":32,"tag":100,"props":963,"children":964},{"style":117},[965],{"type":37,"value":966},"    \u002F",{"type":32,"tag":100,"props":968,"children":969},{"style":144},[970],{"type":37,"value":971}," (ARRAY_LENGTH(",{"type":32,"tag":100,"props":973,"children":974},{"style":183},[975],{"type":37,"value":78},{"type":32,"tag":100,"props":977,"children":978},{"style":144},[979],{"type":37,"value":278},{"type":32,"tag":100,"props":981,"children":982},{"style":183},[983],{"type":37,"value":909},{"type":32,"tag":100,"props":985,"children":986},{"style":144},[987],{"type":37,"value":288},{"type":32,"tag":100,"props":989,"children":990},{"style":117},[991],{"type":37,"value":992},"+",{"type":32,"tag":100,"props":994,"children":995},{"style":144},[996],{"type":37,"value":997}," ARRAY_LENGTH(",{"type":32,"tag":100,"props":999,"children":1000},{"style":183},[1001],{"type":37,"value":944},{"type":32,"tag":100,"props":1003,"children":1004},{"style":144},[1005],{"type":37,"value":278},{"type":32,"tag":100,"props":1007,"children":1008},{"style":183},[1009],{"type":37,"value":909},{"type":32,"tag":100,"props":1011,"children":1012},{"style":144},[1013],{"type":37,"value":1014},")) ",{"type":32,"tag":100,"props":1016,"children":1017},{"style":117},[1018],{"type":37,"value":166},{"type":32,"tag":100,"props":1020,"children":1021},{"style":144},[1022],{"type":37,"value":1023}," similarity_score\n",{"type":32,"tag":100,"props":1025,"children":1027},{"class":102,"line":1026},21,[1028,1032],{"type":32,"tag":100,"props":1029,"children":1030},{"style":117},[1031],{"type":37,"value":347},{"type":32,"tag":100,"props":1033,"children":1034},{"style":144},[1035],{"type":37,"value":1036}," fingerprints a\n",{"type":32,"tag":100,"props":1038,"children":1040},{"class":102,"line":1039},22,[1041,1046],{"type":32,"tag":100,"props":1042,"children":1043},{"style":117},[1044],{"type":37,"value":1045},"JOIN",{"type":32,"tag":100,"props":1047,"children":1048},{"style":144},[1049],{"type":37,"value":1050}," fingerprints b\n",{"type":32,"tag":100,"props":1052,"children":1054},{"class":102,"line":1053},23,[1055,1060,1065,1069,1074,1079,1084,1088],{"type":32,"tag":100,"props":1056,"children":1057},{"style":117},[1058],{"type":37,"value":1059},"  ON",{"type":32,"tag":100,"props":1061,"children":1062},{"style":183},[1063],{"type":37,"value":1064}," a",{"type":32,"tag":100,"props":1066,"children":1067},{"style":144},[1068],{"type":37,"value":278},{"type":32,"tag":100,"props":1070,"children":1071},{"style":183},[1072],{"type":37,"value":1073},"ip_prefix",{"type":32,"tag":100,"props":1075,"children":1076},{"style":117},[1077],{"type":37,"value":1078}," =",{"type":32,"tag":100,"props":1080,"children":1081},{"style":183},[1082],{"type":37,"value":1083}," b",{"type":32,"tag":100,"props":1085,"children":1086},{"style":144},[1087],{"type":37,"value":278},{"type":32,"tag":100,"props":1089,"children":1090},{"style":183},[1091],{"type":37,"value":1092},"ip_prefix\n",{"type":32,"tag":100,"props":1094,"children":1096},{"class":102,"line":1095},24,[1097,1101,1105,1109,1113,1117,1121,1125],{"type":32,"tag":100,"props":1098,"children":1099},{"style":117},[1100],{"type":37,"value":395},{"type":32,"tag":100,"props":1102,"children":1103},{"style":183},[1104],{"type":37,"value":1064},{"type":32,"tag":100,"props":1106,"children":1107},{"style":144},[1108],{"type":37,"value":278},{"type":32,"tag":100,"props":1110,"children":1111},{"style":183},[1112],{"type":37,"value":589},{"type":32,"tag":100,"props":1114,"children":1115},{"style":117},[1116],{"type":37,"value":1078},{"type":32,"tag":100,"props":1118,"children":1119},{"style":183},[1120],{"type":37,"value":1083},{"type":32,"tag":100,"props":1122,"children":1123},{"style":144},[1124],{"type":37,"value":278},{"type":32,"tag":100,"props":1126,"children":1127},{"style":183},[1128],{"type":37,"value":1129},"operating_system\n",{"type":32,"tag":100,"props":1131,"children":1133},{"class":102,"line":1132},25,[1134,1138,1142,1146,1150,1155,1159,1163],{"type":32,"tag":100,"props":1135,"children":1136},{"style":117},[1137],{"type":37,"value":395},{"type":32,"tag":100,"props":1139,"children":1140},{"style":183},[1141],{"type":37,"value":1064},{"type":32,"tag":100,"props":1143,"children":1144},{"style":144},[1145],{"type":37,"value":278},{"type":32,"tag":100,"props":1147,"children":1148},{"style":183},[1149],{"type":37,"value":810},{"type":32,"tag":100,"props":1151,"children":1152},{"style":117},[1153],{"type":37,"value":1154}," !=",{"type":32,"tag":100,"props":1156,"children":1157},{"style":183},[1158],{"type":37,"value":1083},{"type":32,"tag":100,"props":1160,"children":1161},{"style":144},[1162],{"type":37,"value":278},{"type":32,"tag":100,"props":1164,"children":1165},{"style":183},[1166],{"type":37,"value":1167},"user_pseudo_id\n",{"type":32,"tag":100,"props":1169,"children":1171},{"class":102,"line":1170},26,[1172,1176,1181,1186,1191,1195,1200],{"type":32,"tag":100,"props":1173,"children":1174},{"style":117},[1175],{"type":37,"value":361},{"type":32,"tag":100,"props":1177,"children":1178},{"style":144},[1179],{"type":37,"value":1180}," similarity_score ",{"type":32,"tag":100,"props":1182,"children":1183},{"style":117},[1184],{"type":37,"value":1185},">",{"type":32,"tag":100,"props":1187,"children":1188},{"style":183},[1189],{"type":37,"value":1190}," 0",{"type":32,"tag":100,"props":1192,"children":1193},{"style":144},[1194],{"type":37,"value":278},{"type":32,"tag":100,"props":1196,"children":1197},{"style":183},[1198],{"type":37,"value":1199},"75",{"type":32,"tag":100,"props":1201,"children":1202},{"style":144},[1203],{"type":37,"value":418},{"type":32,"tag":33,"props":1205,"children":1206},{},[1207],{"type":37,"value":1208},"Этот запрос находит пользователей с одинаковой IP + OS, у которых последовательность страниц совпадает на 75%+. В production эти score'ы записываются в graph database (Neo4j или BigQuery graph table) как edge weight.",{"type":32,"tag":33,"props":1210,"children":1211},{},[1212,1217],{"type":32,"tag":436,"props":1213,"children":1214},{},[1215],{"type":37,"value":1216},"Риск:",{"type":37,"value":1218}," Shared IP (кафе, офис) или массовые user-agent'ы (iPhone 15 + Safari) генерируют высокий false positive. Поэтому household-level resolution обрабатывается отдельным слоем.",{"type":32,"tag":40,"props":1220,"children":1222},{"id":1221},"household-identity-отделение-разных-людей-на-одной-сети",[1223],{"type":37,"value":1224},"Household Identity: Отделение Разных Людей на Одной Сети",{"type":32,"tag":33,"props":1226,"children":1227},{},[1228],{"type":37,"value":1229},"Household clustering решает проблему: несколько человек (мама, папа, ребёнок) делят одно соединение Wi-Fi. Probabilistic matching может объединить их в один профиль, что неправильно. Чтобы этого избежать, смотрят на behavioral divergence: предпочтение категорий товаров, время session'а (утро 10:00 vs ночь 23:00), скорость скролла, паттерны ввода (биометрия, но GDPR-чувствительно).",{"type":32,"tag":33,"props":1231,"children":1232},{},[1233],{"type":37,"value":1234},"В telecom vertical'е Roibase разработала модель:",{"type":32,"tag":1236,"props":1237,"children":1238},"ol",{},[1239,1250,1260,1270],{"type":32,"tag":1240,"props":1241,"children":1242},"li",{},[1243,1248],{"type":32,"tag":436,"props":1244,"children":1245},{},[1246],{"type":37,"value":1247},"IP-level clustering:",{"type":37,"value":1249}," Все session'ы с одного IP объединяются в один «household node».",{"type":32,"tag":1240,"props":1251,"children":1252},{},[1253,1258],{"type":32,"tag":436,"props":1254,"children":1255},{},[1256],{"type":37,"value":1257},"Behavioral segmentation:",{"type":37,"value":1259}," Каждый session превращается в feature vector (product_category, avg_session_duration, bounce_rate, hour_of_day).",{"type":32,"tag":1240,"props":1261,"children":1262},{},[1263,1268],{"type":32,"tag":436,"props":1264,"children":1265},{},[1266],{"type":37,"value":1267},"K-means clustering:",{"type":37,"value":1269}," Внутри household'а образуются 2-3 кластера — каждый соответствует «sub-identity».",{"type":32,"tag":1240,"props":1271,"children":1272},{},[1273,1278],{"type":32,"tag":436,"props":1274,"children":1275},{},[1276],{"type":37,"value":1277},"Validation:",{"type":37,"value":1279}," Когда приходит email hash, sub-identity подтверждается или пересчитывается.",{"type":32,"tag":33,"props":1281,"children":1282},{},[1283],{"type":37,"value":1284},"Пример структуры:",{"type":32,"tag":1286,"props":1287,"children":1288},"table",{},[1289,1322],{"type":32,"tag":1290,"props":1291,"children":1292},"thead",{},[1293],{"type":32,"tag":1294,"props":1295,"children":1296},"tr",{},[1297,1303,1308,1313,1318],{"type":32,"tag":1298,"props":1299,"children":1300},"th",{},[1301],{"type":37,"value":1302},"household_id",{"type":32,"tag":1298,"props":1304,"children":1305},{},[1306],{"type":37,"value":1307},"sub_identity",{"type":32,"tag":1298,"props":1309,"children":1310},{},[1311],{"type":37,"value":1312},"feature_vector",{"type":32,"tag":1298,"props":1314,"children":1315},{},[1316],{"type":37,"value":1317},"last_seen",{"type":32,"tag":1298,"props":1319,"children":1320},{},[1321],{"type":37,"value":429},{"type":32,"tag":1323,"props":1324,"children":1325},"tbody",{},[1326,1358],{"type":32,"tag":1294,"props":1327,"children":1328},{},[1329,1335,1340,1348,1353],{"type":32,"tag":1330,"props":1331,"children":1332},"td",{},[1333],{"type":37,"value":1334},"hh_abc123",{"type":32,"tag":1330,"props":1336,"children":1337},{},[1338],{"type":37,"value":1339},"sub_1",{"type":32,"tag":1330,"props":1341,"children":1342},{},[1343],{"type":32,"tag":100,"props":1344,"children":1345},{},[1346],{"type":37,"value":1347},"fashion, 18min, 0900-1200",{"type":32,"tag":1330,"props":1349,"children":1350},{},[1351],{"type":37,"value":1352},"2026-07-02",{"type":32,"tag":1330,"props":1354,"children":1355},{},[1356],{"type":37,"value":1357},"hash_x",{"type":32,"tag":1294,"props":1359,"children":1360},{},[1361,1365,1370,1378,1382],{"type":32,"tag":1330,"props":1362,"children":1363},{},[1364],{"type":37,"value":1334},{"type":32,"tag":1330,"props":1366,"children":1367},{},[1368],{"type":37,"value":1369},"sub_2",{"type":32,"tag":1330,"props":1371,"children":1372},{},[1373],{"type":32,"tag":100,"props":1374,"children":1375},{},[1376],{"type":37,"value":1377},"gaming, 45min, 2100-2400",{"type":32,"tag":1330,"props":1379,"children":1380},{},[1381],{"type":37,"value":1352},{"type":32,"tag":1330,"props":1383,"children":1384},{},[1385],{"type":37,"value":1386},"NULL",{"type":32,"tag":33,"props":1388,"children":1389},{},[1390,1392,1397,1399,1404],{"type":37,"value":1391},"Таким образом, два человека из одного дома хранятся как отдельные профили. Когда приходит email hash (например, ребёнок вошёл), ",{"type":32,"tag":96,"props":1393,"children":1395},{"className":1394},[],[1396],{"type":37,"value":1369},{"type":37,"value":1398}," становится certain, но ",{"type":32,"tag":96,"props":1400,"children":1402},{"className":1401},[],[1403],{"type":37,"value":1339},{"type":37,"value":1405}," остаётся probabilistic.",{"type":32,"tag":33,"props":1407,"children":1408},{},[1409,1413],{"type":32,"tag":436,"props":1410,"children":1411},{},[1412],{"type":37,"value":440},{"type":37,"value":1414}," Clustering — вычислительно тяжелый. Пересчёт всех household'ов каждый день стоит дорого. Batch job запускается 4-6 часов — обновление профилей не real-time, а T+1 день.",{"type":32,"tag":40,"props":1416,"children":1418},{"id":1417},"production-identity-graph-архитектура",[1419],{"type":37,"value":1420},"Production Identity Graph Архитектура",{"type":32,"tag":33,"props":1422,"children":1423},{},[1424],{"type":37,"value":1425},"Объединение трёх методов в production архитектуру:",{"type":32,"tag":33,"props":1427,"children":1428},{},[1429,1434,1436,1441,1443,1449,1450,1456],{"type":32,"tag":436,"props":1430,"children":1431},{},[1432],{"type":37,"value":1433},"1. Event ingestion layer (sGTM):",{"type":37,"value":1435}," Server-side Google Tag Manager собирает raw event stream — GA4, Segment, Klaviyo, server-side Conversion API. Каждый event содержит ",{"type":32,"tag":96,"props":1437,"children":1439},{"className":1438},[],[1440],{"type":37,"value":810},{"type":37,"value":1442}," + ",{"type":32,"tag":96,"props":1444,"children":1446},{"className":1445},[],[1447],{"type":37,"value":1448},"session_id",{"type":37,"value":1442},{"type":32,"tag":96,"props":1451,"children":1453},{"className":1452},[],[1454],{"type":37,"value":1455},"client_id",{"type":37,"value":1457},". Если есть email\u002Fтелефон, добавляется hash.",{"type":32,"tag":33,"props":1459,"children":1460},{},[1461,1466],{"type":32,"tag":436,"props":1462,"children":1463},{},[1464],{"type":37,"value":1465},"2. Identity stitching engine (BigQuery + dbt):",{"type":37,"value":1467}," Ежедневный batch job выполняет:",{"type":32,"tag":1469,"props":1470,"children":1471},"ul",{},[1472,1477,1482],{"type":32,"tag":1240,"props":1473,"children":1474},{},[1475],{"type":37,"value":1476},"Deterministic matching (email_hash совпадения)",{"type":32,"tag":1240,"props":1478,"children":1479},{},[1480],{"type":37,"value":1481},"Probabilistic scoring (IP+UA+behavior similarity)",{"type":32,"tag":1240,"props":1483,"children":1484},{},[1485],{"type":37,"value":1486},"Household clustering (K-means или DBSCAN)",{"type":32,"tag":33,"props":1488,"children":1489},{},[1490,1492,1498],{"type":37,"value":1491},"Результат: таблица ",{"type":32,"tag":96,"props":1493,"children":1495},{"className":1494},[],[1496],{"type":37,"value":1497},"identity_graph",{"type":37,"value":1499}," (node = уникальная identity, edge = confidence score).",{"type":32,"tag":33,"props":1501,"children":1502},{},[1503,1508],{"type":32,"tag":436,"props":1504,"children":1505},{},[1506],{"type":37,"value":1507},"3. Profile unification (CDP):",{"type":37,"value":1509}," Для каждого node'а создаётся unified profile — все touchpoint'ы, атрибуты, segments объединены. Профиль синхронизируется с Klaviyo, Braze и другими платформами активации.",{"type":32,"tag":33,"props":1511,"children":1512},{},[1513,1518],{"type":32,"tag":436,"props":1514,"children":1515},{},[1516],{"type":37,"value":1517},"4. Real-time lookup:",{"type":37,"value":1519}," Новое событие поступает, граф ищется — если совпадение найдено, добавляется в профиль; если нет, создаётся новый node (завтра batch job объединит).",{"type":32,"tag":33,"props":1521,"children":1522},{},[1523],{"type":37,"value":1524},"На Shopify Plus stack'е Roibase эта архитектура обходится в ~$800\u002Fмесяц на GCP (BigQuery + Cloud Functions + sGTM container). При 50M event\u002Fмесяц batch runtime 4-5 часов. ROI: attribution accuracy +18%, CAC стабильнее на 22% (потому что вы правильно отделяете 3 session'а одного пользователя).",{"type":32,"tag":40,"props":1526,"children":1528},{"id":1527},"privacy-consent-и-gdpr-compliance",[1529],{"type":37,"value":1530},"Privacy, Consent и GDPR Compliance",{"type":32,"tag":33,"props":1532,"children":1533},{},[1534],{"type":37,"value":1535},"Identity resolution основана на GDPR 6(1)(f) «legitimate interest» или 6(1)(a) «explicit consent». В Европе требуется явное согласие — пользователь должен согласиться: «мы объединим ваши действия на разных устройствах». Это управляется через CMP (Consent Management Platform): TCF 2.2 с purpose 2 (device identification) и purpose 7 (cross-device linking).",{"type":32,"tag":33,"props":1537,"children":1538},{},[1539],{"type":37,"value":1540},"Hash'ирование — это GDPR pseudonymization (4(5)), не полная анонимизация, поэтому остаётся personal data категорией. Hash таблицы требуют encryption at rest + access controls. В проектах Roibase BigQuery dataset'ы шифруются customer-managed keys (CMEK), доступ ограничен IAM policies + VPC Service Controls.",{"type":32,"tag":33,"props":1542,"children":1543},{},[1544,1549],{"type":32,"tag":436,"props":1545,"children":1546},{},[1547],{"type":37,"value":1548},"Retention policy:",{"type":37,"value":1550}," Identity graph должен быть удалён согласно KVKK 7-й статье, когда обработка завершена. В электронной коммерции типичный retention 2 года — через 24 месяца после последней покупки профиль получает inactive флаг, через 30 дней удаляется (right to erasure).",{"type":32,"tag":40,"props":1552,"children":1554},{"id":1553},"что-делать-сейчас",[1555],{"type":37,"value":1556},"Что Делать Сейчас",{"type":32,"tag":33,"props":1558,"children":1559},{},[1560,1562,1569],{"type":37,"value":1561},"Построение identity resolution с нуля — проект на 8-12 недель. Если CDP нет, сначала создайте ",{"type":32,"tag":78,"props":1563,"children":1566},{"href":1564,"rel":1565},"https:\u002F\u002Fwww.roibase.com.tr\u002Fru\u002Ffirstparty",[82],[1567],{"type":37,"value":1568},"first-party data архитектуру",{"type":37,"value":1570}," — server-side event collection, BigQuery warehouse, dbt pipeline. На этот фундамент накладывается identity stitching engine. Если stack уже есть, пилотируйте probabilistic matching на 1-2 сегментах (высокоценные клиенты), измеряйте accuracy и false positive rate, калибруйте confidence threshold. Перед production запуском согласуйте consent flow и retention policy с legal team. Identity resolution — базис остальных маркетинговых слоёв (attribution, segmentation, LTV). Если здесь слабо, все верхние метрики стоят на зыбком основании.",{"type":32,"tag":1572,"props":1573,"children":1574},"style",{},[1575],{"type":37,"value":1576},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":16,"searchDepth":150,"depth":150,"links":1578},[1579,1580,1581,1582,1583,1584,1585],{"id":42,"depth":113,"text":45},{"id":63,"depth":113,"text":66},{"id":445,"depth":113,"text":448},{"id":1221,"depth":113,"text":1224},{"id":1417,"depth":113,"text":1420},{"id":1527,"depth":113,"text":1530},{"id":1553,"depth":113,"text":1556},"markdown","content:ru:data:identity-resolution-6-signalov-k-ednoj-identichnosti-klienta.md","content","ru\u002Fdata\u002Fidentity-resolution-6-signalov-k-ednoj-identichnosti-klienta.md","ru\u002Fdata\u002Fidentity-resolution-6-signalov-k-ednoj-identichnosti-klienta","md",1783289081164]