QueryRecord 2025.5.31.15¶
번들¶
org.apache.nifi | nifi-standard-nar
설명¶
FlowFile 의 내용에 대해 1개 이상의 SQL 쿼리를 평가합니다. 그러면 SQL 쿼리 결과가 출력 FlowFile 의 내용이 됩니다. 예를 들어, 필드별 필터링, 변환 및 행 수준 필터링에 사용할 수 있습니다. 열 이름을 바꾸고, 간단한 계산과 집계를 수행하는 등의 작업을 수행할 수 있습니다. 프로세서는 수신 및 발신 데이터 형식에 유연하게 대응할 수 있도록 Record Reader 컨트롤러 서비스와 Record Writer 서비스로 구성됩니다. 프로세서는 1개 이상의 사용자 정의 속성으로 구성되어야 합니다. 속성의 이름은 데이터를 라우팅할 관계이고, 속성의 값은 입력 데이터를 변환/필터링하는 방법을 지정하는 데 사용되는 SQL SELECT 문입니다. SQL 문은 ANSI SQL 이 유효해야 하며 Apache Calcite에 의해 구동됩니다. 변환이 실패하면 원본 FlowFile 은 ‘실패’ 관계로 라우팅됩니다. 그렇지 않으면 선택한 데이터가 연결된 관계로 라우팅됩니다. Record Writer가 레코드에서 스키마를 상속하기로 선택한 경우 상속되는 스키마는 입력 레코드가 아닌 ResultSet 에서 상속된다는 점에 유의해야 합니다. 이렇게 하면 QueryRecord 프로세서의 단일 인스턴스가 여러 쿼리를 가질 수 있으며, 각 쿼리는 서로 다른 열 및 집계 세트를 반환합니다. 하지만 결과적으로 파생되는 스키마에는 스키마 이름이 없으므로 구성된 Record Writer가 레코드에서 스키마를 상속하는 경우 스키마 이름을 특성으로 작성하려고 시도하지 않는 것이 중요합니다. 자세한 내용은 프로세서 사용 설명서를 참조하십시오.
입력 요구 사항¶
REQUIRED
민감한 동적 속성 지원¶
false
속성¶
속성 |
설명 |
---|---|
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가 됩니다). |
include-zero-record-flowfiles |
수신 FlowFile 에 대해 SQL 문을 실행할 때 결과에 데이터가 없는 경우 이 속성은 FlowFile 을 해당 관계로 보낼지 여부를 지정합니다 |
record-reader |
수신 데이터를 구문 분석하고 데이터의 스키마를 결정하는 데 사용할 컨트롤러 서비스를 지정합니다 |
record-writer |
결과에 FlowFile 을 기록하는 데 사용할 컨트롤러 서비스를 지정합니다 |
관계¶
이름 |
설명 |
---|---|
실패 |
FlowFile 이 어떤 이유로든 처리에 실패하는 경우(예: SQL 문에 입력 데이터에 없는 열이 포함된 경우) 원본 FlowFile 은 이 관계로 라우팅됩니다 |
원본 |
원본 FlowFile 은 이 관계로 라우팅됩니다 |
Writes 특성¶
이름 |
설명 |
---|---|
mime.type |
Mime.type 특성을 Record Writer가 지정한 MIME 유형으로 설정합니다 |
record.count |
쿼리에서 선택한 레코드의 수입니다 |
QueryRecord.Route |
FlowFile 이 라우팅된 관계 |
사용 사례¶
레코드의 필드 값을 기준으로 레코드 필터링하기 |
특정 레코드만 보관 |
보관할 필드의 이름을 알고 있는 특정 필드만 레코드에 보관합니다 |
레코드 중심의 데이터를 내용에 따라 처리할 수 있도록 라우팅합니다 |