캠페인: RDBMS(캠페인 데이터 로드)에 Redshift 열이 표시되지 않음
Adobe Campaign이 Amazon Redshift ODBC 연결과 함께 RDBMS(데이터 로드) 활동을 사용하는 경우 테이블 또는 뷰 열이 열 선택 대화 상자에 나타나지 않을 수 있습니다. 열 목록이 비어 있는 동안에는 테이블 선택기가 올바르게 작동할 수 있습니다.
설명 description
이 문제는 Redshift 데이터 소스에 대해 RDBMS(데이터 로드) 활동을 구성할 때 발생합니다.
- Redshift 연결을 선택합니다.
- 테이블 또는 뷰를 선택합니다.
- 추출할 열 선택을 선택하거나 쿼리 열 선택기를 엽니다.
- 반환된 열이 없습니다.
동일한 연결을 사용하는 다른 표에는 해당 열이 올바르게 표시될 수 있습니다. 일반 SQL 쿼리는 계속 작동할 수도 있습니다. 이는 연결 및 테이블 수준 데이터 액세스가 반드시 실패하지는 않음을 나타냅니다.
이번 조사에서 영향을 받은 대상은 다음과 같습니다.
- 배포 및 정렬 키 정의를 사용하는 Redshift 테이블입니다.
- 데이터시트 스타일 참조를 통해 노출된 개체를 포함하여 여러 데이터베이스에서 UNION ALL로 빌드된 보기입니다.
해결 방법 resolution
근본 원인
Redshift 스키마 권한으로 테이블 메타데이터를 숨깁니다
Campaign에서 사용하는 Redshift ODBC 메타데이터 경로는 SVV_COLUMNS를 쿼리하여 열 정의를 검색합니다.
영향을 받는 경우:
- 테이블에 대한 일반 쿼리가 성공했습니다.
- 데이터베이스 사용자는 테이블 데이터에 액세스할 수 있었습니다.
- SQL 오류 없이 실행된 SVV_COLUMNS 쿼리입니다.
- SVV_COLUMNS에서 0개 행을 반환했습니다.
- 따라서 캠페인에 표시할 열 메타데이터가 없습니다.
가능한 원인은 권한 비대칭입니다. 사용자가 테이블에 대한 SELECT 액세스 권한이 있지만 상위 스키마에 대한 USAGE 권한이 없습니다. Redshift는 스키마 사용이 허가되지 않은 경우 SVV_COLUMNS에서 메타데이터를 필터링하는 동안 테이블 읽기를 허용할 수 있습니다.
SVV_COLUMNS를 통해 복잡한 데이터베이스 간 보기가 노출되지 않음
또한 영향을 받는 뷰는 여러 데이터베이스의 테이블을 결합하고 데이터시트 스타일 참조를 사용했습니다. Redshift ODBC 커넥터에서 사용하는 메타데이터 메커니즘은 SVV_COLUMNS를 사용하지만 이 시스템 보기는 해당 유형의 데이터베이스 간 보기에 대한 열을 표시하지 않았습니다.
그 결과, 보기 정의 자체가 유효한 경우에도 Campaign에서 열 선택기를 채울 수 없습니다.
이 시나리오는 더 넓은 시스템 보기 또는 ODBC 드라이버의 기본 메타데이터 API와 같은 다른 Redshift 메타데이터 소스를 사용하기 위해 개선이 필요한 지원되지 않거나 불완전한 메타데이터 기능으로 간주되었습니다.
테이블에 대한 해상도
Campaign 외부 계정에 구성된 동일한 데이터베이스 사용자가 상위 스키마에 대한 USAGE 권한이 있는지 확인하려면 Redshift 데이터베이스 관리자에게 문의하십시오.
실패한 데이터베이스 사용자에게 다음과 같은 읽기 전용 검사를 사용합니다.
선택
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> ;
필요한 테이블 수준 권한은 사용자에게 계속 있어야 합니다. 예를 들면 다음과 같습니다.
선택 부여
테이블 < schema_name> .<의 table_name>< campaign_db_user> 님,
권한 변경 후 RDBMS(데이터 로드) 활동을 다시 열거나 새로 고치고 열 목록이 채워졌는지 확인합니다.
스키마에 USAGE를 부여하면 사용자가 해당 스키마의 객체를 참조할 수 있습니다. 이 권한 자체로는 테이블 데이터에 대한 액세스 권한을 부여하지 않습니다.
복잡한 보기에 대한 해결 방법
SVV_COLUMNS에 표시되지 않는 뷰의 경우 다음 접근 방식 중 하나를 사용합니다.
- 복합 보기 대신 지원되는 기본 테이블 또는 스키마를 사용하십시오.
- SQL을 직접 제공할 수 있는 쿼리 활동 또는 외부 쿼리 메커니즘을 사용합니다.
- 지원되는 테이블 또는 간단한 보기를 통해 필요한 데이터를 표시하도록 데이터베이스 팀에 요청합니다.
- 향상된 제품으로 데이터베이스 간 또는 데이터 공유 지원 보기에 대한 지원을 추적합니다.
별도의 고객 테스트에서 일반 ODBC 연결 경로를 사용하면 드라이버의 기본 SQLColumns() 메타데이터 API에서 Redshift 관련 커넥터 경로가 반환하지 않은 열을 반환할 수 있습니다. 이 방법은 유용한 진단 또는 임시 해결 방법이 될 수 있지만 영구 솔루션으로 권장되기 전에 특정 환경에 대해 유효성을 검사해야 합니다.