내보내기(0) 인쇄
모두 확장
이 문서는 수동으로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오.
번역
원본

사용자 정의 함수(StreamInsight)

이 항목의 예에서는 기존 .NET 함수 또는 UDF(사용자 정의 함수)에 대한 메서드 호출을 사용하여 StreamInsight LINQ 연산자의 가능한 식을 확장하는 방법을 보여 줍니다.

UDF를 사용하면 복잡성에 관계없이 모든 식을 작성할 수 있으며 일반 식을 사용할 수 있는 모든 위치(필터 조건자, 프로젝션, 조인 조건자 등)에 이러한 식을 사용할 수 있습니다. 그러나 각 이벤트에 대해 이러한 메서드 호출을 계산합니다. 사용자 정의 함수는 런타임에 StreamInsight 서버에서 액세스 가능한 어셈블리로 컴파일해야 합니다.

매개 변수 및 UDF 반환 값은 StreamInsight 기본 유형 중 하나여야 합니다. 또한 UDF에는 culture 관련 매개 변수도 사용할 수 있습니다.

다음 사용 사례에서는 사용자 정의 함수를 사용하여 StreamInsight 쿼리의 기능을 확장하는 방법을 보여 줍니다.

사용자 정의 필터

사용자 정의 필터 연산자를 만들어 들어오는 이벤트를 확인하고 이벤트를 출력으로 전달하거나 필터링을 통해 제외할 수 있습니다. 이러한 사용자 정의 필터는 사용자 정의 데이터를 확인할 수 있으며 이벤트 필터링 프로세스에 복잡한 논리 또는 특수 논리를 포함할 수 있습니다.

사용자 정의 프로젝트

사용자 정의 필터와 비슷한 사용자 정의 프로젝트 식은 새로운 페이로드 값을 생성할 수 있습니다. 이 값을 계산하는 방법은 StreamInsight에서 제공되는 식 기능의 범위를 벗어나므로 설명하지 않습니다.

다음 예에서는 페이로드 필드에 함수 MyFunc를 적용하여 필터 식에 사용자 정의 계산을 사용합니다.

// Assuming the following input event type: 
public class MyPayload 
{
    public int id;
    public int a; 
    public int b; 
    public double value; 
}

    var filteredStream = from e in stream
                         where e.value > MyFunc(e.a * e.b)
                         select e;

다음 예에서는 필터 조건자에 사용자 정의 함수 MyFunctions.valThreshold를 지정합니다.

var filteredStream = from e in stream
                     where e.value < MyFunctions.valThreshold(e.id)
                     select e;

다음 예에서는 단일 매개 변수를 사용하여 값을 반환하는 사용자 정의 함수 valThreshold를 사용합니다.

    public class MyFunctions
    {
        public static int valThreshold(int id)
        {
            switch (id)
            {
                case 1:
                    return 15;
                case 2:
                    return 11;
                case 3:
                    return 18;
                default:
                    return 0;
            }
        }
    }

사용자 정의 프로젝트 함수는 다음 예와 같이 프로젝션의 다른 식처럼 사용할 수 있습니다.

var result = from e in stream
             select new { location = MyFunctions.Lookup(e.id) };

사용자 정의 함수는 기본 제공 기본 유형 외에 culture 관련 정보도 매개 변수로 사용할 수 있습니다. 허용되는 유형은 다음과 같습니다.

  • CultureInfo

  • StringComparison

  • CompareOptions

다음 예에서는 culture 관련 정보를 UDF에 제공하는 방법을 보여 줍니다.

// Assuming the following input event type: 
public class MyPayload 
{
    public int id;
    public string name; 
}
var result = from e in stream
             select new { location = MyFunctions.Lookup2(
                 e.name,
                 new CultureInfo("en-US"),
                 CompareOptions.IgnoreCase)
             };

다음 예와 같이 도우미 함수 CepUtility.GetEventFieldCulture를 사용하여 입력 스트림의 이벤트 필드에서 culture 정보를 가져올 수도 있습니다.

var result = from e in stream
             select new { location = MyFunctions.Lookup2(
                 e.name,
                 CepUtility.GetEventFieldCulture(e.name),
                 CompareOptions.IgnoreCase)
             };

커뮤니티 추가 항목

추가
표시:
© 2014 Microsoft