다음을 통해 공유


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

중요합니다

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. 프로젝트 이름, 위치솔루션 이름을 입력하고 확인을 선택합니다.

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

어셈블리 패키지 경로 구성

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

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

  3. User-Defined 코드 구성 섹션을 확장하고 다음과 같은 제안된 값으로 구성을 채웁니다.

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

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마우스 오른쪽 단추로 클릭한 다음 로컬 입력 추가를 선택합니다.

    Visual Studio에서 Stream Analytics 작업에 로컬 입력 추가

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

    Visual Studio에서 Stream Analytics 작업에 대한 로컬 입력 구성

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

    Visual Studio를 사용하여 로컬로 Azure Stream Analytics 작업 실행

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

    Visual Studio를 사용하여 로컬 Azure Stream Analytics 작업의 결과 보기

UDF 디버그

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

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

    Visual Studio에서 Stream Analytics 사용자 정의 함수에 중단점 추가

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

    Stream Analytics 사용자 정의 함수 디버깅 결과 보기

Azure에 작업 게시

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

Visual Studio에서 Azure로 Stream Analytics Edge 작업 제출

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# 사용자 정의 함수를 사용하는 다양한 방법에 대해 자세히 알아보려면 이 문서를 계속 진행하세요.