促銷活動:Redshift欄在促銷活動資料載入(RDBMS)中不可見
當Adobe Campaign使用具有Amazon Redshift ODBC連線的資料載入(RDBMS)活動時,表格或檢視欄可能不會顯示在欄選擇對話方塊中。 當欄清單保持空白時,表格選擇器可以正常運作。
說明 description
針對Redshift資料來源設定資料載入(RDBMS)活動時,會發生此問題:
- 選取Redshift連線。
- 選取表格或檢視。
- 選擇選取要擷取的資料行,或開啟查詢資料行選擇器。
- 不會傳回任何欄。
使用相同連線的其他表格可能會正確顯示其欄。 一般SQL查詢也可以繼續運作,這表示連線和表格層級的資料存取不一定失敗。
調查中受影響的物件包括:
- 使用分配和排序鍵定義的Redshift表格。
- 在多個資料庫中使用UNION ALL建置的檢視,包括透過資料流樣式參照公開的物件。
解決方法 resolution
根本原因
資料表中繼資料已由Redshift結構描述許可權隱藏
Campaign使用Redshift ODBC中繼資料路徑,查詢SVV_COLUMNS以擷取欄定義。
在受影響的案例中:
- 對資料表的一般查詢成功。
- 資料庫使用者可以存取表格資料。
- SVV_COLUMNS查詢執行時沒有SQL錯誤。
- SVV_COLUMNS傳回零列。
- 因此,Campaign未收到要顯示的欄中繼資料。
可能的原因是許可權不對稱:使用者擁有表格的SELECT存取權,但沒有上層結構描述的USAGE許可權。 當架構使用未獲授權時,Redshift可在從SVV_COLUMNS篩選中繼資料時允許表格讀取。
複雜的跨資料庫檢視不會透過SVV_COLUMNS公開
此外,受影響的檢視會合併來自多個資料庫的表格並使用資料集樣式參照。 Redshift ODBC聯結器使用的中繼資料機制依賴SVV_COLUMNS,但此系統檢視不會公開該型別跨資料庫檢視的欄。
因此,即使檢視定義本身有效,Campaign仍無法填入欄選擇器。
這種情況被視為不支援或不完整的中繼資料功能,需要增強功能才能使用其他Redshift中繼資料來源,例如更廣的系統檢視或ODBC驅動程式的原生中繼資料API。
資料表的解析度
請要求Redshift資料庫管理員確認,在Campaign外部帳戶上設定的相同資料庫使用者,擁有上層結構描述的USAGE許可權。
對失敗的資料庫使用者使用下列唯讀檢查:
選取
current_database(),
current_user;
選取
has_schema_privilege(
current_user,
'< schema_name> ',
‘使用狀況’
) AS has_schema_usage;
選取
column_name,
data_type
從svv_columns
WHERE table_schema = '< schema_name> ’
AND table_name = '< table_name> ';
如果缺少綱要用途,請將其授與Campaign資料庫使用者:
授權使用情況
在結構描述< schema_name>上
至< campaign_db_user> ;
例如,使用者仍必須保留必要的表格層級許可權:
授與SELECT
在資料表< schema_name>上。< table_name>
至< campaign_db_user> ;
許可權變更後,請重新開啟或重新整理資料載入(RDBMS)活動,並確認欄清單已填入。
在架構上授予USAGE可讓使用者參照該架構中的物件。 它本身不會授予表格資料的存取權。
複雜檢視的解決方法或因應措施
對於未在SVV_COLUMNS中表示的檢視,請使用下列其中一種方法:
- 使用支援的基底資料表或結構描述,而非複雜檢視。
- 使用可直接提供SQL的查詢活動或外部查詢機制。
- 要求資料庫團隊透過支援的表格或較簡單的檢視來公開所需的資料。
- 追蹤跨資料庫或資料流支援檢視作為產品增強功能的支援。
在另一個客戶測試中,使用一般ODBC連線路徑,讓驅動程式的原生SQLColumns()中繼資料API傳回Redshift特定連線路徑未傳回的欄。 這可能是個有用的診斷或臨時解決方法,但在建議作為永久解決方案之前,應該針對特定環境驗證它。