자습서: Azure Stream Analytics 작업에 대한 C# 사용자 정의 함수 작성(미리 보기)

Important

Azure Stream Analytics에 대한 .Net Standard 사용자 정의 함수는 2024년 9월 30일에 사용 중지됩니다. 해당 날짜 이후에는 이 기능을 사용할 수 없습니다. Azure Stream Analytics대한 JavaScript 사용자 정의 함수로 전환하세요.

Visual Studio에서 만든 C# UDF(사용자 정의 함수)를 사용하면 고유한 함수를 사용하여 Azure Stream Analytics 쿼리 언어를 확장할 수 있습니다. 기존 코드(DLL 포함)를 다시 사용하고 C#에서 수학 또는 복잡한 논리를 사용할 수 있습니다. UDF를 구현하는 세 가지 방법이 있습니다.

  • Stream Analytics 프로젝트의 CodeBehind 파일
  • 로컬 C# 프로젝트의 UDF
  • 스토리지 계정의 기존 패키지의 UDF입니다.

이 자습서에서는 CodeBehind 메서드를 사용하여 기본 C# 함수를 구현합니다. Stream Analytics 작업용 UDF 함수는 현재 미리 보기로 제공되며 프로덕션 워크로드에는 사용해서는 안 됩니다.

이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.

  • CodeBehind를 사용하여 C# 사용자 정의 함수를 만듭니다.
  • Stream Analytics 작업을 로컬로 테스트합니다.
  • Azure에 작업 게시

필수 조건

시작하기 전에 다음 필수 구성 요소를 완료했는지 확인합니다.

Azure Storage 계정에서 컨테이너 만들기

만든 컨테이너는 컴파일된 C# 패키지를 저장하는 데 사용됩니다. Edge 작업을 만드는 경우 이 스토리지 계정은 IoT Edge 디바이스에 패키지를 배포하는 데도 사용됩니다. 각 Stream Analytics 작업에 전용 컨테이너를 사용합니다. 여러 Stream Analytics Edge 작업에 동일한 컨테이너를 다시 사용하는 것은 지원되지 않습니다. 기존 컨테이너가 있는 스토리지 계정이 이미 있는 경우 사용할 수 있습니다. 그렇지 않은 경우 새 컨테이너를 만들어야 합니다.

Visual Studio에서 Stream Analytics 프로젝트 만들기

  1. Visual Studio를 시작합니다.

  2. 파일 > 새로 만들기 > 프로젝트를 선택합니다.

  3. 왼쪽의 템플릿 목록에서 Stream Analytics를 선택한 다음, Azure Stream Analytics Edge 애플리케이션 또는 Azure Stream Analytics 애플리케이션을 선택합니다.

  4. 프로젝트 이름, 위치 및 솔루션 이름을 입력하고 확인을 선택합니다.

    Create an Azure Stream Analytics Edge project in Visual Studio

어셈블리 패키지 경로 구성

  1. Visual Studio를 열고 솔루션 탐색기 이동합니다.

  2. 작업 구성 파일을 JobConfig.json두 번 클릭합니다.

  3. 사용자 정의 코드 구성 섹션을 확장하고 다음 제안 값으로 구성을 입력합니다.

    설정 제안 값
    글로벌 스토리지 설정 리소스 현재 계정에서 데이터 원본 선택
    글로벌 스토리지 설정 구독 < 사용자 구독 >
    글로벌 스토리지 설정 스토리지 계정 < 스토리지 계정 >
    사용자 지정 코드 스토리지 설정 리소스 현재 계정에서 데이터 원본 선택
    사용자 지정 코드 스토리지 설정 스토리지 계정 < 스토리지 계정 >
    사용자 지정 코드 스토리지 설정 컨테이너 < 사용자 스토리지 컨테이너 >

CodeBehind를 사용하여 C# UDF 작성

CodeBehind 파일은 단일 ASA 쿼리 스크립트와 연결된 C# 파일입니다. Visual Studio 도구는 CodeBehind 파일을 자동으로 압축하고 제출 시 Azure Storage 계정에 업로드합니다. 모든 클래스는 public으로 정의되어야 하며 모든 개체는 정적 public으로 정의되어야 합니다.

  1. 솔루션 탐색기에서 Script.asql를 확장하여 Script.asaql.cs CodeBehind 파일을 찾습니다.

  2. 코드를 다음 샘플로 바꿉니다.

        using System; 
        using System.Collections.Generic; 
        using System.IO; 
        using System.Linq; 
        using System.Text; 
    
        namespace ASAEdgeUDFDemo 
        { 
            public class Class1 
            { 
                // Public static function 
                public static Int64 SquareFunction(Int64 a) 
                { 
                    return a * a; 
                } 
            } 
        } 
    

UDF 구현

  1. 솔루션 탐색기 Script.asaql 파일을 엽니다.

  2. 기존 쿼리를 다음 쿼리로 바꿉다.

        SELECT machine.temperature, udf.ASAEdgeUDFDemo_Class1_SquareFunction(try_cast(machine.temperature as bigint))
        INTO Output
        FROM Input 
    

로컬 테스트

  1. 온도 시뮬레이터 샘플 데이터 파일을 다운로드합니다.

  2. 솔루션 탐색기 입력을 확장하고 Input.json 마우스 오른쪽 단추로 클릭한 다음 로컬 입력 추가를 선택합니다.

    Add local input to Stream Analytics job in Visual Studio

  3. 다운로드한 샘플 데이터에 대한 로컬 입력 파일 경로를 지정하고 저장합니다.

    Local input configuration for Stream Analytics job in Visual Studio

  4. 스크립트 편집기에서 로컬로 실행을 클릭합니다. 로컬 실행에서 출력 결과를 저장한 후 아무 키나 눌러 결과를 테이블 형식으로 확인합니다.

    Run Azure Stream Analytics job locally with Visual Studio

  5. 결과 폴더 열기를 선택하여 JSON 및 CSV 형식의 원시 파일을 확인할 수도 있습니다.

    View results of local Azure Stream Analytics job with Visual Studio

UDF 디버그

표준 C# 코드를 디버그하는 것과 동일한 방식으로 C# UDF를 로컬로 디버그할 수 있습니다.

  1. C# 함수에 중단점을 추가합니다.

    Add breakpoints to Stream Analytics user-defined function in Visual Studio

  2. F5 키를 눌러 디버깅을 시작합니다. 프로그램은 예상대로 중단점에서 중지됩니다.

    View Stream Analytics user-defined function debugging results

Azure에 작업 게시

쿼리를 로컬로 테스트한 다음 스크립트 편집기에서 Azure에 제출을 선택하여 작업을 Azure에 게시합니다.

Submit your Stream Analytics Edge job to Azure from Visual Studio

IoT Edge 디바이스에 배포

Stream Analytics Edge 작업을 빌드하도록 선택한 경우 이제 IoT Edge 모듈로 배포할 수 있습니다. IoT Edge 빠른 시작따라 IoT Hub를 만들고, IoT Edge 디바이스를 등록하고, 디바이스에 IoT Edge 런타임을 설치하고 시작합니다. 그런 다음, 작업 배포 자습서에 따라 Stream Analytics 작업을 IoT Edge 모듈로 배포합니다.

다음 단계

이 자습서에서는 CodeBehind를 사용하여 간단한 C# 사용자 정의 함수를 만들고, 작업을 Azure에 게시하고, 작업을 Azure 또는 IoT Edge 디바이스에 배포했습니다.

Stream Analytics 작업에 C# 사용자 정의 함수를 사용하는 여러 방법에 대해 자세히 알아보려면 다음 문서를 계속 확인하세요.