QueryDatabaseTableRecord 2025.10.2.19¶
번들¶
org.apache.nifi | nifi-standard-nar
설명¶
SQL select 쿼리를 생성하거나 제공된 문을 사용하여 실행하여 지정된 최대값 열의 값이 이전에 표시된 최대값보다 큰 모든 행을 가져옵니다. 쿼리 결과는 Record Writer가 지정한 형식으로 변환됩니다. 식 언어는 여러 속성에 대해 지원되지만 수신 연결은 허용되지 않습니다. Environment/System 속성은 식 언어가 포함된 모든 속성의 값을 제공하는 데 사용할 수 있습니다. 이러한 쿼리를 수행하기 위해 플로우 파일 특성을 활용하려는 경우 GenerateTableFetch 및/또는 ExecuteSQL 프로세서를 이러한 목적으로 사용할 수 있습니다. 스트림이 사용되므로 임의로 큰 결과 세트가 지원됩니다. 이 프로세서는 표준 스케줄링 방법을 사용하여 타이머 또는 cron 식에 따라 실행되도록 예약할 수 있습니다. 이 프로세서는 기본 노드에서만 실행되도록 설계되었습니다. FlowFile 특성 ‘querydbtable.row.count’는 선택된 행의 수를 나타냅니다.
입력 요구 사항¶
FORBIDDEN
민감한 동적 속성 지원¶
false
속성¶
속성 |
설명 |
|---|---|
반환할 열 |
쿼리에 사용할 열 이름의 쉼표로 구분된 목록입니다. 데이터베이스에서 이름에 특별한 처리(예: 인용 등)가 필요한 경우 각 이름에 이러한 처리를 포함해야 합니다. 열 이름을 제공하지 않으면 지정된 테이블의 모든 열이 반환됩니다. NOTE: 증분 가져오기가 제대로 작동하려면 지정된 테이블에 일관된 열 이름을 사용하는 것이 중요합니다. |
Database Connection Pooling Service |
데이터베이스에 대한 연결을 얻는 데 사용되는 컨트롤러 서비스입니다. |
데이터베이스 언어 서비스 |
특정 서비스 또는 공급업체와 관련된 문을 생성하기 위한 데이터베이스 언어 서비스입니다. |
Fetch Size |
결과 세트에서 한 번에 가져올 결과 행의 수입니다. 이는 데이터베이스 드라이버에 대한 힌트이며 정확하지 않을 수도 있습니다. 지정한 값이 0이면 힌트가 무시됩니다. PostgreSQL 을 사용하는 경우 ‘Set Auto Commit’이 ‘false’와 같아야 ‘Fetch Size’가 적용됩니다. |
최대 대기 시간 |
실행 중인SQL select 쿼리에 허용되는 최대 시간이며, 0은 제한이 없음을 의미합니다. 최대 시간이 1초 미만이면 0이 됩니다. |
최대값 열 |
A comma-separated list of column names. The processor will keep track of the maximum value for each column that has been returned since the processor started running. Using multiple columns implies an order to the column list, and each column ‘s values are expected to increase more slowly than the previous columns’ values. Thus, using multiple columns implies a hierarchical structure of columns, which is usually used for partitioning tables. This processor can be used to retrieve only those rows that have been added/updated since the last retrieval. Note that some JDBC types such as bit/boolean are not conducive to maintaining maximum value, so columns of these types should not be listed in this property, and will result in error(s) during processing. If no columns are provided, all rows from the table will be considered, which could have a performance impact. NOTE: It is important to use consistent max-value column names for a given table for incremental fetch to work properly. |
자동 커밋 설정 |
Allows enabling or disabling the auto commit functionality of the DB connection. Default value is ‘No value set’. ‘No value set’ will leave the db connection ‘s auto commit mode unchanged. For some JDBC drivers such as PostgreSQL driver, it is required to disable the auto commit functionality to get the’Fetch Size ‘setting to take effect. When auto commit is enabled, PostgreSQL driver ignores’Fetch Size’setting and loads all rows of the result set to memory at once. This could lead for a large amount of memory usage when executing queries which fetch large data sets. More Details of this behaviour in PostgreSQL driver can be found in https://jdbc.postgresql.org//documentation/head/query.html. |
테이블 이름 |
쿼리할 데이터베이스 테이블의 이름입니다. 사용자 지정 쿼리를 사용하는 경우 이 속성은 쿼리의 별칭을 지정하는 데 사용되며 FlowFile 에 특성으로 표시됩니다. |
db-fetch-db-type |
Database Type for generating statements specific to a particular service or vendor. The Generic Type supports most cases but selecting a specific type enables optimal processing or additional features. |
db-fetch-sql-query |
데이터를 검색하는 데 사용되는 사용자 지정 SQL 쿼리입니다. 다른 속성에서 SQL 쿼리를 작성하는 대신 이 쿼리는 하위 쿼리로 래핑됩니다. 쿼리에는 ORDER BY 문이 없어야 합니다. |
db-fetch-where-clause |
SQL 쿼리를 작성할 때 WHERE 조건에 추가할 사용자 정의 절입니다. |
dbf-default-precision |
DECIMAL/NUMBER 값이 ‘소수점’ Avro 논리 유형으로 작성된 경우 사용할 수 있는 자릿수를 나타내는 특정 ‘전체 자릿수’가 필요합니다. 일반적으로 전체 자릿수는 열 데이터 타입 정의 또는 데이터베이스 엔진 기본값에 의해 정의됩니다. 그러나 일부 데이터베이스 엔진에서는 정의되지 않은 전체 자릿수(0)가 반환될 수 있습니다. ‘Default Decimal Precision’은 정의되지 않은 전체 자릿수 숫자를 쓸 때 사용됩니다. |
dbf-default-scale |
DECIMAL/NUMBER 값을 ‘소수점’ Avro 논리 유형으로 작성하는 경우 가용성 있는 소수점 자릿수를 나타내는 특정 ‘스케일’이 필요합니다. 일반적으로 스케일은 열 데이터 타입 정의 또는 데이터베이스 엔진 기본값에 의해 정의됩니다. 그러나 정의되지 않은 전체 자릿수(0)가 반환되면 일부 데이터베이스 엔진에서는 스케일이 불확실할 수도 있습니다. 정의되지 않은 숫자를 쓸 때는 ‘Default Decimal Scale’이 사용됩니다. 값이 지정된 스케일보다 소수점이 많은 경우 값이 반올림됩니다(예: 1.53은 스케일 0으로 2가 되고 1.5는 스케일 1로 1.5가 됩니다). |
dbf-user-logical-types |
DECIMAL/NUMBER, DATE, TIME 및 TIMESTAMP 열에 Avro 논리 유형을 사용할지 여부. 비활성화하면 문자열로 작성됩니다. 활성화하면 논리 유형이 기본 유형으로 사용되며, 구체적으로 DECIMAL/NUMBER 는 논리 ‘decimal’: 추가 전체 자릿수 및 스케일 메타 데이터와 함께 바이트로 작성, DATE 는 논리 ‘date-millis’: Unix epoch(1970-01-01) 이후 날짜를 나타내는 int로 작성, TIME 은 논리 ‘time-millis’: Unix epoch 이후 밀리초를 나타내는 int로 작성, TIMESTAMP 는 논리 ‘timestamp-millis’: Unix epoch 이후 밀리초를 나타내는 long형으로 작성됩니다. 작성된 Avro 레코드의 리더가 이러한 논리 유형을 알고 있다면, 리더 구현에 따라 이러한 값을 더 많은 컨텍스트로 역직렬화할 수 있습니다. |
initial-load-strategy |
프로세서가 처음 시작되거나 상태가 지워졌을 때 데이터베이스 테이블의 기존 행을 처리하는 방법. ‘initial.maxvalue.*’ 동적 속성이 구성된 경우에도 이 속성은 무시됩니다. |
qdbt-max-frags |
최대 조각 수입니다. 지정한 값이 0이면 모든 조각이 반환됩니다. 이렇게 하면 이 프로세서가 대규모 테이블을 수집할 때 OutOfMemoryError 가 발생하지 않습니다. 참고: 이 속성을 설정하면 수신 결과가 정렬되지 않고 결과 세트에 행이 포함되지 않은 임의의 경계에서 조각이 끝날 수 있으므로 데이터가 손실될 수 있습니다. |
qdbt-max-rows |
단일 FlowFile 에 포함될 결과 행의 최대 개수입니다. 이렇게 하면 매우 큰 결과 세트를 여러 개의 FlowFiles 로 분할할 수 있습니다. 지정된 값이 0이면 모든 행이 1개의 FlowFile 로 반환됩니다. |
qdbt-output-batch-size |
프로세스 세션을 커밋하기 전에 큐에 넣을 출력 FlowFiles 의 개수입니다. 0으로 설정하면 모든 결과 세트 행이 처리되고 FlowFiles 출력이 다운스트림 관계로 전송할 준비가 되면 세션이 커밋됩니다. 결과 세트가 큰 경우 프로세서 실행이 끝날 때 FlowFiles 이 대량으로 전송될 수 있습니다. 이 속성을 설정하면 지정된 수의 FlowFiles 전송이 준비되면 세션이 커밋되어 FlowFiles 을 다운스트림 관계에 릴리스합니다. NOTE: 이 속성이 설정되면 FlowFiles 에 maxvalue.* 및 fragment.count 특성이 설정되지 않습니다. |
qdbtr-normalize |
출력 스키마를 생성할 때 열 이름의 문자를 변경할지 여부입니다. 예를 들어, 콜론과 기간은 밑줄로 변경됩니다. |
qdbtr-record-writer |
FlowFile 에 결과를 기록하는 데 사용할 컨트롤러 서비스를 지정합니다. Record Writer는 스키마 상속을 사용하여 추론된 스키마 동작을 에뮬레이션할 수 있습니다. 즉, 작성기에서 명시적 스키마를 정의할 필요가 없으며 열 유형에서 스키마를 추론하는 데 사용된 것과 동일한 로직이 제공될 것입니다. |
상태 관리¶
범위 |
설명 |
|---|---|
CLUSTER |
지정된 테이블에서 쿼리 성능을 수행한 후 지정된 열의 최대값은 향후 쿼리 실행에 사용할 수 있도록 유지됩니다. 이렇게 하면 프로세서는 최대값이 보존된 값보다 큰 레코드만 가져올 수 있습니다. 증분 가져오기, 새로 추가된 행 가져오기 등에 사용할 수 있습니다. 최대 값을 지우려면 상태 관리 설명서에 따라 프로세서의 상태를 지우십시오 |
관계¶
이름 |
설명 |
|---|---|
성공 |
SQL 쿼리 결과 세트에서 FlowFile 을 성공적으로 생성했습니다. |
Writes 특성¶
이름 |
설명 |
|---|---|
tablename |
쿼리 중인 테이블의 이름 |
querydbtable.row.count |
쿼리에서 선택한 행 수입니다 |
fragment.identifier |
‘Max Rows Per Flow File’이 설정된 경우 동일한 쿼리 결과 세트의 모든 FlowFiles 은 fragment.identifier 특성에 대해 동일한 값을 갖습니다. 그런 다음 결과를 상호 연관시키는 데 사용할 수 있습니다. |
fragment.count |
‘Max Rows Per Flow File’이 설정된 경우 이는 단일 ResultSet 에서 생성되는 FlowFiles 의 총 개수입니다. 이는 동일한 수신 ResultSet 에 속하는 FlowFiles 의 수를 파악하기 위해 fragment.identifier 특성과 함께 사용할 수 있습니다. 출력 배치 크기가 설정되어 있으면 이 특성이 채워지지 않습니다. |
fragment.index |
‘Max Rows Per Flow File’이 설정된 경우, 동일한 결과 세트 FlowFile 에서 모두 파생된 발신 FlowFiles 목록에서 이 FlowFile 의 위치가 변경됩니다. 이것은 fragment.identifier 특성과 함께 사용하여 동일한 쿼리 결과 세트에서 어떤 FlowFiles 이 생성되었는지, 어떤 순서로 FlowFiles 이 생성되었는지 알 수 있습니다 |
최대값.* |
각 특성에는 지정된 ‘최대값 열’의 관측된 최대값이 포함됩니다. 특성의 접미사는 열의 이름입니다. 출력 배치 크기가 설정되어 있으면 이 특성이 채워지지 않습니다. |
mime.type |
Mime.type 특성을 Record Writer가 지정한 MIME 유형으로 설정합니다. |
record.count |
Record Writer가 출력한 레코드 수입니다. |
사용 사례¶
데이터베이스 테이블에서 모든 행을 검색합니다. |
단일 데이터베이스 테이블의 증분 로딩을 수행하여 테이블에 추가되는 새 행만 가져옵니다. |
다른 구성 요소가 포함된 사용 사례¶
여러 데이터베이스 테이블의 증분 로딩을 수행하여 테이블에 추가되는 새 행만 가져옵니다. |