

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 데이터 필터 생성
<a name="creating-data-filters"></a>

각 데이터 카탈로그 테이블에 대해 하나 이상의 데이터 필터를 생성할 수 있습니다.

**데이터 카탈로그 테이블에 대한 데이터 필터를 생성하려면(콘솔)**

1. Lake Formation 콘솔([https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/))을 엽니다.

   데이터 레이크 관리자, 대상 테이블 소유자 또는 대상 테이블에 대한 Lake Formation 권한이 있는 보안 주체로 로그인합니다.

1. 탐색 창의 **데이터 카탈로그**에서 **데이터 필터**를 선택합니다.

1. **데이터 필터** 페이지에서 **새 필터 생성**을 선택합니다.

1. **데이터 필터 생성** 대화 상자에 다음 정보를 입력합니다.
   + 데이터 필터 이름 
   + 대상 데이터베이스 - 테이블이 포함된 데이터베이스를 지정합니다.
   + 대상 테이블 
   + 열 수준 액세스 - 행 필터링만 지정하려면 이 설정을 **모든 열에 액세스**로 둡니다. 열 또는 셀 필터링을 지정하려면 **열 포함** 또는 **열 제외**를 선택한 다음 포함하거나 제외할 열을 지정합니다.

     중첩 열 - 중첩 열이 포함된 테이블에 필터를 적용하는 경우 데이터 필터 내에 중첩된 구조 열의 하위 구조를 명시적으로 지정할 수 있습니다.

     이 파일러의 보안 주체에게 SELECT 권한을 부여하면 다음 쿼리를 실행하는 보안 주체는 `customer.customerName`에 대한 데이터만 볼 수 있고 `customer.customerId`에 대한 데이터는 보지 못하게 됩니다.

     ```
     SELECT "customer" FROM "example_db"."example_table";
     ```  
![\[Column-level access settings with options to include specific columns and filter rows.\]](http://docs.aws.amazon.com/ko_kr/lake-formation/latest/dg/images/nested-column-filter.png)

      `customer` 열에 권한을 부여하면 보안 주체는 해당 열과 열(`customerName` 및 `customerID`) 아래의 중첩된 필드에 대한 액세스 권한을 받습니다.
   + 행 필터 표현식 - 행 또는 셀 필터링을 지정하려면 필터 표현식을 입력합니다. 지원되는 데이터 유형 및 연산자는 [행 필터 표현식에서의 PartiQL 지원](partiql-support.md) 섹션을 참조하세요. **모든 행에 액세스**를 선택하여 모든 행에 대한 액세스를 허용합니다.

     행 필터 표현식에 중첩된 열의 일부 열 구조를 포함하여 특정 값이 포함된 행을 필터링할 수 있습니다.

     보안 주체에게 행 필터 표현식 `Select * from example_nestedtable where customer.customerName <>'John'`이 있는 테이블에 대한 권한이 부여되고 **열 수준** 액세스가 **모든 열에 대한 액세스**로 설정된 경우 쿼리 결과에는 `customerName <>'John'`이 true로 평가되는 행만 표시됩니다.

   다음 스크린샷은 셀 필터링을 구현하는 데이터 필터를 보여줍니다. `orders` 테이블에 대한 쿼리에서는 `customer_name` 열에 대한 액세스를 거부하고 `product_type` 열에 'pharma'가 포함된 행만 표시합니다.  
![\[데이터 필터 창에는 데이터 필터 이름, 대상 데이터베이스, 대상 테이블, 그리고 모든 열에 액세스, 열 포함 및 열 제외 옵션이 있는 옵션 버튼 그룹, 열 선택(드롭다운 목록), 행 필터 표현식(여러 줄 텍스트 상자) 등의 필드가 세로로 정렬되어 있습니다. 열 제외 옵션이 선택되어 있고, customer_name 열이 제외 대상으로 선택되어 있으며, 행 필터 표현식 필드에 'product_type='pharma'가 포함되어 있습니다.\]](http://docs.aws.amazon.com/ko_kr/lake-formation/latest/dg/images/data-filter-sample-pharma.png)

1. **Create filter(필터 생성)**를 선택합니다.

**중첩된 필드에 셀 필터 정책이 적용된 데이터 필터를 만들려면**

 이 섹션에서는 다음 샘플 스키마를 사용하여 데이터 셀 필터를 생성하는 방법을 보여줍니다.

```
[
    { name: "customer", type: "struct<customerId:string,customerName:string>" },
    { name: "customerApplication", type: "struct<appId:string>" },
    { name: "product", type: "struct<offer:struct<prodId:string,listingId:string>,type:string>" },
    { name: "purchaseId", type: "string" },
]
```

1. **데이터 필터 생성** 페이지에서 데이터 필터 이름을 입력합니다.

1.  그런 다음 드롭다운을 사용하여 데이터베이스 이름과 테이블 이름을 선택합니다.

1. **열 수준 액세스** 섹션에서 포함된 열을 선택하고 중첩된 열(`customer.customerName`)을 선택합니다.

1. **행 수준 액세스** 섹션에서 **모든 행에 액세스** 옵션을 선택합니다.

1. **Create filter(필터 생성)**를 선택합니다.

   이 필터에 대한 `SELECT` 권한을 부여하면 보안 주체는 `customerName` 열의 모든 행에 액세스할 수 있습니다.

1. 다음으로, 동일한 데이터베이스/테이블에 대해 다른 데이터 필터를 정의합니다.

1. **열 수준 액세스** 섹션에서 포함된 열을 선택하고 또 다른 중첩된 열(`customer.customerid`)을 선택합니다.

1. **행 수준 액세스** 섹션에서 **행 필터링**을 선택하고 **행 필터 표현식**(`customer.customerid <> 5`)을 입력합니다.

1. **Create filter(필터 생성)**를 선택합니다.

   이 필터에 대한 `SELECT` 권한을 부여하면 보안 주체는 `customerName`의 모든 행과 `customerId` 열에서 값이 5인 셀을 제외한 `customerId` 필드에 대한 액세스 권한을 받습니다.