HPL/SQL - PART_LOC 함수
HPL/SQL - PART_LOC 함수
PART_LOC 함수는 지정한 테이블 파티션의 위치를 HDFS나 다른 스토리지에서 반환해요. 파티션 데이터가 어디에 저장돼 있는지 경로를 알려줘요.
출처: 문서
본문
PART_LOC 함수는 지정한 테이블 파티션의 위치를 HDFS 또는 다른 스토리지에서 반환합니다.
구문:
PART_LOC([db_name.]table_name, part_col=filter, ... [, with_hostname]);
매개변수:
| 매개변수 | 타입 | 값 | 설명 |
|---|---|---|---|
| [dbname.]table_name | VARCHAR | 식별자, 변수 또는 표현식 | 테이블 이름 |
| part_col=filter | 하나 이상의 파티션 필터 | ||
| with_hostname | INT | 변수 또는 표현식 | 1 - 호스트 이름 포함 경로 반환 / 0 - 호스트 이름 제외(기본값) |
참고 사항:
- HPL/SQL은 파티션 정보를 얻기 위해 다음 Hive 문을 사용합니다:
DESCRIBE EXTENDED db_name.tab_name PARTITION (part_col=filter, ...)
반환 값:
- 파티션 디렉터리
- 테이블이나 파티션이 존재하지 않으면 NULL
반환 타입:
STRING (VARCHAR/CHAR).
예제:
테이블 _db.orders_는 _country_로 파티셔닝되어 있고 다음과 같은 파티션이 있습니다:
| 파티션 | 디렉터리 |
|---|---|
| country='US' | /data/db/orders/country=US |
| country='UK' | /data/db/orders/country=UK |
| country='DE' | /data/db/orders/country=DE |
| country='BY' | /data/db/orders/country=BY |
country=US 파티션의 위치 가져오기:
PART_LOC(db.orders, country='US', 1);
Result:
hdfs://hostname:8020/data/db/orders/country=US
호스트 이름 없이 경로 반환하기:
PART_LOC(db.orders, country='US');
Result:
/data/db/orders/country=US
호환성: HPL/SQL 확장
더 알아보기 (Learn more)
파티션의 위치를 코드로 알아내면 외부 시스템과 연동하거나 파일을 직접 다룰 때 유용해요. 관련 파티션 함수로는 MAX_PART_DATE, MAX_PART_STRING 등이 있어요.