ListDatabaseTables
ListDatabaseTables
데이터베이스 연결에서 테이블에 대한 메타데이터를 담은 flow file 집합을 생성하는 프로세서예요. 테이블 메타데이터를 한 번 가져오면 Refresh Interval(설정한 경우)이 경과하거나 상태를 수동으로 지우기 전까지 다시 가져오지 않아요.
출처: Snowflake 문서
본문
기능 — 일반 제공(Generally Available)
Openflow Snowflake 배포는 AWS, Azure, GCP Commercial 리전의 모든 계정에서 사용할 수 있어요. Openflow BYOC 배포는 AWS Commercial 리전의 모든 계정에서 사용할 수 있어요.
Bundle
org.apache.nifi | nifi-standard-nar
설명 (Description)
데이터베이스 연결에서 테이블에 대한 메타데이터에 해당하는 속성을 각각 담은 일련의 flow file을 생성해요. 테이블 메타데이터를 한 번 가져온 뒤에는 Refresh Interval(설정한 경우)이 경과하거나 상태를 수동으로 지우기 전까지 다시 가져오지 않아요.
태그 (Tags)
database, jdbc, list, sql, table
입력 요구사항 (Input Requirement)
FORBIDDEN (금지)
민감한 동적 속성 지원 (Supports Sensitive Dynamic Properties)
false
속성 (Properties)
| Property | Description |
|---|---|
| list-db-include-count | 테이블의 행 수를 flow file 속성으로 포함할지 여부예요. 가져온 목록의 각 테이블마다 데이터베이스 쿼리가 생성되므로 성능에 영향을 줄 수 있어요. |
| list-db-refresh-interval | 프로세서 상태를 초기화해 현재의 모든 테이블을 다시 나열하기까지 경과할 시간이에요. 이 시간 동안 프로세서는 계속 실행될 수 있지만 이미 나열된 테이블은 다시 나열되지 않아요. 다만 새로 추가된 테이블은 프로세서 실행 중에 나열돼요. 값이 0이면 상태가 자동으로 초기화되지 않으므로 사용자가 수동으로 Clear State를 해야 해요. |
| list-db-tables-catalog | 데이터베이스 테이블을 나열할 catalog 이름이에요. 이름은 데이터베이스에 저장된 catalog 이름과 일치해야 해요. 설정하지 않으면 catalog 이름으로 테이블 검색을 좁히지 않아요. 빈 문자열로 설정하면 catalog가 없는 테이블이 나열돼요. |
| list-db-tables-db-connection | 데이터베이스 연결을 얻는 데 사용하는 Controller Service예요. |
| list-db-tables-name-pattern | 데이터베이스의 테이블을 매칭하기 위한 패턴이에요. 패턴에서 “%”는 0개 이상의 문자로 된 어떤 부분 문자열과도 일치하고, “_”는 한 문자와 일치해요. 패턴은 데이터베이스에 저장된 테이블 이름과 일치해야 해요. 설정하지 않으면 모든 테이블을 가져와요. |
| list-db-tables-schema-pattern | 데이터베이스의 스키마를 매칭하기 위한 패턴이에요. 패턴에서 “%”는 0개 이상의 문자로 된 어떤 부분 문자열과도 일치하고, “_”는 한 문자와 일치해요. 패턴은 데이터베이스에 저장된 스키마 이름과 일치해야 해요. 설정하지 않으면 스키마 이름으로 테이블 검색을 좁히지 않아요. 빈 문자열로 설정하면 스키마가 없는 테이블이 나열돼요. |
| list-db-tables-types | 포함할 테이블 유형의 쉼표로 구분된 목록이에요. 예를 들어 일부 데이터베이스는 TABLE과 VIEW 유형을 지원해요. 설정하지 않으면 모든 유형의 테이블이 반환돼요. |
| record-writer | 목록을 만드는 데 사용할 Record Writer를 지정해요. 지정하지 않으면 나열된 각 엔티티마다 FlowFile 하나가 생성돼요. 지정하면 모든 엔티티가 개별 FlowFile에 속성을 추가하는 대신 단일 FlowFile에 기록돼요. |
상태 관리 (State management)
| Scopes | Description |
|---|---|
| CLUSTER | 테이블 목록을 수행한 후 쿼리 타임스탬프가 저장돼요. 이렇게 하면 프로세서가 다음 실행 때 테이블을 다시 나열하지 않아요. 프로세서 속성에 refresh interval을 지정하면, 프로세서가 해당 시간이 경과했음을 감지했을 때 상태가 초기화되고 그 결과 테이블이 다시 나열돼요. 이 프로세서는 primary node에서만 실행하도록 설계됐어요. |
관계 (Relationships)
| Name | Description |
|---|---|
| success | 수신된 모든 FlowFile은 success로 연결돼요. |
쓰기 속성 (Writes attributes)
| Name | Description |
|---|---|
| db.table.name | 연결에서 가져온 데이터베이스 테이블의 이름을 담아요. |
| db.table.catalog | 테이블이 속한 catalog의 이름을 담아요(null일 수 있음). |
| db.table.schema | 테이블이 속한 스키마의 이름을 담아요(null일 수 있음). |
| db.table.fullname | 정규화된(full-qualified) 테이블 이름을 담아요(catalog, schema 등을 포함할 수 있음). |
| db.table.type | 연결에서 가져온 데이터베이스 테이블의 유형을 담아요. 일반적인 유형은 “TABLE”, “VIEW”, “SYSTEM TABLE”, “GLOBAL TEMPORARY”, “LOCAL TEMPORARY”, “ALIAS”, “SYNONYM”이에요. |
| db.table.remarks | 연결에서 가져온 데이터베이스 테이블의 이름을 담아요. |
| db.table.count | 테이블의 행 수를 담아요. |
다른 구성 요소를 사용하는 사용 사례 (Use Cases Involving Other Components)
| 수행 내용 |
|---|
| 데이터베이스의 전체 로드를 수행해 모든 테이블 또는 특정 테이블 집합에서 모든 행을 가져오는 경우. |