1. 數據匯入後怎麼查看不到數據?

1.1. App/Web/小程序 端 SDK 上傳數據,埋點管理頁面看不到接收數據排查方法:

  1. 確認數據接收網址是否是通的,可以透過瀏覽器中打開數據接收網址使用 /debug ,查看下瀏覽器中是否有“Sensors Analytics is ready to receive your data!” 列印出來。如果不通,可以先讓客戶使用神策伺服器的 ip 網址測試,是否是通的,排除掉是神策服務不可用導致的數據接收不到。然後在排查轉發層導致的數據接收網址不可用。
  2. 如果數據接收網址是通的,確認神策頁面查看的專案和數據接收網址中寫的專案是否一致。
  3. (App 端數據)如果數據網址是通的,並且查看的專案和數據網址中的專案也是一致的,確認 SDK 中使用的模式是否為 debug 模式。(注:如果 App 端使用了 debugAndtrack 模式但是埋點管理看不到數據,可以和客戶確認是否對神策的 debug 介面做了禁用處理。)
  4. 建議在本地列印log,查看數據是否採集成功。
    1. iOS 端本地列印數據採集記錄檔的方式:iOS 除錯記錄檔設定方式
    2. Android 端本地列印數據採集記錄檔的方式:在 SDK 初始化之後呼叫 SensorsDataAPI.sharedInstance().enableLog(true);
    3. Web 端本地列印數據採集記錄檔的方式:初始化 SDK 是,增加 show_log:true (該參數和 server_url 同等級,沒有設定該參數時,預設為 ture)
    4. 小程序端本地列印數據採集記錄檔的方式:初始化 SDK 是,增加 show_log:true (該參數和 server_url 同等級,沒有設定該參數時,預設為 ture)
  5. 如果數據接收網址通,專案一致,非 debug 模式,仍然看不到數據,可以確認 license 是否到期或者是數據條數超過上線導致的停止匯入。
  6. 如果客戶使用的是 https 的數據接收網址,也可以確認憑證是否過期,如果憑證過期或者憑證不合法也會影響數據發送。

1.2. 伺服器端 SDK 上傳數據,埋點管理頁面看不到接收數據排查方法:

  1. 確認 SDK 使用的 consumer 是 BatchConsumer 還是 ConcurrentLoggingConsumer?
  2. 如果是 BatachConsumer 確認是否到達了設定的快取條數,是否滿足發送條件。
  3. 如果是 BatachConsumer 並且滿足了發送條件,確認數據接收網址是否可用(可參考 App 端 SDK 上傳數據排查方法中第 1,2,3步)
  4. 如果使用的 ConcurrentLoggingConsumer 和客戶確認本地記錄檔是否已經列印,如果沒有列印和客戶確認初始化 SDK 相關設定,是否指定了檔案的寫的路徑,是否到達設定的快取條數(預設到達 8k 會寫記錄檔)。
  5. 如果使用的 ConcurrentLoggingConsumer 並且本地已經列印了記錄檔,和客戶確認是否在 SDK 的機器上安裝了 LogAgent,LogAgent 設定是否正確。LogAgent 是否有報錯,可以進一步排查下 LogAgent 相關問題。LogAgent參考文件:LogAgent 匯入工具

1.3. 埋點管理有接收但是事件分析或者自定義查詢頁面查不到數據,排查方法:

  1. 可以讓客戶提供埋點管理截圖,確認對應的埋點數據是否有報錯,如果有報錯,可以根據錯誤原因協助客戶確認埋點問題
  2. 如果有接收校驗數據,但是沒有入庫。可以先確認匯入模塊是否正常,只有數據入庫之後才可以查詢。

1.4. 埋點管理裡顯示數據已經入庫,自定義查詢頁面也可以查到對應的埋點數據,但是事件分析裡查不到數據,排查方法:

  1. 可以讓客戶先嘗試強制重新整理,排除因為快取原因導致數據查不到。
  2. 如果強制重新整理之後,仍然看不到,可以和客戶確認是否開啟了抽樣或者近似查詢導致沒有查詢到。

2. 如何查看除錯記錄檔?

初始化 SDK 後,透過呼叫以下程式碼,開啟除錯記錄檔,透過 SA. 關鍵字篩選,可點擊此 連結 查看更多詳情。

//開啟除錯記錄檔
SensorsDataAPI.sharedInstance().enableLog(true);

3. 如何在神策分析中查看我測試的數據?

方式一:透過除錯查看數據,可參考此 文件 設定 (如果是業務人員建議使用此方法)

方式二:在本地程式碼中,開啟除錯記錄檔後,查看記錄檔中的 distinct_id 字段,即為神策識別用戶 ID 的字段,然後在神策分析中透過搜尋用戶定位到具體的用戶。如何搜尋用戶,可查看文件

開啟了全埋點,為什麼應用退到後台,沒有退出事件?

在 2.0.3 版本加入了 30 秒的 session 機制,用戶退出 App 到後台 30 秒的時候,才會觸發退出事件, 之後再啟動 App,才會觸發啟動事件,可點擊此連結查看更多詳情。

4. 神策 SDK 支援第三方框架的採集嗎?

目前 SDK 支援 RN、Flutter 等第三方框架,可點擊此 連結 查看更多詳情。

5. 如何查看 SDK 原始碼及更新日誌? 

可在 GitHub 上查看原始碼及更新記錄檔。

6. 我們應該如何接入數據?

我們提供了多種不同的數據接入方式:使用批量匯入工具 batch_importer 匯入歷史數據;使用 log_agent 監控記錄檔增量即時匯入數據;或者使用各個 SDK 來即時匯入數據。可以根據不同的階段和不同的需要來選擇。具體可以參考這部分的 說明。 

7. 你們的產品非常強大,那麼除了分析用戶數據以外,還可以分析哪些其它類型的數據呢?

  • A:神策分析提供的 event 和 profile 模型中,用戶除了可以是互聯網用戶以外,還可以是其他類型的實體。例如,對於一個上門服務類型的產品來說,除了關心用戶的行為,也會關心提供服務的技師的行為。那麼,對於這一類需求,可以單獨安裝一套神策分析,或者在已有的系統內建立一部分單獨的事件,這些事件的“用戶”就是技師,而這些事件記錄技師接受訂單,上門服務等資訊,然後據此也可以建立一系列分析技師的核心指標和轉化漏斗等。

8. 我除錯的時候程序寫得有bug,數據匯入錯了,能不能把匯錯的這些數據給刪掉?

  • A:我們並不建議使用者因為這種原因而頻繁地刪除數據,當然,如果真有刪除數據的需要,可以聯繫 Sensors Data 的技術支援人員進行操作。同時,為了幫助用戶順利地完成數據匯入,神策分析提供了以下一系列的手段:
    • 批量匯入工具提供格式校驗功能;
    • 產品介面上也提供了格式校驗,並且可以根據校驗的結果來建立元數據;
    • 可以申請短時間的雲版試用環境,用於除錯匯入程序,在試用環境使用過程中,介面上會顯示匯入的進度,同時也會對匯入數據的錯誤進行提示。因此,我們建議客戶可以在雲版試用環境上完成除錯後,再在私有的生成環境中進行數據接入;
    • 如果由於業務發展,導致以前有意義的事件現在不需要了,則一方面可以停止匯入這類事件,另一方面可以透過神策分析提供的隱藏事件功能,將之隱藏。

9. 有些分析和查詢,我們想整合到自己的後台系統中,應該如何實作?

  • A:神策分析是客戶完全私有的數據分析系統,因此,專門開放了 查詢 API.,使用者可以在任何需要的地方獲得數據,然後進行任意形式的展現和集成。除此之外, 神策分析實質上也幫助客戶搭建了一個完全私有的數據平臺,客戶傳入的任何數據都完全開放給客戶,可以透過批量和流式兩種方式進行使用,具體可以聯繫 Sensors Data 的技術支援人員。

10. 神策分析後台是怎麼實作的?查詢層用的是什麼?

  • A:神策分析主要用到了一些主流的開源社群技術,例如 Hadoop/Impala/Kafka/MySQL/Redis/jQuery/ECharts/Kudu/Parquet 等,以及一些我們自己開發的核心元件。
  • 神策分析主要用到了 Hadoop、Impala 等開源的分佈式儲存和計算套件,並結合業務的具體場景,對他們的程式碼做了很多針對性的修改和優化。

11. 你們的 Demo 為什麼不能匯入數據?

  • A:Demo 環境主要是給大家示範神策分析的查詢、可視化、分析等方面的資訊,匯入的數據是我們後台模擬生成自動匯入的數據。如果想嘗試匯入自己的數據進行查詢和分析,可以聯繫我們獲取相應的試用環境。

12. 刪除數據和隱藏事件有什麼區別?

  • A:刪除數據是真正地將數據刪除了,而隱藏事件,只是在介面上將數據隱藏,並且在計算“任意事件”時,不統計這個事件。

13. 神策分析的數據是否支援修改/更新/Update?

  • A:神策分析中的數據分為兩類:
    • 對於 Profile 類數據,由於它描述的是用戶的狀態,是可能發生改變的,所以我們透過 profile_set、profile_unset、profile_delete 等介面,提供了完整的數據修改和刪除的功能;
    • 對於 Event 類數據,由於它描述的是用戶在過去所做的事情,從語義上它應該是在發生後就不能夠改變的,同時為了保證最好的查詢性能,目前不支援對 Event 數據的修改;
    • 如果使用者擔心由於程式碼錯誤或者數據傳輸錯誤等原因,導致傳入數據有誤,我們提供瞭如下方案來解決此類問題:
      • 我們的數據分析師會根據客戶的需求幫助客戶制定完善的數據接入方案,我們的技術人員會在客戶數據接入過程中提供完善的技術支援;
      • 我們所有的 SDK 和匯入工具都提供了 debug 模式,用於數據接入過程中的除錯;
      • 我們可以為客戶提供測試環境,事實上在神策分析 1.5 多 Project 功能上線後,客戶可以自己開一個 Project 來進行測試;
    • 如果在以上方案之下,依然由於某些原因導致有錯誤數據進入,則我們建議客戶按照如下步驟先刪除數據再重新匯入數據:
      • 使用 sa_clean 工具刪除出錯的那些 Event 在出錯的時間段內的數據;
      • 在之前出錯的原始數據的基礎上,完成對數據的修改,修改後再重新匯入;
      • 如果之前出錯的原始數據客戶沒有備份,我們可以酌情協助從系統中還原導出。

14. 匯入到神策分析中的屬性,在匯入後是否可以修改型別:

  • A:為了保證匯入到神策分析中數據的正確性以及相應的最優的儲存方案,神策分析是堅持強型別校驗的,匯入到神策分析中的屬性型別不能修改,但是,使用者可以按照如下方式來解決類似的需求:
    • 首先在測試的時候應該使用單獨的測試專案,儘量避免測試數據導致的型別錯誤。而對於測試專案則可以透過直接重置專案來還原所有型別定義;
    • 如果已經是正式專案了,那麼可以匯入一個新的屬性,使用正確的型別,在屬性命名上與舊的屬性區分,顯示名上,新屬性可以使用舊屬性原本的顯示名,同時隱藏舊的屬性;
    • 如果真的有非常強烈的需求,可以尋求神策分析技術支援人員的幫助,在不修改屬性名的情況下進行屬性型別的修改,但是無法保留該屬性的歷史數據,且需要停止匯入。

15. 神策分析 iOS、Android SDK 如何發送數據?是否會影響 App 的用戶體驗?

  • A: 預設情況下,iOS、Android SDK 都採用非常保守的發送策略,以保證用戶體驗為核心,具體策略如下:
    • 普通模式 (非 Debug)
      1. 除 login 外,所有 track / profile_set / profile_append 等操作,均先快取在本地,當快取的數據量滿足以下任一條件,且當前網絡為 3G/4G/Wifi 時,發送數據;
      2. 本地快取的數據量積累到一定數目(預設為 100 條);
      3. 離上次發送間隔了一定時間(預設為 15 秒);
      4. 對於 login 操作,當網絡為 3G/4G/Wifi 時立即發送所有數據,否則快取在本地;
      5. 當 App 進入後台時,會嘗試發送數據;
      6. Android SDK 在 onPause 中嘗試發送;
      7. iOS SDK 在 didEnterBackground 中嘗試發送;
    • Debug 模式
      1. 對於任何操作,無論什麼網絡條件,都會立即發送數據,並校驗返回的驗證結果。
        注意:Debug 模式是為方便開發者除錯而設定的模式,該模式會逐條校驗數據並在校驗失敗時拋出異常,性能遠低於正常模式。線上環境使用 Debug 模式會嚴重影響性能並存在崩潰風險,產品上線前請務必替換掉/關閉 Debug 模式。 

用戶可以在任何時候,呼叫 flush 發送數據。當數據發送失敗時,會繼續快取在本地,直到發送成功。當快取數據量過多時,會刪除最舊的 100 條數據,然後再存入新的數據。其中 Android 預設快取數據量門檻值為 32MB,iOS 為 10000 條。

在 iOS 或 Android SDK 初始化後,用戶可以呼叫 API 修改發送條件,如設定快取累積條目數、發送時間間隔以及是否在 App 進入後台時發送數據,具體請參考 iOS、Android SDK 的文件。