Microsoft Fabric의 Eventstream으로 실시간 데이터 수집

Eventstream은 실시간 이벤트를 캡처, 변환 및 다양한 대상으로 라우팅하는 Microsoft Fabric의 기능입니다. 이벤트 데이터 원본, 대상 및 변환을 Eventstream에 추가할 수 있습니다.

이 연습에서는 사람들이 도시 내에서 자전거를 대여할 수 있는 자전거 공유 시스템에서 자전거 수거 지점의 관찰과 관련하여 이벤트의 스트림을 내보내기 하는 샘플 데이터 원본에서 데이터를 수집합니다.

이 랩을 완료하는 데 약 30분이 소요됩니다.

참고: 이 연습을 완료하려면 Microsoft Fabric 테넌트가 필요합니다.

작업 영역 만들기

Fabric에서 데이터로 작업하기 전에, Fabric 용량을 사용하도록 설정된 테넌트에서 작업 영역을 만들어야 합니다.

  1. Microsoft Fabric 홈페이지(https://app.fabric.microsoft.com/home?experience=fabric)에서 실시간 인텔리전스를 선택합니다.
  2. 왼쪽 메뉴 모음에서 작업 영역을 선택합니다(아이콘은 와 유사함).
  3. Fabric 용량이 포함된 라이선스 모드(평가판, 프리미엄 또는 Fabric)를 선택하여 원하는 이름으로 새 작업 영역을 만듭니다.
  4. 새 작업 영역이 열리면 비어 있어야 합니다.

    Fabric의 빈 작업 영역 스크린샷.

Eventhouse 만들기

이제 작업 영역이 있으므로 실시간 인텔리전스 솔루션에 필요한 Fabric 항목 만들기를 시작할 수 있습니다. 먼저 Eventhouse를 만들어 보겠습니다.

  1. 왼쪽 메뉴 모음에서 을 선택한 다음 실시간 인텔리전스 홈 페이지에서 새 Eventhouse를 만들어, 원하는 고유한 이름을 지정합니다.
  2. 빈 Eventhouse가 새로 표시될 때까지 표시되는 팁이나 프롬프트를 닫습니다.

    새 Eventhouse의 스크린샷

  3. 왼쪽 창의 Eventhouse에는 Eventhouse와 이름이 같은 KQL 데이터베이스가 포함되어 있습니다.
  4. KQL 데이터베이스를 선택하여 확인합니다.

    현재 데이터베이스에는 테이블이 없습니다. 이 연습의 나머지 부분에서는 Eventstream을 사용하여 실시간 원본에서 테이블로 데이터를 로드합니다.

Eventstream 만들기

  1. KQL 데이터베이스의 기본 페이지에서 데이터 가져오기를 선택합니다.
  2. 데이터 원본에 대해 Eventstream > 새 Eventstream을 선택합니다. Eventstream 이름을 지정합니다 Bicycle-data.

    작업 영역에서 새 이벤트 스트림 만들기는 몇 분 안에 완료됩니다. 일단 설정되면 자동으로 기본 편집기로 리디렉션되어 원본을 이벤트 스트림에 통합할 준비가 됩니다.

    새 eventstream의 스크린샷.

원본 추가

  1. Eventstream 캔버스에서 샘플 데이터 사용을 선택합니다.
  2. 원본에 이름을 지정하고 Bicycles 자전거 샘플 데이터를 선택합니다.

    스트림이 매핑되고 eventstream 캔버스에 자동으로 표시됩니다.

    eventstream 캔버스 검토

대상 추가

  1. Bicycle-data 노드 오른쪽에 있는 + 아이콘을 사용하여 새 Eventhouse 노드를 추가합니다.
  2. 새 Eventhouse 노드에서 연필 아이콘을 사용하여 편집합니다.
  3. Eventhouse 창에서 다음 설정 옵션을 구성합니다.
    • 데이터 수집 모드:: 수집 전 이벤트 처리
    • 대상 이름:bikes-table
    • 작업 영역:이 연습의 시작 부분에서 만든 작업 영역 선택
    • Eventhouse: eventhouse 선택
    • KQL 데이터베이스:KQL 데이터베이스 선택
    • 대상 테이블: 이름이 지정된 새 테이블 만들기 bikes
    • 입력 데이터 형식: JSON

    Eventstream 대상 설정.

  4. Eventhouse 창에서 저장을 선택합니다.
  5. 도구 모음에서 게시를 선택합니다.
  6. 데이터 대상이 활성화될 때까지 잠시 1분 정도 기다립니다. 그런 다음, 디자인 캔버스에서 bikes-table 노드를 선택하고 아래의 데이터 미리 보기 창을 확인하여 수집된 최신 데이터를 확인합니다.

    Eventstream의 대상 테이블입니다.

  7. 몇 분 기다린 다음 새로 고침 버튼을 사용하여 데이터 미리 보기 창을 새로 고칩니다. 스트림이 영구적으로 실행되므로 새 데이터가 테이블에 추가되었을 수 있습니다.
  8. Eventstream 디자인 캔버스 아래 데이터 인사이트 탭에서 캡처된 데이터 이벤트의 세부 정보를 확인할 수 있습니다.

캡처된 데이터 쿼리

만든 eventstream은 자전거 데이터의 샘플 원본에서 데이터를 가져와서 eventhouse의 데이터베이스에 로드합니다. 데이터베이스의 테이블을 쿼리하여 캡처된 데이터를 분석할 수 있습니다.

  1. 왼쪽 메뉴 모음에서 KQL 데이터베이스를 선택합니다.
  2. 데이터베이스 탭의 KQL 데이터베이스 도구 모음에서 새로 고침 버튼을 사용하여 데이터베이스 아래에 bikes 테이블이 표시될 때까지 보기를 새로 고칩니다. 그런 다음 bikes 테이블을 선택합니다.

    KQL 데이터베이스의 테이블입니다.

  3. bikes 테이블에 대한 메뉴에서 지난 24시간 동안 수집된쿼리 테이블 > 레코드를 선택합니다.
  4. 쿼리 창에서 다음 쿼리가 생성 및 실행되었으며 그 결과가 아래에 표시되어 있음을 확인합니다.

     // See the most recent data - records ingested in the last 24 hours.
     bikes
     | where ingestion_time() between (now(-1d) .. now())
    
  5. 쿼리 코드를 선택하고 실행하여 테이블에서 100개의 데이터 행을 확인합니다.

    SQL 쿼리의 스크린샷.

이벤트 데이터 변환

캡처한 데이터는 원본에서 변경되지 않습니다. 많은 시나리오에서 이벤트 스트림의 데이터를 대상으로 로드하기 전에 변환해야 할 수 있습니다.

  1. 왼쪽 메뉴 모음에서 자전거-데이터 eventstream을 선택합니다.
  2. 도구 모음에서 편집을 선택하여 eventstream을 편집합니다.
  3. 이벤트 변환 메뉴에서 그룹 기준을 선택하여 eventstream에 노드별로 새 그룹 기준을 추가합니다.
  4. 자전거-데이터 노드의 출력에서 노드별 새 그룹 기준 입력으로 연결을 끌어온 다음 노드별로 그룹 기준에서 연필아이콘을 사용하여 편집합니다.

    변환 이벤트에 그룹화 기준을 추가합니다.

  5. 그룹 기준 설정 섹션의 속성을 구성합니다.
    • 작업 이름: GroupByStreet
    • 집계 형식: SUM 선택
    • 필드: No_Bikes 선택 그런 다음 추가를 선택하여 No_Bikes의 SUM 함수를 만듭니다.
    • 그룹 집계 기준(선택 사항): Street
    • 시간 창: 연속
    • 기간: 5초
    • 오프셋: 0초

    참고: 이 구성에 따라 eventstream은 5초마다 각 거리의 총 자전거 수를 계산합니다.

  6. 구성을 저장하고 Eventstream 캔버스로 돌아가면 오류가 표시됩니다(변환을 통해 출력을 어딘가에 저장해야 하기 때문에 그렇습니다).

  7. GroupByStreet 노드 오른쪽에 있는 + 아이콘을 사용하여 새 Eventhouse 노드를 추가합니다.
  8. 다음 옵션을 사용하여 새 eventhouse 노드를 구성합니다.
    • 데이터 수집 모드:: 수집 전 이벤트 처리
    • 대상 이름:bikes-by-street-table
    • 작업 영역:이 연습의 시작 부분에서 만든 작업 영역 선택
    • Eventhouse: eventhouse 선택
    • KQL 데이터베이스:KQL 데이터베이스 선택
    • 대상 테이블: 이름이 지정된 새 테이블 만들기 bikes-by-street
    • 입력 데이터 형식: JSON

    그룹화된 데이터에 대한 테이블의 스크린샷.

  9. Eventhouse 창에서 저장을 선택합니다.
  10. 도구 모음에서 게시를 선택합니다.
  11. 변경 내용이 활성화될 때까지 잠시 1분 정도 기다립니다.
  12. 디자인 캔버스에서 bikes-by-street-table 노드를 선택하고 캔버스 아래에 있는 데이터 미리보기 창을 확인합니다.

    그룹화된 데이터에 대한 테이블의 스크린샷.

    변환된 데이터에는 지정한 그룹화 필드(Street), 지정한 집계(SUM_no_Bikes), 이벤트가 발생한 5초 연속 창의 종료 시점을 나타내는 타임스탬프 필드(Window_End_Time)가 포함되어 있습니다.

변환된 데이터 쿼리

이제 Eventstream에 의해 변환되어 테이블로 로드된 자전거 데이터를 쿼리할 수 있습니다.

  1. 왼쪽 메뉴 모음에서 KQL 데이터베이스를 선택합니다.
    1. 데이터베이스 탭의 KQL 데이터베이스 도구 모음에서 새로 고침 버튼을 사용하여 데이터베이스 아래에 bikes-by-street 테이블이 표시될 때까지 보기를 새로 고칩니다.
  2. bikes-by-street 테이블의 메뉴에서 데이터 쿼리 > 100개 레코드 표시를 선택합니다.
  3. 쿼리 창에서 다음 쿼리가 생성되고 실행되는 것을 확인합니다.

     ['bikes-by-street']
     | take 100
    
  4. KQL 쿼리를 수정하여 각 5초 시간 범위 내에 거리당 총 자전거 수를 검색합니다.

     ['bikes-by-street']
     | summarize TotalBikes = sum(tolong(SUM_No_Bikes)) by Window_End_Time, Street
     | sort by Window_End_Time desc , Street asc
    
  5. 수정된 쿼리를 선택하고 실행합니다.

    결과는 각 5초 시간 범위 내에 각 거리에서 관찰된 자전거의 수를 보여 줍니다.

    그룹화된 데이터를 반환하는 쿼리의 스크린샷.

리소스 정리

이 연습에서는 eventstream을 사용하여 데이터베이스에 eventhouse 및 채워진 테이블을 만들었습니다.

KQL 데이터베이스 탐색을 마쳤으면 이 연습을 위해 만든 작업 영역을 삭제할 수 있습니다.

  1. 왼쪽 막대에서 작업 영역의 아이콘을 선택합니다.
  2. 도구 모음에서 작업 영역 설정을 선택합니다.
  3. 일반 섹션에서 이 작업 영역 제거를 선택합니다. .