Hive0.13과 Presto로 배열의 순서 관계를 남기고 여러가지 처리하고 싶다.
4182 단어 TreasureData
원래 테이블에는 쉼표로 구분 된 문자열이 저장됩니다.
num
ans
1,4
2,5
이 각 열에는 대응 관계가 있으며,
1-2
4-5
이 대응 관계를 남기고 처리하고 싶습니다.
즉, 아래와 같은 테이블을 완성할 수 있으면 된다.
num
ans
1
2
4
5
Hive 0.10이라고 어렵지만,
Hive 0.13부터 posexplode 함수가 있습니다.
이것은 position 를 보관 유지한 채로, 배열을 전개할 수 있다.
SELECT t1.col as num, t2.col as ans
FROM (
SELECT seq, col FROM table
LATERAL VIEW posexplode(split('1,4', ',')) rec as seq, col
) t1
JOIN (
SELECT seq, col FROM table
LATERAL VIEW posexplode(split('2,5', ',')) rec as seq, col
) t2
ON t1.seq = t2.seq
Presto에서는 regexp_extract_all 함수와 UNNEST를 사용한다.
SELECT
n as num, a as ans
FROM (
-- record 生成用
SELECT n1, n2
FROM (
VALUES
('1,4', '2,5')
) AS x (n1, n2)
) t1
CROSS JOIN UNNEST(regexp_extract_all(n1, '[^,]+'), regexp_extract_all(n2, '[^,]+')) AS t (n, a)
덧붙여서 TreasureData의 Presto의 자동 구문 체크에서는 UNNEST를 사용하면 Warning이 나오지만,
무시하고 실행할 수 있습니다.
Reference
이 문제에 관하여(Hive0.13과 Presto로 배열의 순서 관계를 남기고 여러가지 처리하고 싶다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/toru-takahashi/items/3aad8c09c86dc8f18a78텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)