메시지 트리의 반복 필드 조작

이 주제에서는 SELECT 함수 및 기타 열 함수를 사용하여 메시지 트리의 반복 필드를 조작하는 방법에 대해 설명합니다.

총 주문 값이 특정 금액보다 큰 송장(invoice)에 대해 특정 조치를 수행하려고 한다고 가정하십시오. Invoice 필드의 총 주문 값을 계산하려면, 메시지의 모든 Items에서 Price 필드에 Quantity 필드를 곱하고 결과의 합계를 계산해야 합니다. 다음과 같이 SELECT 표현식을 사용하여 이를 수행할 수 있습니다.

(
  SELECT SUM( CAST(I.Price AS DECIMAL) * CAST(I.Quantity AS INTEGER) )
  FROM Body.Invoice.Purchases."Item"[] AS I
) 

예에서는 필드 PriceQuantity의 문자열 값을 올바른 데이터 유형으로 캐스트하려면 CAST 표현식을 사용해야 하는 것으로 가정합니다. Price 필드를 10진수로 캐스트하면 숫자를 표현하기 위해 어떤 스케일과 정밀도가 필요하든지 자연 스케일 및 정밀도의 10진수 값이 작성됩니다. 이러한 CAST는 데이터가 이미 적절한 데이터 유형인 경우에는 필요하지 않습니다.

SELECT 표현식은 한정 술어와 유사한 방식으로 작동되며 SELECT가 표준 데이터베이스 SQL에서 작동되는 방식과 거의 동일한 방식으로 작동됩니다. FROM 절은 반복되는 것, 이 경우 Invoice의 모든 Item 필드를 지정하며 Item의 현재 인스턴스를 I를 사용하여 참조할 수 있도록 설정합니다. 이러한 형식의 SELECT에는 열 함수, 이 경우 SUM 함수가 필요하므로 Invoice의 각 Item 필드에 대한 SUM 함수 내의 표현식을 평가한 결과를 모두 더하여 SELECT가 평가됩니다. 표준 SQL과 마찬가지로 널(null)값은 열 함수에 의해 무시됩니다(아래에 설명된 COUNT 열 함수의 경우는 제외). 널값은 결합할 널이 아닌 값이 없는 경우에만 열 함수에 의해 리턴됩니다.

제공되는 다른 열 함수는 MAX, MIN 및 COUNT입니다. COUNT 함수에는 널과 관련하여 다른 방식으로 작동되는 두 가지 형식이 있습니다. 첫 번째 형식에서는 위의 SUM 함수와 매우 유사하게 사용합니다. 예를 들면, 다음과 같습니다.

SELECT COUNT(I.Quantity)
  FROM Body.Invoice.Purchases."Item"[] AS I

이 표현식은 Quantity 필드가 널이 아닌 Item 필드의 수를 리턴합니다. 즉, COUNT 함수는 SUM 함수가 널이 아닌 값을 더하는 방식과 동일한 방식으로 널이 아닌 값을 계산합니다. COUNT 함수를 사용하는 또 다른 방법은 다음과 같습니다.

SELECT COUNT(*)
  FROM Body.Invoice.Purchases."Item"[] AS I

COUNT(*)를 사용하면 필드의 널 여부에 관계없이 총 Item 필드 수를 계산합니다. 위의 예는 사실 다음과 같이 CARDINALITY 함수 사용과 동등합니다.

CARDINALITY(Body.Invoice.Purchases."Item"[]

여기에 제공된 SELECT의 모든 예에서는 표준 SQL에서와 같이 필드에 대한 필터링을 제공하기 위해 WHERE절을 사용할 수 있습니다.

관련 개념
메시지 플로우 개요
ESQL 개요
메시지 모델링
관련 태스크
메시지 플로우 설계
메시지 플로우 컨텐츠 정의
ESQL 파일 관리
관련 참조
Compute 노드
Database 노드
Filter 노드
ESQL 참조
CARDINALITY 함수
SELECT 함수
메시지 예
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ak20705_