

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# 연합 쿼리 사용 예
<a name="federated_query_example"></a>

다음 예에서는 연합 쿼리를 실행하는 방법을 보여줍니다. Amazon Redshift 데이터베이스에 연결된 SQL 클라이언트를 사용하여 SQL을 실행합니다.

## PostgreSQL에서 연합 쿼리를 사용하는 예
<a name="federated_query_example_postgres"></a>

다음 예에서는 Amazon Redshift 데이터베이스, Aurora PostgreSQL 데이터베이스 및 Amazon S3를 참조하는 연합 쿼리를 설정하는 방법을 보여줍니다. 이 예에서는 연합 쿼리의 작동 방식을 보여줍니다. 사용자 환경에서 실행하려면 사용자 환경에 맞게 변경합니다. 이 작업을 수행하기 위한 사전 조건은 [PostgreSQL에 대한 연합 쿼리 사용 시작하기](getting-started-federated.md) 단원을 참조하세요.

Aurora PostgreSQL 데이터베이스를 참조하는 외부 스키마를 생성합니다.

```
CREATE EXTERNAL SCHEMA apg
FROM POSTGRES
DATABASE 'database-1' SCHEMA 'myschema'
URI 'endpoint to aurora hostname'
IAM_ROLE 'arn:aws:iam::123456789012:role/Redshift-SecretsManager-RO'
SECRET_ARN 'arn:aws:secretsmanager:us-west-2:123456789012:secret:federation/test/dataplane-apg-creds-YbVKQw';
```

Amazon S3를 참조하고 Amazon Redshift Spectrum을 사용하는 다른 외부 스키마를 생성합니다. 또한 `public`에 스키마를 사용할 수 있는 권한을 부여합니다.

```
CREATE EXTERNAL SCHEMA s3 
FROM DATA CATALOG 
DATABASE 'default' REGION 'us-west-2' 
IAM_ROLE 'arn:aws:iam::123456789012:role/Redshift-S3'; 

GRANT USAGE ON SCHEMA s3 TO public;
```

Amazon Redshift 테이블의 행 수를 표시합니다.

```
SELECT count(*) FROM public.lineitem;
            
  count
----------
25075099
```

Aurora PostgreSQL 테이블의 행 수를 표시합니다.

```
SELECT count(*) FROM apg.lineitem;
            
count
-------
11760
```

Amazon S3의 행 수를 표시합니다.

```
SELECT count(*) FROM s3.lineitem_1t_part;
            
   count
------------
6144008876
```

Amazon Redshift, Aurora PostgreSQL 및 Amazon S3에서 테이블의 뷰를 생성합니다. 이 보기는 연합 쿼리를 실행하는 데 사용됩니다.

```
CREATE VIEW lineitem_all AS
  SELECT l_orderkey,l_partkey,l_suppkey,l_linenumber,l_quantity,l_extendedprice,l_discount,l_tax,l_returnflag,l_linestatus,
         l_shipdate::date,l_commitdate::date,l_receiptdate::date, l_shipinstruct ,l_shipmode,l_comment 
  FROM s3.lineitem_1t_part 
  UNION ALL SELECT * FROM public.lineitem 
  UNION ALL SELECT * FROM apg.lineitem 
     with no schema binding;
```

결과를 제한하는 술어와 함께 `lineitem_all` 보기의 행 수를 표시합니다.

```
SELECT count(*) from lineitem_all WHERE l_quantity = 10;
               
   count
-----------
123373836
```

매년 1월의 특정 항목에 대한 판매량을 알아봅니다.

```
SELECT extract(year from l_shipdate) as year,
       extract(month from l_shipdate) as month,
       count(*) as orders
FROM lineitem_all
WHERE extract(month from l_shipdate) = 1
AND l_quantity < 2
GROUP BY 1,2
ORDER BY 1,2;

 year | month | orders
------+-------+---------
 1992 |     1 |  196019
 1993 |     1 | 1582034
 1994 |     1 | 1583181
 1995 |     1 | 1583919
 1996 |     1 | 1583622
 1997 |     1 | 1586541
 1998 |     1 | 1583198
 2016 |     1 |   15542
 2017 |     1 |   15414
 2018 |     1 |   15527
 2019 |     1 |     151
```

## 대/소문자가 혼합된 이름을 사용하는 예
<a name="federated_query_example_postgres-mixed"></a>

대/소문자가 혼합된 데이터베이스, 스키마, 테이블 또는 열 이름이 있는 지원되는 PostgreSQL 원격 데이터베이스를 쿼리하려면 `enable_case_sensitive_identifier`를 `true`로 설정합니다. 이 세션 파라미터에 대한 자세한 내용은 [enable\$1case\$1sensitive\$1identifier](r_enable_case_sensitive_identifier.md) 섹션을 참조하세요.

```
SET enable_case_sensitive_identifier TO TRUE;
```

일반적으로 데이터베이스 및 스키마 이름은 소문자입니다. 다음 예에서는 데이터베이스 및 스키마 이름이 소문자이고 테이블 및 열 이름이 대/소문자가 혼합된 지원되는 PostgreSQL 원격 데이터베이스에 연결하는 방법을 보여줍니다.

소문자 데이터베이스 이름(`dblower`)과 소문자 스키마 이름(`schemalower`)이 있는 Aurora PostgreSQL 데이터베이스를 참조하는 외부 스키마를 생성합니다.

```
CREATE EXTERNAL SCHEMA apg_lower
FROM POSTGRES
DATABASE 'dblower' SCHEMA 'schemalower'
URI 'endpoint to aurora hostname'
IAM_ROLE 'arn:aws:iam::123456789012:role/Redshift-SecretsManager-RO'
SECRET_ARN 'arn:aws:secretsmanager:us-west-2:123456789012:secret:federation/test/dataplane-apg-creds-YbVKQw';
```

쿼리가 실행되는 세션에서 `enable_case_sensitive_identifier`를 `true`로 설정합니다.

```
SET enable_case_sensitive_identifier TO TRUE;
```

연합 쿼리를 실행하여 PostgreSQL 데이터베이스의 모든 데이터를 선택합니다. 테이블(`MixedCaseTab`)과 열(`MixedCaseName`)에 대/소문자가 혼합된 이름이 있습니다. 결과는 하나의 행(`Harry`)입니다.

```
select * from apg_lower."MixedCaseTab";
```

```
 MixedCaseName
-------
 Harry
```

다음 예에서는 대/소문자가 혼합된 데이터베이스, 스키마, 테이블 및 열 이름이 있는 지원되는 PostgreSQL 원격 데이터베이스에 연결하는 방법을 보여줍니다.

외부 스키마를 생성하기 전에 `enable_case_sensitive_identifier`를 `true`로 설정합니다. 외부 스키마를 생성하기 전에 `enable_case_sensitive_identifier`를 `true`로 설정하지 않으면 데이터베이스가 존재하지 않는다는 오류가 발생합니다.

대/소문자가 혼합된 데이터베이스 이름(`UpperDB`)과 스키마 이름(`UpperSchema`)이 있는 Aurora PostgreSQL 데이터베이스를 참조하는 외부 스키마를 생성합니다.

```
CREATE EXTERNAL SCHEMA apg_upper
FROM POSTGRES
DATABASE 'UpperDB' SCHEMA 'UpperSchema'
URI 'endpoint to aurora hostname'
IAM_ROLE 'arn:aws:iam::123456789012:role/Redshift-SecretsManager-RO'
SECRET_ARN 'arn:aws:secretsmanager:us-west-2:123456789012:secret:federation/test/dataplane-apg-creds-YbVKQw';
```

연합 쿼리를 실행하여 PostgreSQL 데이터베이스의 모든 데이터를 선택합니다. 테이블(`MixedCaseTab`)과 열(`MixedCaseName`)에 대/소문자가 혼합된 이름이 있습니다. 결과는 하나의 행(`Harry`)입니다.

```
select * from apg_upper."MixedCaseTab";
```

```
 MixedCaseName
-------
 Harry
```

## MySQL에서 연합 쿼리를 사용하는 예
<a name="federated_query_example_mysql"></a>

다음 예에서는 Aurora MySQL 데이터베이스를 참조하는 연합 쿼리를 설정하는 방법을 보여줍니다. 이 예제에서는 연합 쿼리의 작동 방식을 보여 줍니다. 사용자 환경에서 실행하려면 사용자 환경에 맞게 변경합니다. 이 작업을 수행하기 위한 사전 조건은 [MySQL에 대한 연합 쿼리 사용 시작하기](getting-started-federated-mysql.md) 단원을 참조하세요.

이 예는 다음 사전 조건에 따라 다릅니다.
+ Aurora MySQL 데이터베이스에 대해 Secrets Manager에서 설정한 보안 암호입니다. 이 보안 암호는 IAM 액세스 정책 및 역할에서 참조됩니다. 자세한 내용은 [연합 쿼리 사용을 위해 비밀 및 IAM 역할 생성](federated-create-secret-iam-role.md) 섹션을 참조하세요.
+ Amazon Redshift와 Aurora MySQL을 연결하도록 설정된 보안 그룹입니다.

Aurora MySQL 데이터베이스를 참조하는 외부 스키마를 생성합니다.

```
CREATE EXTERNAL SCHEMA amysql
FROM MYSQL
DATABASE 'functional'
URI 'endpoint to remote hostname'
IAM_ROLE 'arn:aws:iam::123456789012:role/Redshift-SecretsManager-RO'
SECRET_ARN 'arn:aws:secretsmanager:us-west-2:123456789012:secret:federation/test/dataplane-apg-creds-YbVKQw';
```

Aurora MySQL 테이블의 예제 SQL 선택을 실행하여 Aurora MySQL의 직원 테이블에서 한 행을 표시합니다.

```
SELECT level FROM amysql.employees LIMIT 1;
            
 level
-------
     8
```