내가 적색 편이에 큰 테이블을 피벗 방법을 다음입니다 : AWS Redshift에 피벗 테이블 모든 치수
Pivot a table with Amazon RedShift/PostgreSQL
그러나 내가 피벗 많은 수의 그룹을 가지고 즉,m1
,
m2
, ... 모든 고유 값을 반복하고 각각에 동일한 논리를 적용하고 결과 열 이름의 별명을 지정하는 방법은 무엇입니까?
내가 적색 편이에 큰 테이블을 피벗 방법을 다음입니다 : AWS Redshift에 피벗 테이블 모든 치수
Pivot a table with Amazon RedShift/PostgreSQL
그러나 내가 피벗 많은 수의 그룹을 가지고 즉,m1
,
m2
, ... 모든 고유 값을 반복하고 각각에 동일한 논리를 적용하고 결과 열 이름의 별명을 지정하는 방법은 무엇입니까?
임의의 수의 그룹으로 피벗 할 수 있도록하려는 경우 그룹을 JSON 문자열로 결합한 다음 Redshift JSON functions으로 관심있는 그룹을 추출 할 수 있습니다. 매우 큰 데이터 세트의 경우이 작업을 수행하지 않으려 고합니다. 실제로
select DimensionA, DimensionB,
json_extract_path_text(json_pivot, 'm1') m1,
json_extract_path_text(json_pivot, 'm2') m2
from (
select DimensionA, DimensionB,
'{' || listagg(quote_ident(MetricName) || ':' || quote_ident(MetricValue), ',')
within group (order by MetricName) || '}' as json_pivot
from to_pivot
group by DimensionA, DimensionB
)
당신이 그런 식으로 그것을 실행하고 싶지 않아요 :
는 여기 question linked above에 샘플 데이터를 기반으로 기본적인 생각이다. inner select는 "pivoted"테이블을 생성하는 데 사용하는 것이고 outer select는 특정 그룹 값을 참조하는 방법을 보여줍니다.
이 다음과 같은 같은 희미한 조합에 대한 중복 그룹 레코드에 대해 고려하지 않습니다
DimensionA DimensionB MetricName MetricValue
---------- ---------- ---------- -----------
dimA1 dimB2 m1 v13
dimA1 dimB2 m1 v23
을 그는 데이터의 가능성 다음 그 처리 방법을 파악해야 할 것 인 경우. 나는 그것이 어떻게 구현 될지 확실하지 않다. 내 추측은 추출 될 첫 번째 사건입니다.
두 개의 사용자 지정 구분 기호를 사용하여 LISTAGG과 REGEXP_SUBSTR의 조합을 사용하여이 작업을 수행 할 수 있습니다.
JSON column type에 varchar(max)
을 사용하면 65535 바이트가 주어지며, 몇 천 개 카테고리에 대한 공간이어야합니다.
내가 아는 한, 당신은 할 수 없습니다. 일부 스크립팅을 통해 각 고유 metricName에 대한 case 문을 생성하거나 정직하게 수식을 사용하여 한 번만 쿼리를 수행하면됩니다. – htf