數(shù)倉建?!狪D Mapping
早晨起床的時候,發(fā)現(xiàn)自己尿分叉,我沒有多想,簡單洗洗就匆忙出門。路過早餐店,我看到師傅熟練的拉扯一小塊面團(tuán),拉至細(xì)長條,然后放入油鍋中,不一會功夫,一根屎黃色的油條便出鍋了,賣相不錯。我在想,小到炸屎黃色的油條,大到學(xué)習(xí),其實都是一個熟能生巧的過程。
數(shù)據(jù)倉庫系列文章(持續(xù)更新)
數(shù)倉架構(gòu)發(fā)展史 數(shù)倉建模方法論 數(shù)倉建模分層理論 數(shù)倉建?!獙挶淼脑O(shè)計 數(shù)倉建?!笜?biāo)體系 數(shù)據(jù)倉庫之拉鏈表 數(shù)倉—數(shù)據(jù)集成 數(shù)倉—數(shù)據(jù)集市 數(shù)倉—商業(yè)智能系統(tǒng) 數(shù)倉—埋點設(shè)計與管理 數(shù)倉—ID Mapping 數(shù)倉—OneID 數(shù)倉—AARRR海盜模型 數(shù)倉—總線矩陣 數(shù)倉—數(shù)據(jù)安全 數(shù)倉—數(shù)據(jù)質(zhì)量 數(shù)倉—數(shù)倉建模和業(yè)務(wù)建模
關(guān)注
大數(shù)據(jù)技術(shù)派,回復(fù):資料,領(lǐng)取1024G資料。
顧名思義我們知道ID Mapping 的操作對象是ID,目標(biāo)或者是動作是Mapping,也就是說我們要做的事情其實就是想把不同平臺不同設(shè)備上的ID 打通,從而更好的去刻畫用戶,也就是說我們希望能打通用戶各個維度的數(shù)據(jù),從而更好的去服務(wù)業(yè)務(wù)服務(wù)用戶
通常公司有產(chǎn)品矩陣,而每個產(chǎn)品都有自己的注冊賬號產(chǎn)生的用戶ID。從公司全局,整合用戶表,用戶行為數(shù)據(jù)來看,確定不同產(chǎn)品的用戶ID是相同一個人非常重要, 選取合適的用戶標(biāo)識對于提高用戶行為分析的準(zhǔn)確性有非常大的影響,尤其是對用戶畫像、推薦、漏斗、留存、Session 等用戶相關(guān)的分析功能。
其實對于任何分析都是一樣的,如果我們不能準(zhǔn)確標(biāo)識一個用戶,那么我們的計算結(jié)果就沒有準(zhǔn)確性可言,其實對于數(shù)據(jù)服務(wù)方而言,數(shù)據(jù)的準(zhǔn)確性是我們的第一要務(wù),我們寧愿不出數(shù)據(jù),也不要出錯誤的數(shù)據(jù)。
ID Mapping 的背景
網(wǎng)絡(luò)身份證
假如沒有網(wǎng)絡(luò)身份證,那么每個商家(App)只能基于自己的賬號體系標(biāo)識用戶,并記錄用戶的行為。而有了統(tǒng)一的網(wǎng)絡(luò)身份證之后,各個商家之間的數(shù)據(jù)就可以打通了,天貓不僅知道用戶A在淘寶系的購物數(shù)據(jù),也能了解到該用戶在社交網(wǎng)絡(luò)的行為,以及旅游的喜好,等等。
在現(xiàn)實的數(shù)據(jù)中,由于,用戶可能使用各種各樣的設(shè)備,有著各種各樣的前端入口,甚至同一個用戶擁有多個設(shè)備以及使用多種前端入口,就會導(dǎo)致,日志數(shù)據(jù)中對同一個人,不同時間段所收集到的日志數(shù)據(jù)中,可能取到的標(biāo)識個數(shù)、種類各不相同;
比如用戶可能使用各種各樣的設(shè)備,其次是不同設(shè)備有不同的操作系統(tǒng),設(shè)置是軟件本身的版本也會影響我們對用戶的標(biāo)識,
手機、平板電腦、PC 安卓手機、ios手機、winphone手機 安卓系統(tǒng)有各種版本 ( 5.0 6.0 7.0 8.0 9.0 ) ios系統(tǒng)也有各種版本(3.x 4.x 5.x 6.x 7.x … 12.x )
存在的問題
用戶設(shè)備的標(biāo)識,沒辦法輕易定制一個規(guī)則來取某個作為唯一標(biāo)識: mac地址:手機網(wǎng)卡物理地址, 若干早期版本的ios,winphone,android可取到 imei(入網(wǎng)許可證序號):安卓系統(tǒng)可取到,若干早期版本的ios,winphone可取到,運營商可取到 imsi(手機SIM卡序號):安卓系統(tǒng)可取到,若干早期版本的ios,winphone可取到,運營商可取到 androidid :安卓系統(tǒng)id openuuid(app自己生成的序號) :卸載重裝app就會變更 IDFA(廣告跟蹤碼)
擴(kuò)展 IDFA
IDFA,英文全稱 Identifier for Advertising ,可以理解為廣告id,蘋果公司提供的用于追蹤用戶的廣告標(biāo)識符,可以用來打通不同app之間的廣告。每個設(shè)備只有一個IDFA,不同APP在同一設(shè)備上獲取IDFA的結(jié)果是一樣的
蘋果為了保護(hù)用戶隱私,早在2012年就不再允許其生態(tài)中的玩家獲取用戶的唯一標(biāo)識符,但是商家在移動端打廣告的時候又希望能監(jiān)控到每一次廣告投放的效果,因此,蘋果想出了折中的辦法,就是提供另外一套和硬件無關(guān)的標(biāo)識符,用于給商家監(jiān)測廣告效果,同時用戶可以在設(shè)置里改變這串字符,導(dǎo)致商家沒有辦法長期跟蹤用戶行為。這個就叫做廣告標(biāo)識符(IDFA),設(shè)置路徑是“設(shè)置->隱私->廣告->還原廣告標(biāo)識符”,如下圖所示(iOS9)

常見的標(biāo)識
設(shè)備 ID
需要注意的是,設(shè)備 ID 并不一定是設(shè)備的唯一標(biāo)識。例如 Web 端的 Cookies 有可能被清空(例如各種安全衛(wèi)士),而 iOS 端的 IDFV( Identifier For Vendor)在不同廠商的 App 間是不同的,而且重新安裝IDFV會被重置。
| 設(shè)備 | 規(guī)則 |
|---|---|
| Android | 1.10.5 之前版本,默認(rèn)使用 UUID(例如:550e8400-e29b-41d4-a716-446655440000),App 卸載重裝 UUID 會變,為了保證設(shè)備 ID 不變,可以通過配置使用 AndroidId(例如:774d56d682e549c3);1.10.5 及之后的版本 SDK 默認(rèn)使用 AndroidId 作為設(shè)備 ID,如果 AndroidId 獲取不到則獲取隨機的 UUID。 |
| iOS | 1.10.18 及之后版本,如果 App 引入了 AdSupport 庫,SDK 默認(rèn)使用 IDFA 作為匿名 ID。1.10.18 之前版本,可以優(yōu)先使用 IDFV(例如:1E2DFA10-236A-47UD-6641-AB1FC4E6483F),如果 IDFV 獲取失敗,則使用隨機的 UUID(例如:550e8400-e29b-41d4-a716-446655440000),一般情況下都能夠獲取到 IDFV。如果使用 IDFV 或 UUID ,當(dāng)用戶卸載重裝 App 時設(shè)備 ID 會變。也可以通過配置使用 IDFA(例如:1E2DFA89-496A-47FD-9941-DF1FC4E6484A),如果開啟 IDFA ,可以優(yōu)先獲取 IDFA,如果獲取失敗再嘗試獲取 IDFV。使用 IDFA 能避免用戶在重裝 App 后設(shè)備 ID 發(fā)生變化的情況,需要注意的是IDFA 也是可以被重置的 |
登錄 ID
登錄 ID 通常是業(yè)務(wù)數(shù)據(jù)庫里的主鍵或其它唯一標(biāo)識。所以 登錄 ID,相對來說更精確更持久。但是,用戶在使用時不一定注冊或者登錄,而這個時候是沒有登錄 ID 的。
平臺 ID
| 設(shè)備 | 規(guī)則 |
|---|---|
| JavaScript | 默認(rèn)情況下使用 cookie_id(例如:15ffdb0a3f898-02045d1cb7be78-31126a5d-250125-15ffdb0a3fa40a),cookie_id 存貯在瀏覽器的 cookie 中,依然有被重置的風(fēng)險 這里還有一個問題,就是 cookie 只能隸屬于同一個域名,也就是說你訪問郵箱的 cookie ,與百度廣的 cookie 并不是同一個,所以在網(wǎng)站與網(wǎng)站也要做 ID Mapping ,這就是為什么你在百度上搜索了“養(yǎng)生”,到購物網(wǎng)站上就會給你推薦“枸杞”。 |
| 微信小程序 | 默認(rèn)情況下使用 UUID(例如:1558509239724-9278730-00c1875d5f63f8-41373096),但是刪除小程序,UUID 會變。為了保證設(shè)備 ID 不變,建議獲取并使用 openid(例如:oWDMZ0WHqfsjIz7A9B2XNQOWmN3E)。如果選擇使用 openid 的話,請注意【操作暫存】,由于獲取 openid 是一個異步的操作,但是冷啟動事件等會先發(fā)生,這時候這個冷啟動事件的 distinct_id 就不對了。所以我們會把先發(fā)生的操作,暫存起來,等獲取到 openid 等后調(diào)用 sa.init() 后才會發(fā)送數(shù)據(jù)。openid 的獲取和操作暫存的方法。 |
其實這里的平臺指的一些大的生態(tài)系統(tǒng),例如微信的生態(tài)、今日頭條等,我們很多依賴這些平臺的應(yīng)用就可以使用用戶在這些平臺上的用戶標(biāo)識作為標(biāo)識,當(dāng)然我們也可以在此基礎(chǔ)上為我們自己平臺上的用戶創(chuàng)建屬于本平臺的用戶表示,往往就是用戶的登錄ID
方案詳解
因此,我們在進(jìn)行任何數(shù)據(jù)接入之前,都應(yīng)當(dāng)先確定如何來標(biāo)識用戶。下面會介紹幾種用戶標(biāo)識方案的原理,以及幾種典型情況下的用戶標(biāo)識方案。
方案一:只使用設(shè)備 ID
適合沒有用戶注冊體系,或者極少數(shù)用戶會進(jìn)行多設(shè)備登錄的產(chǎn)品,如工具類產(chǎn)品、搜索引擎、部分電商等。這也是絕大多數(shù)其它數(shù)據(jù)分析產(chǎn)品唯一提供的方案。
局限性
同一用戶在不同設(shè)備使用會被認(rèn)為不同的用戶,對后續(xù)的分析統(tǒng)計有影響。 不同用戶在相同設(shè)備使用會被認(rèn)為是一個用戶,也對后續(xù)的分析統(tǒng)計有影響。 但如果用戶跨設(shè)備使用或者多用戶共用設(shè)備不是產(chǎn)品的常見場景的話,可以忽略上述問題。
方案二:關(guān)聯(lián)設(shè)備 ID 和登錄 ID(一對一)
僅使用 設(shè)備 ID 標(biāo)識用戶雖然簡單,但是對于某些應(yīng)用場景這種方式不夠準(zhǔn)確,因此我們可以采用 設(shè)備 ID 和 登錄 ID 的方案,在一定程度上融合 設(shè)備 ID 和 登錄 ID,從而實現(xiàn)更準(zhǔn)確的用戶追蹤。
成功關(guān)聯(lián)設(shè)備 ID 和登錄 ID 之后,用戶在該設(shè)備 ID 上或該登錄 ID 下的行為就會貫通,被認(rèn)為是一個用戶 ID 發(fā)生的。在進(jìn)行事件、漏斗、留存等用戶相關(guān)分析時也會算作一個用戶。
關(guān)聯(lián)設(shè)備 ID 和登錄 ID 的方法雖然實現(xiàn)了更準(zhǔn)確的用戶追蹤,但是也會增加埋點接入的復(fù)雜度。所以一般來說,我們建議只有當(dāng)同時滿足以下條件時,才考慮進(jìn)行 ID 關(guān)聯(lián):
需要貫通一個用戶在一個設(shè)備上注冊前后的行為。 需要貫通一個注冊用戶在不同設(shè)備上登錄之后的行為。
局限性
一個設(shè)備 ID 只能和一個登錄 ID 關(guān)聯(lián),而事實上一臺設(shè)備可能有多個用戶使用。 一個登錄 ID 只能和一個設(shè)備 ID 關(guān)聯(lián),而事實上一個用戶可能用一個登錄 ID 在多臺設(shè)備上登錄。
方案三:關(guān)聯(lián)設(shè)備 ID 和登錄 ID(多對一)
關(guān)聯(lián)設(shè)備 ID 和登錄 ID(一對一)雖然已經(jīng)實現(xiàn)了跨設(shè)備的用戶貫通,但是對于某些應(yīng)用場景還是不夠準(zhǔn)確,因此這里提供一個新的關(guān)聯(lián)方案,支持一個登錄 ID 綁定多個設(shè)備 ID 的方案,從而實現(xiàn)更準(zhǔn)確的用戶追蹤。
也就是跨端,其實這是非常常見的一種場景,例如你在PC 端和 移動端使用同一個產(chǎn)品。
一個用戶在多個設(shè)備上進(jìn)行登錄是一種比較常見的場景,比如 Web 端和 App 端可能都需要進(jìn)行登錄。支持一個登錄 ID 下關(guān)聯(lián)多設(shè)備 ID 之后,用戶在多設(shè)備下的行為就會貫通,被認(rèn)為是一個ID 發(fā)生的。
局限性
一個設(shè)備 ID 只能和一個登錄 ID 關(guān)聯(lián),而事實上一臺設(shè)備可能有多個用戶使用 多用戶使用同一個設(shè)備這個問題是無解的。 一個設(shè)備 ID 一旦跟某個登錄 ID 關(guān)聯(lián)或者一個登錄 ID 和一個設(shè)備 ID 關(guān)聯(lián),就不能解除(自動解除)。而事實上,設(shè)備 ID 和登錄 ID 的動態(tài)關(guān)聯(lián)才應(yīng)該是更合理的。
方案對比
將上述三個方案放到一起,可以明顯看到三種方案的區(qū)別,如下表所示:
方案一:僅使用設(shè)備 ID,不管用戶是誰,只要設(shè)備未變,設(shè)備ID 就不變,即使多人使用同一個設(shè)備,也會被識別為同一個用戶。 方案二:關(guān)聯(lián)設(shè)備 ID 和登錄 ID(一對一), 當(dāng)用戶換手機后,登錄賬號之后的行為與換手機之前的行為貫通了,但是在新設(shè)備上首次登錄之前的行為仍沒法貫通,仍被識別為新的用戶的行為。 當(dāng)用戶把舊手機送給朋友之后,由于舊手機已被關(guān)聯(lián)到自己的登錄 ID 了,無法再與朋友的登錄 ID 關(guān)聯(lián)。后續(xù)使用這臺舊手機的用戶們,若不登錄就操作,則都會被識別為同一個用戶。 方案三:關(guān)聯(lián)設(shè)備 ID 和登錄 ID(多對一) 當(dāng)用戶把舊手機送給朋友之后,由于舊手機已被關(guān)聯(lián)到自己的登錄 ID 了,無法再與朋友的登錄 ID 關(guān)聯(lián)。后續(xù)使用這臺舊手機的用戶們,若不登錄就操作,則都會被識別為同一個用戶)。 而事實上,舊手機上后續(xù)的匿名登錄很難識別到底是誰,可能歸為匿名登錄之前最近一次登錄的用戶會更合理一些。
其實,三種方案沒有對與錯,我們應(yīng)該結(jié)合自己的業(yè)務(wù)場景以及埋點復(fù)雜度來選擇合適的方案。
總結(jié)
ID Mapping 就如同它的名字一樣,我們要做的就是將一系列的ID 關(guān)聯(lián)起來,一些列的ID 可能是用戶在不同平臺上的標(biāo)識,也可能是用戶在不同設(shè)備上的標(biāo)識,也可能是用戶在不同狀態(tài)下的標(biāo)識,總之我們就是要將這一系列的ID 關(guān)聯(lián)起來,盡可能地將用戶的數(shù)據(jù)打通,從而提供更加全面準(zhǔn)確的分析。
我們知道只有打破數(shù)據(jù)孤島數(shù)據(jù)才能發(fā)揮更大的價值,可能很多人都知道數(shù)據(jù)倉庫的數(shù)據(jù)集成環(huán)節(jié)其實就是為了打破數(shù)據(jù)孤島,其實我們的ID Mapping 也是為了打破數(shù)據(jù)孤島,其實ID Mapping 就兩個使命 1. 多端數(shù)據(jù)的識別;2. 多源數(shù)據(jù)的打通,其他的都是基于ID Mapping 的應(yīng)用。
知識星球
通過調(diào)查,大部分同學(xué)表示愿意加入知識星球,我也覺得這樣讓大家的提問更加有層次和意義,而不是問一些比較膚淺和不太合適的問題,有問題也能自己先查詢一下,這樣更好的交流和解答疑問,提升時間利用率。
加入星球可以獲得什么:
博主總結(jié)的大數(shù)據(jù)學(xué)習(xí)資料免費獲得; 可以向星主和嘉賓提問; 互相交流,別人的提問和答案所有人都可以看到; 每周分享大數(shù)據(jù)前沿知識; 每周分享大數(shù)據(jù)面試題目和面試技巧;
知識星球是付費的,如果你不想知識付費,也沒關(guān)系我這也有免費的微信群,加我微信:ddxygq,回復(fù): 加群,我拉你進(jìn)大數(shù)據(jù)交流群。知識星球完全是自愿付費加入。平時問答,資料分享等,知識星球成員優(yōu)先,大家都是出來打工的,都不容易,不喜勿噴。
