다음을 통해 공유


Real-Time Intelligence 자습서 4부: KQL 데이터베이스의 데이터 변환

비고

이 자습서는 시리즈의 일부입니다. 이전 섹션은 Real-Time Intelligence 자습서 3부: eventstream에 대한 경고 설정 섹션을 참조하세요.

자습서의 이 부분에서는 업데이트 정책을 사용하여 KQL 데이터베이스의 데이터를 변환하여 테이블에 새 데이터를 쓸 때 자동화된 메커니즘을 트리거합니다. 이 정책은 수집된 데이터를 변환하고 결과를 대상 테이블에 저장하는 쿼리를 실행하여 특수 오케스트레이션이 필요하지 않습니다.

단일 테이블에 여러 업데이트 정책을 정의하여 다양한 변환을 허용하고 동시에 여러 테이블에 데이터를 저장할 수 있습니다. 대상 테이블에는 원본 테이블의 다른 스키마, 보존 정책 및 기타 정책이 있을 수 있습니다.

원시 데이터 테이블을 Bronze 폴더로 이동

이 단계에서는 원시 데이터 테이블을 Bronze 폴더로 이동하여 KQL 데이터베이스의 데이터를 구성합니다.

  1. 리소스를 만든 작업 영역으로 이동합니다.

  2. 이전에 만든 자습서 KQL 데이터베이스를 선택합니다.

  3. 개체 트리의 KQL 데이터베이스 이름 아래에서 Tutorial_queryset이라는 쿼리 작업 영역을 선택합니다.

    데이터베이스 항목 트리에서 **Tutorial_queryset**를 선택하는 스크린샷

  4. 다음 명령을 복사하여 쿼리 편집기에 붙여넣어 RawData 테이블을 Bronze 폴더로 이동합니다. 메뉴 리본에서 실행 단추를 선택하거나 Shift + Enter를 눌러 쿼리를 실행합니다.

    .alter table RawData (BikepointID:string,Street:string,Neighbourhood:string,Latitude:real,Longitude:real,No_Bikes:long,No_Empty_Docks:long,Timestamp:datetime) with (folder="Bronze")
    

    개체 트리의 테이블 노드 아래에RawData라는 테이블이 포함된 Bronze라는 새 폴더가 표시됩니다.

    RawData 테이블을 포함하는 Bronze 하위 폴더의 스크린샷

대상 테이블 만들기

이 단계에서는 업데이트 정책에 의해 변환된 데이터를 저장하는 데 사용되는 대상 테이블을 만듭니다.

  1. 커서와 마지막 쿼리 사이에 줄이 하나 이상 있는 새 줄에서 다음 명령을 복사하여 붙여넣어 지정된 스키마를 사용하여 TransformedData 라는 새 테이블을 만듭니다.

    .create table TransformedData (BikepointID: int, Street: string, Neighbourhood: string, Latitude: real, Longitude: real, No_Bikes: long, No_Empty_Docks: long, Timestamp: datetime, BikesToBeFilled: long, Action: string) with (folder="Silver")
    
  2. 명령을 실행하여 테이블을 만듭니다.

    개체 트리의 테이블 노드 아래에 TransformedData라는 테이블이 포함된 Silver라는 새 폴더가 표시됩니다.

    TransformedData 테이블을 포함하는 Silver 하위 폴더의 스크린샷

변환 논리를 사용하여 함수 만들기

이 단계에서는 업데이트 정책에 사용할 변환 논리를 포함하는 저장된 함수를 만듭니다. 이 함수는 BikepointID 열을 구문 분석하고 두 개의 새 계산 열을 추가합니다.

  1. 메뉴 리본에서 데이터베이스를 선택합니다.

  2. +새>함수를 선택합니다.

  3. 다음 코드와 일치되도록 함수를 편집하거나 다음 명령을 복사하여 쿼리 편집기에 붙여넣습니다.

    .create-or-alter function TransformRawData() {
    RawData
    | parse BikepointID with * "BikePoints_" BikepointID:int
    | extend BikesToBeFilled = No_Empty_Docks - No_Bikes
    | extend Action = iff(BikesToBeFilled > 0, tostring(BikesToBeFilled), "NA")
     }
    
  4. 명령을 실행하여 함수를 만듭니다.

    개체 트리의 Functions 노드 아래에 TransformRawData 함수가 표시됩니다.

    TransformedData 함수가 포함된 Functions 폴더의 스크린샷

업데이트 정책 적용

이 단계에서는 대상 테이블에 업데이트 정책을 적용하여 데이터를 변환합니다. 업데이트 정책은 저장된 함수 TransformRawData() 를 사용하여 BikepointID 열을 구문 분석하고 두 개의 새 계산 열을 추가합니다.

  1. 메뉴 리본에서 데이터베이스를 선택합니다.

  2. +새>테이블 업데이트 정책을 선택합니다.

  3. 다음 코드와 일치되도록 정책을 편집하거나 다음 명령을 복사하여 쿼리 편집기에 붙여넣습니다.

     .alter table TransformedData policy update
     ```[{
         "IsEnabled": true,
         "Source": "RawData",
         "Query": "TransformRawData()",
         "IsTransactional": false,
         "PropagateIngestionProperties": false
     }]```
    
  4. 명령을 실행하여 업데이트 정책을 만듭니다.

변환 확인

이 단계에서는 원본 테이블과 대상 테이블의 출력을 비교하여 변환이 성공했는지 확인합니다.

비고

변환된 테이블의 데이터를 보는 데 몇 초 정도 걸릴 수 있습니다.

  1. 다음 쿼리를 복사하여 쿼리 편집기에 붙여넣어 원본 테이블에서 10명의 임의 레코드를 봅니다. 쿼리를 실행합니다.

    RawData
    | take 10
    
  2. 다음 쿼리를 복사하여 쿼리 편집기에 붙여넣어 대상 테이블에서 10명의 임의 레코드를 봅니다. 쿼리를 실행합니다.

    TransformedData
    | take 10
    

대상 테이블의 BikepointID 열에는 더 이상 "BikePoints_" 접두사를 포함하지 않습니다.

이 자습서의 작업에 대한 자세한 내용은 다음을 참조하세요.

다음 단계