Data Prep疑難排解指南
本檔案提供有關Adobe Experience Platform Data Prep常見問題的解答,以及常見錯誤的疑難排解指南。 如需Experience Platform API的一般問題和疑難排解資訊,請參閱Adobe Experience Platform API疑難排解指南。
常見問題集
以下為關於Data Prep常見問題集及其答案的清單。
如何解決轉換錯誤?
Data Prep將所有轉換錯誤當地語系化至其發生的資料行。 因此,該欄會失效,而列的其餘部分會繼續處理。 這些轉換問題記錄為 警告。 建議您定期檢閱警告,並調整轉換邏輯,以解決轉換問題。 這會提高擷取至Experience Platform的資料品質。
如果標示為 必要 的欄因轉換問題而無效,則不會擷取該列。 啟用部分資料擷取時,您可以設定在整個流程失敗之前此類拒絕的臨界值。 如果取消的屬性並未影響任何結構描述層級的驗證,則會繼續內嵌列。
即使沒有任何轉換錯誤,任何無效列也會被拒絕。 例如,資料擷取流程可能會將傳遞對應(無轉換邏輯)對應到必填欄位,且該屬性沒有傳入值。 將拒絕此列。
如何在欄位中逸出特殊字元?
您可以使用${...}
來逸出欄位中的特殊字元。 但是,此機制不支援包含具有句點(.
)之欄位的JSON檔案。 與階層互動時,如果子屬性有句點(.
),您必須使用反斜線(\
)來逸出特殊字元。 例如,address
是包含屬性street.name
的物件,然後可以將其稱為address.street\.name
而非address.street.name
。
計算欄位的最大長度是多少?
計算欄位的長度上限為4096個字元。
由於屬性驗證,我的內嵌失敗,但我在檔案中正確擁有該屬性。 到底有什麼問題嗎?
確保每個欄位的資料型別都和結構描述中定義的型別相符。 此外,必須遵守「必要」、「列舉」和「格式」等限制。
所擷取的資料必須符合Experience Platform中定義的Experience Data Model (XDM)結構。 如果屬性不符合結構描述中指定的預期型別或格式,擷取將會失敗。
如果使用「資料準備」函式,請確定轉換產生正確的屬性。 您可以在來源工作流程的設定過程中檢閱屬性。 在對應步驟中,選取 新增欄位型別,然後選取 新增計算欄位。 接下來,使用計算欄位介面來預覽每個函式。
如何從串流或批次擷取記錄中移除錯誤的資料值?
您可以使用「資料準備」對應介面,僅對映具有所需資料的資料欄,以執行資料欄層級篩選。 您也可以使用計算欄位,使用支援函式來轉換資料。
資料列層級篩選目前僅適用於Adobe Analytics來源聯結器。
內嵌之後,您可以使用Data Distiller來清除、塑造及使用SQL操控資料。 不過,此程式需要刪除含有不良記錄的批次,並重新擷取根據SQL結果建立的新批次。
-
資料湖:您只能透過刪除並重新內嵌記錄所在的批次來移除已內嵌的記錄。
-
即時客戶設定檔:您可以擷取新記錄來覆寫以屬性為基礎的記錄,但無法移除體驗事件記錄。
-
Identity Service:您無法在Identity Service中完全移除記錄。 您將必須刪除整個設定檔,並使用設定檔刪除API重新上傳包含正確記錄的設定檔。
在GIF資料中使用計算欄位的最佳實務是什麼?
在來源資料對應至XDM結構的步驟中,您可以使用資料準備對應函式來建立新的計算欄位。
當您將Adobe Analytics資料匯入作為來源時,所建立的結構描述是否自動針對設定檔啟用?
設定檔不會自動設定Analytics資料。 設定來源聯結器後,您必須進入資料集和結構描述,並為設定檔擷取啟用它們。
在生產沙箱中建立Analytics來源資料流時,會建立兩個資料流:
- 此資料流會將13個月的歷史報表套裝資料回填至Data Lake。 此資料流會在回填完成時結束。
- 將即時資料傳送至資料湖和設定檔的資料流。 此資料流會持續執行。
如何使用資料準備函式,將對應物件中的一個值變成小寫?
您可以使用map_get_values
函式擷取值,然後使用較低階函式將值變成小寫:
lower(map_get_values(mapObject, 'keyName'))
您可以使用相同的函式將地圖物件轉換為小寫。 不過,您不可以循環瀏覽整個對映,並將每個專案變成小寫。
我可以在巢狀方式中使用資料準備函式嗎?
可以,您可以在另一個函式中使用一個「資料準備」函式,以解決資料擷取期間複雜的資料準備功能。
例如,如果您想要根據特定條件將欄位定義為null ,則可以使用「iif」函式來檢查該欄位。 如果函式傳回true
,則您可以使用"nullify()",如果它傳回false
,則您可以使用個別欄位。
如果marketing_type為欄位,則您可以使用「.equals」來檢查marketing_type欄位中的值,此值可巢狀內嵌「iif」函式。 如果它傳回true
,則您可以使用「nullify()」函式,如下所示:
iif(marketing_type.equals("phyMail"), nullify(), marketing_type)
下列範例將說明如何使用iif、等於和空值來巢狀內嵌「資料準備」函式:
- 運算式: 必要 正在評估的布林運算式。
- TRUE_VALUE: 必要 如果運算式評估為true,則傳回的值。
- FALSE_VALUE: 必要 運算式評估為false時所傳回的值。
- STRING1: 必要 您要比較的第一個字串。
- STRING2: 必要 您要比較的第二個字串。
以下是如何巢狀設定函式的範例(假設正在評估的欄位為「marketing_type」)。
iif(marketing_type.equals("phyMail"), nullify(), marketing_type)
接下來,假設您有下列三個欄位:
- marketing_type: (電子郵件、phyMail、推播、簡訊、電話)
- total_consents:數字範圍從4000到5500
- 日期:2024年2月至3月
您可以使用並巢狀內嵌上述三個函式,以操控三個欄位:
- iif(marketing_type.equals("email"), nullify(), iif(marketing_type.equals("push"), "push-notification", marketing_type))
- iif(marketing_type.equals("phyMail"), nullify(), iif(marketing_type.equals("sms"), "text-message", marketing_type))
- iif(total_consents > 5000, iif(marketing_type.equals("phone"), nullify(), marketing_type), "infirst-consents")
- iif(date.equals("3/21/24"), iif(marketing_type.equals("push"), nullify(), marketing_type), "not-March")
- iif(total_consents < 4500, iif(marketing_type.equals("sms"), "low-consent-sms", marketing_type), "high-consents")
- iif(marketing_type.equals("email"), iif(total_consents > 5000, nullify(), "email-low-consents"), marketing_type)
- iif(marketing_type.equals("push"), iif(total_consents < 4500, "low-consent-push", nullify()), marketing_type)
- iif(total_consents >= 5500, iif(marketing_type.equals("phyMail"), nullify(), "high-consents"), marketing_type)