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)