다음을 통해 공유


Stream Analytics에서 조회에 참조 데이터 사용

참조 데이터는 정적이거나 느리게 변화하는 한정된 데이터 세트입니다. 조회를 수행하거나 데이터 스트림을 보강하는 데 사용됩니다. 참조 데이터를 조회 테이블이라고도 합니다.

IoT 시나리오를 예로 들어 하세요. 자주 변경되지 않는 센서에 대한 메타데이터를 참조 데이터에 저장할 수 있습니다. 그런 다음 실시간 IoT 데이터 스트림과 조인할 수 있습니다.

Azure Stream Analytics는 대기 시간이 짧은 스트림 처리를 위해 메모리에 참조 데이터를 로드합니다. Stream Analytics 작업에서 참조 데이터를 사용하려면 일반적으로 쿼리에서 참조 데이터 조인을 사용합니다.

예시

자동차가 톨부스(tollbooth)를 통과할 때 생성되는 이벤트의 실시간 스트림을 가질 수 있습니다. tollbooth는 실시간으로 번호판을 캡처 할 수 있습니다. 해당 데이터는 만료된 번호판을 식별하기 위해 등록 세부 정보가 있는 정적 데이터 세트와 조인할 수 있습니다.

SELECT I1.EntryTime, I1.LicensePlate, I1.TollId, R.RegistrationId  
FROM Input1 I1 TIMESTAMP BY EntryTime  
JOIN Registration R  
ON I1.LicensePlate = R.LicensePlate  
WHERE R.Expired = '1'

Stream Analytics는 Azure Blob Storage, Azure Data Lake Storage Gen2 및 Azure SQL Database를 참조 데이터의 스토리지 계층으로 지원합니다. 다른 데이터 저장소에 참조 데이터가 있는 경우 Azure Data Factory를 사용하여 데이터를 추출, 변환 및 지원되는 데이터 저장소 중 하나에 로드합니다. 자세한 내용은 Azure Data Factory의 복사 작업 개요를 참조하세요.

Azure Blob Storage 또는 Azure Data Lake Storage Gen 2

참조 데이터는 Blob 이름에 지정된 날짜/시간의 오름차순으로 Blob 시퀀스로 모델링됩니다. Blob은 시퀀스의 마지막 Blob에서 지정한 날짜/시간보다 날짜/시간을 사용하여 시퀀스의 끝에만 추가할 수 있습니다. Blob은 입력 구성에 정의됩니다.

자세한 내용은 Stream Analytics 작업에 Blob Storage의 참조 데이터 사용을 참조하세요.

Blob 참조 데이터 구성

참조 데이터를 구성하려면 먼저 형식 참조 데이터의 입력을 만들어야 합니다. 다음 표에서는 해당 설명과 함께 참조 데이터 입력을 만들 때 제공해야 하는 각 속성에 대해 설명합니다.

속성 이름 Description
입력 별칭 이 입력을 참조하기 위해 작업 쿼리에 사용되는 친숙한 이름입니다.
스토리지 계정 Blob이 위치한 스토리지 계정의 이름입니다. Stream Analytics 작업과 동일한 구독에 있는 경우 드롭다운 목록에서 선택합니다.
스토리지 계정 키 스토리지 계정과 연결된 비밀 키입니다. 스토리지 계정이 Stream Analytics 작업과 동일한 구독에 있는 경우 이 키가 자동으로 채워집니다.
스토리지 컨테이너 컨테이너는 Blob Storage에 저장된 Blob에 대한 논리 그룹을 제공합니다. Blob Storage에 Blob을 업로드하는 경우 해당 Blob에 대한 컨테이너를 지정해야 합니다.
경로 패턴 이 필수 속성은 지정된 컨테이너 내에서 Blob을 찾는 데 사용됩니다. 경로 내에서 {date} 및 {time}변수의 인스턴스를 하나 이상 지정하도록 선택할 수 있습니다.
예제 1: products/{date}/{time}/product-list.csv
예제 2: products/{date}/product-list.csv
예제 3: product-list.csv

Blob이 지정된 경로에 없는 경우 Stream Analytics 작업은 Blob을 사용할 수 있을 때까지 무기한 대기합니다.
날짜 형식 [선택 사항] 지정한 경로 패턴 내에서 {date}를 사용한 경우 지원되는 형식의 드롭다운 목록에서 Blob이 구성된 날짜 형식을 선택합니다.
예: YYYY/MM/DD 또는 MM/DD/YYYY
시간 형식 [선택 사항] 지정한 경로 패턴 내에서 {time}을(를) 사용한 경우 지원되는 형식의 드롭다운 목록에서 Blob이 구성되는 시간 형식을 선택합니다.
예: HH, HH/mm 또는 HH-mm
이벤트 직렬화 형식 쿼리가 예상대로 작동하는지 확인하려면 Stream Analytics에서 들어오는 데이터 스트림에 사용하는 serialization 형식을 알고 있어야 합니다. 참조 데이터의 경우 지원되는 형식은 CSV 및 JSON입니다.
인코딩 UTF-8은 현재 유일하게 지원되는 인코딩 형식입니다.

정적 참조 데이터

참조 데이터가 변경되지 않을 수 있습니다. 정적 참조 데이터를 지원하려면 입력 구성에서 정적 경로를 지정합니다.

Stream Analytics는 지정된 경로에서 Blob을 선택합니다. {date} 및 {time} 대체 토큰은 필요하지 않습니다. Stream Analytics에서는 참조 데이터를 변경할 수 없으므로 정적 참조 데이터 Blob을 덮어쓰는 것은 권장되지 않습니다.

일정에 따라 참조 데이터 생성

참조 데이터는 느리게 변경되는 데이터 세트일 수 있습니다. 참조 데이터를 새로 고치려면 {date} 및 {time} 대체 토큰을 사용하여 입력 구성에서 경로 패턴을 지정합니다. Stream Analytics는 이 경로 패턴에 따라 업데이트된 참조 데이터 정의를 선택합니다.

예를 들어 날짜 형식이 sample/{date}/{time}/products.csv YYYY-MM-DD 및 HH-mm의 시간 형식인 패턴은 Stream Analytics에 2015년 4월 16일 오후 5시 30분 UTC에 업데이트된 Blob sample/2015-04-16/17-30/products.csv 을 선택하도록 지시합니다.

Stream Analytics는 1분 간격으로 새로 고친 참조 데이터 Blob을 자동으로 검색합니다. 타임스탬프가 10:30:00인 Blob은 약간의 지연(예: 10:30:30)으로 업로드될 수 있습니다. 이 Blob을 참조하는 Stream Analytics 작업이 약간 지연되는 것을 볼 수 있습니다.

이러한 시나리오를 방지하려면 대상 유효 시간(이 예제에서는 10:30:00)보다 일찍 Blob을 업로드합니다. 이제 Stream Analytics 작업에는 메모리에서 Blob을 검색 및 로드하고 작업을 수행할 수 있는 충분한 시간이 있습니다.

비고

현재 Stream Analytics 작업은 컴퓨터 시간이 Blob 이름으로 인코딩된 시간으로 이동한 경우에만 Blob 새로 고침을 찾습니다. 예를 들어 작업은 가능한 한 빨리 sample/2015-04-16/17-30/products.csv를 찾지만 UTC 기준 2015년 4월 16일 오후 5시 30분보다 빠르면 안 됩니다. 마지막으로 검색된 것보다 이전에 인코딩된 시간으로 Blob을 찾지 않습니다 .

예를 들어 작업이 Blob sample/2015-04-16/17-30/products.csv을 찾은 후에는 2015년 4월 16일 오후 5시 30분 이전에 인코딩된 날짜가 있는 파일을 무시합니다. 늦게 도착한 sample/2015-04-16/17-25/products.csv Blob이 동일한 컨테이너에서 생성될 경우, 그 작업에서는 이 Blob을 사용하지 않습니다.

또 다른 예 sample/2015-04-16/17-30/products.csv 에서는 2015년 4월 16일 오후 10:03에만 생성되지만 이전 날짜가 있는 Blob은 컨테이너에 없습니다. 그런 다음, 작업은 2015년 4월 16일 오후 10:03부터 이 파일을 사용하고 그때까지 이전 참조 데이터를 사용합니다.

이 동작의 예외는 작업이 시간을 거슬러 데이터를 다시 처리해야 하거나 작업이 처음 시작될 때입니다.

시작 시 작업은 지정된 작업 시작 시간 전에 생성된 가장 최근 Blob을 찾습니다. 이 동작은 작업이 시작될 때 비어 있지 않은 참조 데이터 세트가 있는지 확인합니다. 하나를 찾을 수 없는 경우 작업은 다음 진단을 표시합니다. Initializing input without a valid reference data blob for UTC time <start time>.

참조 데이터 세트를 새로 고치면 진단 로그가 생성됩니다 Loaded new reference data from <blob path>. 여러 가지 이유로 작업에서 이전 참조 데이터 세트를 다시 로드해야 할 수 있습니다. 그 이유는 대부분 과거 데이터를 다시 처리하기 위한 것입니다. 이때 동일한 진단 로그가 생성됩니다. 이 작업은 현재 스트림 데이터가 과거 참조 데이터를 사용함을 의미하지는 않습니다.

Azure Data Factory 를 사용하여 Stream Analytics에서 참조 데이터 정의를 업데이트하는 데 필요한 업데이트된 Blob을 만드는 작업을 오케스트레이션할 수 있습니다.

Data Factory는 데이터의 이동 및 변환을 오케스트레이션하고 자동화하는 클라우드 기반 데이터 통합 서비스입니다. Data Factory는 다수의 클라우드 기반 및 온-프레미스 데이터 저장소에 대한 연결을 지원합니다. 지정한 정기적인 일정에 따라 데이터를 쉽게 이동할 수 있습니다.

미리 정의된 일정에 따라 새로 고치는 Stream Analytics에 대한 참조 데이터를 생성하도록 Data Factory 파이프라인을 설정하는 방법에 대한 자세한 내용은 이 GitHub 샘플을 참조하세요.

Blob 참조 데이터 새로 고침에 대한 팁

  • 참조 데이터 Blob은 변경할 수 없으므로 덮어쓰지 마세요.
  • 참조 데이터를 새로 고치는 권장 방법은 다음과 같습니다.
    • 경로 패턴에서 {date}/{time}을(를) 사용합니다.
    • 작업 입력에 정의된 동일한 컨테이너 및 경로 패턴을 사용하여 새 Blob을 추가합니다.
    • 시퀀스의 마지막 Blob에서 지정한 날짜/시간보다 날짜/시간을 사용합니다.
  • 참조 데이터 Blob은 Blob의 마지막으로 수정 된 시간에 따라 정렬되지 않습니다. {date} 및 {time} 대체를 사용하여 Blob 이름에 지정된 날짜 및 시간별로만 정렬됩니다.
  • 많은 수의 Blob을 나열할 필요가 없도록 하려면 더 이상 처리가 수행되지 않는 이전 Blob을 삭제합니다. Stream Analytics는 다시 시작과 같은 일부 시나리오에서 소량의 재처리를 해야 할 수 있습니다.

Azure SQL 데이터베이스

Stream Analytics 작업은 SQL Database 참조 데이터를 검색하고 처리를 위해 메모리에 스냅샷으로 저장합니다. 참조 데이터의 스냅샷은 스토리지 계정의 컨테이너에도 저장됩니다. 구성 설정에서 스토리지 계정을 지정합니다.

컨테이너는 작업이 시작될 때 자동으로 만들어집니다. 작업이 중지되거나 실패한 상태로 들어가면 작업이 다시 시작될 때 자동 생성된 컨테이너가 삭제됩니다.

참조 데이터가 느리게 변경되는 데이터 세트인 경우 작업에 사용되는 스냅샷을 주기적으로 새로 고쳐야 합니다.

Stream Analytics를 사용하면 SQL Database 입력 연결을 구성할 때 새로 고침 속도를 설정할 수 있습니다. Stream Analytics 런타임은 새로 고침 빈도로 지정된 간격으로 SQL Database 인스턴스를 쿼리합니다. 지원되는 가장 빠른 새로 고침 속도는 분당 한 번입니다. 새로 고칠 때마다 Stream Analytics는 제공된 스토리지 계정에 새 스냅샷을 저장합니다.

Stream Analytics는 SQL Database 인스턴스를 쿼리하는 두 가지 옵션을 제공합니다. 스냅샷 쿼리는 필수이며 각 작업에 포함되어야 합니다. Stream Analytics는 새로 고침 간격에 따라 정기적으로 스냅샷 쿼리를 실행합니다. 쿼리 결과(스냅샷)를 참조 데이터 세트로 사용합니다.

스냅샷 쿼리는 대부분의 시나리오에 적합해야 합니다. 큰 데이터 세트 및 빠른 새로 고침 속도와 함께 성능 문제가 발생하는 경우 델타 쿼리 옵션을 사용합니다. 참조 데이터 세트를 반환하는 데 60초 이상 걸리는 쿼리는 시간 초과가 발생합니다.

델타 쿼리 옵션을 사용하여 Stream Analytics는 처음에 스냅샷 쿼리를 실행하여 기준 참조 데이터 세트를 가져옵니다. 그 후 Stream Analytics는 새로 고침 간격에 따라 주기적으로 델타 쿼리를 실행하여 증분 변경 내용을 검색합니다. 이러한 증분 변경 내용은 참조 데이터 세트에 지속적으로 적용되어 업데이트된 상태로 유지됩니다. 델타 쿼리 옵션을 사용하면 스토리지 비용 및 네트워크 I/O 작업을 줄일 수 있습니다.

SQL Database 참조 데이터 구성

SQL Database 참조 데이터를 구성하려면 먼저 참조 데이터 입력을 만들어야 합니다. 다음 표에서는 해당 설명과 함께 참조 데이터 입력을 만들 때 제공해야 하는 각 속성에 대해 설명합니다. 자세한 내용은 Stream Analytics 작업에 SQL Database의 참조 데이터 사용을 참조하세요.

Azure SQL Managed Instance를 참조 데이터 입력으로 사용할 수 있습니다. SQL Managed Instance에서 퍼블릭 엔드포인트를 구성해야 합니다. 그런 다음 Stream Analytics에서 다음 설정을 수동으로 구성합니다. 데이터베이스가 연결된 SQL Server를 실행하는 Azure 가상 머신도 이러한 설정을 수동으로 구성하여 지원됩니다.

속성 이름 Description
입력 별칭 이 입력을 참조하기 위해 작업 쿼리에 사용되는 친숙한 이름입니다.
Subscription 당신의 구독.
데이터베이스 참조 데이터가 포함된 SQL Database 인스턴스입니다. SQL Managed Instance의 경우 포트 3342를 지정해야 합니다. 예제는 sampleserver.public.database.windows.net,3342입니다.
사용자 이름 SQL Database 인스턴스와 연결된 사용자 이름입니다.
암호 SQL Database 인스턴스와 연결된 암호입니다.
주기적으로 새로 고침 이 옵션을 사용하면 새로 고침 속도를 선택할 수 있습니다. 기를 선택하여 DD:HH:MM에서 새로 고침 속도를 지정합니다.
스냅샷 쿼리 이 기본 쿼리 옵션은 SQL Database 인스턴스에서 참조 데이터를 검색합니다.
델타 쿼리 데이터 세트가 크고 새로 고침 속도가 짧은 고급 시나리오의 경우 델타 쿼리를 추가합니다.

크기 제한

최상의 성능을 위해 300MB 미만의 참조 데이터 세트를 사용합니다. 5GB 이하의 참조 데이터 세트는 6개 이상의 스트리밍 단위가 있는 작업에서 지원됩니다. 큰 참조 데이터 세트를 사용하면 작업의 엔드 투 엔드 대기 시간에 영향을 줄 수 있습니다.

쿼리 복잡성이 증가하여 윈도우 집계, 시간 기반 조인 및 분석 함수와 같은 상태 저장 처리 기능을 포함할 수 있습니다. 복잡성이 증가하면 지원되는 최대 참조 데이터 크기가 줄어듭니다.

Stream Analytics에서 참조 데이터를 로드하고 복잡한 작업을 수행할 수 없는 경우 작업이 메모리가 부족하여 실패합니다. 이러한 경우 스트리밍 단위 백분율 사용률 메트릭은 100%도달합니다.

스트리밍 단위 수 권장 크기
1 50MB 이하
3 150MB 이하
6 이상 5GB 이하

압축에 대한 지원은 참조 데이터에 사용할 수 없습니다. 300MB보다 큰 참조 데이터 세트의 경우 최적의 성능을 위해 델타 쿼리 옵션을 사용하여 SQL Database를 원본으로 사용합니다. 이러한 시나리오에서 델타 쿼리 옵션을 사용하지 않으면 참조 데이터 세트를 새로 고칠 때마다 워터마크 지연 메트릭이 급증합니다.

작업에서 여러 참조 데이터 세트 조인

참조 데이터 입력만 스트리밍 입력에 조인할 수 있습니다. 따라서 여러 참조 데이터 세트를 조인하려면 쿼리를 여러 단계로 분할합니다. 예제는 다음과 같습니다.

With Step1 as (
    --JOIN input stream with reference data to get 'Desc'
    SELECT streamInput.*, refData1.Desc as Desc
    FROM    streamInput
    JOIN    refData1 ON refData1.key = streamInput.key 
)
--Now Join Step1 with second reference data
SELECT *
INTO    output 
FROM    Step1
JOIN    refData2 ON refData2.Desc = Step1.Desc 

IoT Edge 작업

Stream Analytics 에지 작업에는 로컬 참조 데이터만 지원됩니다. 작업이 IoT Edge 디바이스에 배포되면 사용자 정의 파일 경로에서 참조 데이터를 로드합니다. 디바이스에서 참조 데이터 파일을 준비합니다.

Windows 컨테이너의 경우 로컬 드라이브에 참조 데이터 파일을 배치하고 로컬 드라이브를 Docker 컨테이너와 공유합니다. Linux 컨테이너의 경우 Docker 볼륨을 만들고 볼륨에 데이터 파일을 채웁다.

IoT Edge 업데이트의 참조 데이터는 배포에 의해 트리거됩니다. 트리거된 후 Stream Analytics 모듈은 실행 중인 작업을 중지하지 않고 업데이트된 데이터를 선택합니다.

다음 두 가지 방법으로 참조 데이터를 업데이트할 수 있습니다.

  • Azure Portal에서 Stream Analytics 작업의 참조 데이터 경로를 업데이트합니다.
  • IoT Edge 배포를 업데이트합니다.

다음 단계