Power BI 동적 매개 변수와 함께 Azure Data Explorer의 고급 사용

Power BI를 사용하여 Azure Data Explorer 데이터를 시각화하는 방법을 설명하는 이 시리즈의 네 번째 게시물입니다. 이전 게시물에서는 Power BI의 새로운 동적 매개 변수 기능을 사용하여 슬라이서에서 선택한 값을 기반으로 쿼리를 생성하는 방법을 살펴보았습니다. 이 기능에 완벽하게 맞는 몇 가지 시나리오가 있으며 이 게시물에서 다룰 것입니다.

Power BI에서 사용할 수 없는 Azure Data Explorer 기능



Power BI에서 사용할 수 없는 백분위수 계산 및 정규식 처리와 같은 일부 기능이 있습니다. 즉, 보고서에서 사용하려면 KQL을 사용해야 합니다. 그러나 쿼리 초기에 필터를 "주입"하지 않으면 클러스터가 필요하지 않은 데이터를 계산하는 데 많은 시간과 리소스를 낭비하게 됩니다.

StormEvents 샘플을 계속 살펴보겠습니다. EventType에 의해 발생한 총 피해의 50번째, 95번째 및 99번째 백분위수를 알고 싶다고 가정해 보겠습니다. Azure Data Explorer에서 이러한 쿼리를 작성한다면 다음과 같은 결과가 나올 것입니다.

StormEvents
| extend TotalDamage = DamageCrops + DamageProperty
| summarize percentiles(TotalDamage, 50, 95, 99) by EventType


그리고 특정 State에 대한 데이터에 관심이 있는 경우 가능한 한 테이블 이름에 가깝게 필터를 추가합니다. 계산 노력을 줄이기 위해 조기에 필터링하려고 합니다.

StormEvents
| where State == 'ALABAMA'
| extend TotalDamage = DamageCrops + DamageProperty
| summarize percentiles(TotalDamage, 50, 95, 99) by EventType


백분위수는 Power BI에서 지원되지 않으므로 내 기본 쿼리는 위의 첫 번째 KQL 쿼리와 유사하며 마지막에 모든 필터링이 추가됩니다. 그러나 첫 번째 쿼리는 상태 열을 반환하지 않으므로 이를 기준으로 필터링할 수 없습니다.

// THIS DOES NOT WORK
StormEvents
| extend TotalDamage = DamageCrops + DamageProperty
| summarize percentiles(TotalDamage, 50, 95, 99) by EventType
| where State == 'ALABAMA'


이것은 동적 M 매개변수가 완벽하게 맞는 곳입니다. 원하는 쿼리를 생성하기 위해 이전 게시물에서 사용한 것과 동일한 쿼리 구성 메커니즘을 사용하여 동적 매개 변수를 사용하여 쿼리를 생성할 수 있습니다.

let
    StateFilter = if (SelectedStates is null or Text.Length(SelectedStates) = 0) then "" else " | where State == '" & SelectedStates & "' ",
    Query = Text.Combine({
        "StormEvents ",
        StateFilter,
        "| extend TotalDamage = DamageCrops + DamageProperty | summarize (P50, P95, P99)=percentiles(TotalDamage, 50, 95, 99) by EventType"
    }),
    Source = AzureDataExplorer.Contents("https://help.kusto.windows.net", "Samples", Query, [MaxRows=null, MaxSize=null, NoTruncate=null, AdditionalSetStatements=null])
in
    Source


그러면 다음과 같은 쿼리가 생성됩니다.

StormEvents | where State == 'ALASKA' | extend TotalDamage = DamageCrops + DamageProperty | summarize (P50, P95, P99)=percentiles(TotalDamage, 50, 95, 99) by EventType
// The part below is generated by PowerBI for the visualization
| summarize ["a0"]=sum(["P99"]), ["a1"]=sum(["P50"]) by ["EventType"]
| limit 1000001


그리고 아래 애니메이션에서 최종 결과를 볼 수 있습니다.



동적 M 매개 변수를 사용하여 Azure Data Explorer 함수 호출



Dynamic M 매개 변수가 빛나는 또 다른 시나리오는 Azure Data Explorer Functions를 사용하는 경우입니다. ADX 함수를 사용하면 복잡한 쿼리를 작성하고 간단한 방식으로 재사용할 수 있습니다. 함수는 매개변수를 허용할 수 있으므로 동적 M 매개변수를 전달하여 데이터세트를 크게 단순화할 수 있습니다.

내 클러스터에 다음 ADX 함수를 생성했다고 가정해 보겠습니다.

.create-or-alter function StormsReportedBySource(source:string) {
    StormEvents
    | where Source == source
}


이제 다음과 같이 내 SelectedSources 매개 변수와 함께 Power BI에서 이 ADX 함수를 사용할 수 있습니다.

let
    Source = AzureDataExplorer.Contents("help", "Samples", null, [MaxRows=null, MaxSize=null, NoTruncate=null, AdditionalSetStatements=null]),
    StormsReportedBySource = Source{[Name="StormsReportedBySource"]}[Data],
    Data = StormsReportedBySource(SelectedSources)
in
    Data


그러면 시각화에서 사용할 수 있는 데이터 세트가 생성됩니다.



Dynamic M 매개 변수와 함께 Azure Data Explorer 함수 사용
보시다시피 – Azure 데이터 탐색기 쿼리에 존재하는 많은 복잡성을 숨길 수 있는 매우 간단한 Power BI 데이터 세트 쿼리를 만듭니다. 이를 통해 모든 고급 기능을 사용하여 Azure 데이터 탐색기에서 힘든 쿼리를 수행하고 쿼리가 최대한 효율적이도록 올바른 필터를 전달하도록 할 수 있습니다.

좋은 웹페이지 즐겨찾기