쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

페더레이션 패스스루 쿼리 사용

포커스 모드

이 페이지에서

페더레이션 패스스루 쿼리 사용 - Amazon Athena

Athena에서는 데이터 소스 자체의 쿼리 언어를 사용하여 페더레이션 데이터 소스에서 쿼리를 실행하고 실행을 위해 전체 쿼리를 데이터 소스로 푸시다운할 수 있습니다. 이러한 쿼리를 패스스루 쿼리라고 합니다. 패스스루 쿼리를 실행하려면 Athena 쿼리에서 테이블 함수를 사용합니다. 데이터 소스에서 실행할 패스스루 쿼리를 테이블 함수의 인수 중 하나에 포함시킵니다. 패스스루 쿼리는 Athena SQL을 사용하여 분석할 수 있는 테이블을 반환합니다.

지원되는 커넥터

다음 Athena 데이터 소스 커넥터는 패스스루 쿼리를 지원합니다.

고려 사항 및 제한

Athena에서 패스스루 쿼리를 사용할 때 다음 사항을 고려하세요.

  • 쿼리 패스스루는 Athena SELECT 문 또는 읽기 작업에만 지원됩니다.

  • 쿼리 성능은 데이터 소스의 구성에 따라 다를 수 있습니다.

  • 쿼리 패스스루는 Lake Formation 세분화된 액세스 제어를 지원하지 않습니다.

  • 패스스루 쿼리는 Glue 데이터 카탈로그로 등록된 데이터 소스에서는 지원되지 않습니다.

구문

일반적인 Athena 쿼리 패스스루 구문은 다음과 같습니다.

SELECT * FROM TABLE(catalog.system.function_name(arg1 => 'arg1Value'[, arg2 => 'arg2Value', ...]))

다음 사항에 유의하세요.

  • catalog - 대상 Athena 페더레이션 커넥터 이름 또는 데이터 카탈로그 이름입니다.

  • system - 함수가 포함된 네임스페이스입니다. 모든 Athena 커넥터 구현은 이 네임스페이스를 사용합니다.

  • function_name - 패스스루 쿼리를 데이터 소스로 푸시하는 함수의 이름입니다. 이를 흔히 query라고 부릅니다. 이 조합 catalog.system.function_name은 함수의 전체 확인 경로입니다.

  • arg1, arg2 등 – 함수 인수입니다. 사용자는 이러한 인수를 함수에 전달해야 합니다. 대부분의 경우에는 데이터 소스로 전달되는 쿼리 문자열입니다.

대부분의 데이터 소스에서 첫 번째이자 유일한 인수 query이고 그 뒤에는 화살표 연산자 => 기호와 쿼리 문자열이 붙습니다.

SELECT * FROM TABLE(catalog.system.query(query => 'query string'))

간편함을 위해 선택적으로 명명된 query 인수와 화살표 연산자 => 기호를 생략할 수 있습니다.

SELECT * FROM TABLE(catalog.system.query('query string'))

대상 카탈로그의 컨텍스트 내에서 쿼리를 실행하는 경우 catalog 이름을 제거하여 쿼리를 더욱 단순화할 수 있습니다.

SELECT * FROM TABLE(system.query('query string'))

데이터 소스에 쿼리 문자열 이상이 필요한 경우 데이터 소스에서 예상하는 순서대로 명명된 인수를 사용합니다. 예를 들어 arg1 => 'arg1Value' 표현식에는 첫 번째 인수와 해당 값이 포함됩니다. arg1이라는 이름은 데이터 소스에 따라 다르고 커넥터마다 다를 수 있습니다.

SELECT * FROM TABLE( system.query( arg1 => 'arg1Value', arg2 => 'arg2Value', arg3 => 'arg3Value' ));

인수 이름을 생략하여 위 문을 단순화할 수도 있습니다. 하지만 메서드의 서명 순서를 따라야 합니다. 함수 서명에 대한 자세한 내용은 각 커넥터의 설명서를 참조하세요.

SELECT * FROM TABLE(catalog.system.query('arg1Value', 'arg2Value', 'arg3Value'))

다음 예제와 같이 전체 함수 확인 경로를 활용하여 여러 Athena 커넥터에서 여러 패스스루 쿼리를 실행할 수 있습니다.

SELECT c_customer_sk FROM TABLE (postgresql.system.query('select * from customer limit 10')) UNION SELECT c_customer_sk FROM TABLE(dynamodb.system.query('select * from customer')) LIMIT 10

패스스루 쿼리를 페더레이션된 뷰의 일부로 사용할 수 있습니다. 동일한 제한 사항이 적용됩니다. 자세한 내용은 페더레이션된 뷰 쿼리를 참조하세요.

CREATE VIEW catalog.database.ViewName AS SELECT * FROM TABLE ( catalog.system.query('query') )

특정 커넥터에 사용할 정확한 구문에 대한 자세한 내용은 개별 커넥터 설명서를 참조하세요.

따옴표 사용

전달한 쿼리 문자열을 비롯한 인수 값은 다음 예제와 같이 작은따옴표로 묶어야 합니다.

SELECT * FROM TABLE(system.query(query => 'SELECT * FROM testdb.persons LIMIT 10'))

쿼리 문자열을 큰따옴표로 묶으면 쿼리가 실패합니다. 다음 쿼리는 COLUMN_NOT_FOUND: line 1:43: Column 'select * from testdb.persons limit 10' cannot be resolved 오류 메시지와 함께 실패합니다.

SELECT * FROM TABLE(system.query(query => "SELECT * FROM testdb.persons LIMIT 10"))

작은따옴표를 이스케이프하려면 원본에 작은따옴표를 추가합니다(예: terry''s_groupterry's_group).

예시

다음 예제 쿼리는 데이터 소스로 쿼리를 푸시다운합니다. 쿼리는 customer 테이블의 모든 열을 선택하여 결과를 10개로 제한합니다.

SELECT * FROM TABLE( catalog.system.query( query => 'SELECT * FROM customer LIMIT 10;' ))

다음 문은 동일한 쿼리를 실행하지만 선택적으로 명명된 query 인수와 화살표 연산자 => 기호를 제거합니다.

SELECT * FROM TABLE( catalog.system.query( 'SELECT * FROM customer LIMIT 10;' ))

쉽게 재사용할 수 있도록 페더레이션된 뷰 내에 캡슐화할 수도 있습니다. 뷰와 함께 사용하는 경우 전체 함수 확인 경로를 사용해야 합니다.

CREATE VIEW AwsDataCatalog.default.example_view AS SELECT * FROM TABLE ( catalog.system.query('SELECT * FROM customer LIMIT 10;') )

쿼리 패스스루 옵트아웃

패스스루 쿼리를 비활성화하려면 enable_query_passthrough라는 이름으로 Lambda 환경 변수를 추가하고 false로 설정합니다.

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.