Azure Data Explorer(Kusto)
요약
항목 | 설명 |
---|---|
릴리스 상태 | 일반 공급 |
제품 | Excel Power BI(의미 체계 모델) Power BI(데이터 흐름) 패브릭(데이터 흐름 Gen2) Power Apps(데이터 흐름) Dynamics 365 Customer Insights |
지원되는 인증 유형 | 조직 계정 |
함수 참조 설명서 | — |
참고 항목
일부 기능은 한 제품에 있을 수 있지만 배포 일정 및 호스트별 기능으로 인해 다른 기능은 없을 수 있습니다.
필수 구성 요소
Azure 구독 Azure 무료 평가판으로 이동합니다.
Microsoft Entra ID의 구성원인 조직 전자 메일 계정입니다. 이 문서에서는 이 계정을 사용하여 Azure Data Explorer 도움말 클러스터 샘플에 연결합니다.
지원되는 기능
- 가져오기
- DirectQuery(Power BI 의미 체계 모델)
- 고급 옵션
- 쿼리 결과 레코드 수 제한
- 쿼리 결과 데이터 크기(바이트) 제한
- 결과 집합 잘림 사용 안 함
- 추가 set 문
파워 쿼리 데스크톱에서 Azure Data Explorer로 커넥트
파워 쿼리 데스크톱에서 Azure Data Explorer에 연결하려면 다음을 수행합니다.
데이터 가져오기 환경에서 Kusto(Azure Data Explorer)를 선택합니다. 파워 쿼리 데스크톱의 데이터 가져오기 환경은 앱마다 다릅니다. 파워 쿼리 데스크톱 앱에 대한 데이터 환경 가져오기에 대한 자세한 내용은 데이터를 가져올 위치로 이동합니다.
Azure Data Explorer(Kusto)에서 Azure Data Explorer 클러스터의 이름을 제공합니다. 이 예제에서는 샘플 도움말 클러스터에 액세스하는 데 사용합니다
https://help.kusto.windows.net
. 다른 클러스터의 경우 URL은 https://< ClusterName> 형식입니다.<Region.kusto.windows.net>.연결하려는 클러스터에서 호스트되는 데이터베이스와 데이터베이스의 테이블 중 하나 또는 같은
StormEvents | take 1000
쿼리를 선택할 수도 있습니다.고급 옵션을 사용하려면 옵션을 선택하고 해당 옵션에 사용할 데이터를 입력합니다. 추가 정보: 고급 옵션을 사용하여 커넥트
참고 항목
모든 고급 옵션 및 데이터 연결 선택을 표시하려면 아래로 스크롤해야 할 수 있습니다.
가져오기 또는 DirectQuery 데이터 연결 모드를 선택합니다(Power BI Desktop에만 해당). 추가 정보: 가져오기 또는 직접 쿼리 모드를 사용하는 경우
계속하려면 확인을 선택합니다.
클러스터에 아직 연결되지 않은 경우 로그인을 선택합니다. 조직 계정을 사용하여 로그인한 다음 연결을 선택합니다.
탐색기에서 원하는 데이터베이스 정보를 선택한 다음 로드를 선택하여 데이터를 로드하거나 데이터 변환을 선택하여 파워 쿼리 편집기에서 데이터를 계속 변환합니다. 이 예제에서는 샘플 데이터베이스에서 StormEvents를 선택했습니다.
파워 쿼리 Online에서 Azure Data Explorer로 커넥트
파워 쿼리 Online에서 Azure Data Explorer에 연결하려면 다음을 수행합니다.
데이터 가져오기 환경에서 Azure Data Explorer(Kusto) 옵션을 선택합니다. 다른 앱에는 파워 쿼리 온라인 데이터 가져오기 환경에 액세스하는 다양한 방법이 있습니다. 파워 쿼리 온라인 앱에서 데이터 환경을 가져오는 방법에 대한 자세한 내용은 데이터를 가져올 위치로 이동합니다.
데이터 원본에 커넥트 Azure Data Explorer 클러스터의 이름을 제공합니다. 이 예제에서는 샘플 도움말 클러스터에 액세스하는 데 사용합니다
https://help.kusto.windows.net
. 다른 클러스터의 경우 URL은 https://< ClusterName> 형식입니다.<Region.kusto.windows.net>.연결하려는 클러스터에서 호스트되는 데이터베이스와 데이터베이스의 테이블 중 하나 또는 같은
StormEvents | take 1000
쿼리를 선택할 수도 있습니다.고급 옵션을 사용하려면 옵션을 선택하고 해당 옵션에 사용할 데이터를 입력합니다. 추가 정보: 고급 옵션을 사용하여 커넥트
필요한 경우 데이터 게이트웨이에서 온-프레미스 데이터 게이트웨이를 선택합니다.
클러스터에 아직 연결되지 않은 경우 로그인을 선택합니다. 조직 계정으로 로그인합니다.
성공적으로 로그인한 후 다음을 선택합니다.
데이터 선택 페이지에서 원하는 데이터베이스 정보를 선택한 다음 데이터 변환 또는 다음을 선택하여 파워 쿼리 편집기에서 데이터를 계속 변환합니다. 이 예제에서는 샘플 데이터베이스에서 StormEvents를 선택했습니다.
고급 옵션을 사용하여 연결
파워 쿼리 데스크톱과 파워 쿼리 온라인은 필요한 경우 쿼리에 추가할 수 있는 고급 옵션 집합을 제공합니다.
다음 표에서는 파워 쿼리 데스크톱 및 파워 쿼리 온라인에서 설정할 수 있는 모든 고급 옵션을 나열합니다.
고급 옵션 | 설명 |
---|---|
쿼리 결과 레코드 번호 제한 | 결과에 반환할 최대 레코드 수입니다. |
쿼리 결과 데이터 크기(바이트) 제한 | 결과에 반환할 최대 데이터 크기(바이트)입니다. |
결과 집합 잘림 사용 안 함 | 요청 옵션을 사용하여 결과 잘림을 notruncation 사용하거나 사용하지 않도록 설정합니다. |
추가 Set 문 | 쿼리 기간에 대한 쿼리 옵션을 설정합니다. 쿼리 옵션은 쿼리가 실행되고 결과가 반환되는 방법을 제어합니다. 여러 Set 문은 세미콜론으로 구분할 수 있습니다. |
파워 쿼리 UI에서 사용할 수 없는 추가 고급 옵션에 대한 자세한 내용은 M 쿼리에서 Azure Data Explorer 커넥터 옵션 구성으로 이동하세요.
가져오기 또는 직접 쿼리 모드를 사용하는 경우
가져오기 모드에서 데이터는 Power BI로 이동합니다. DirectQuery 모드에서 데이터는 클러스터에서 직접 쿼리됩니다.
다음과 같은 경우 가져오기 모드를 사용합니다.
- 데이터 세트가 작은 경우
- 근 실시간 데이터가 필요하지 않은 경우
- 데이터가 이미 집계되어 있거나 Kusto에서 집계를 수행합니다.
다음과 같은 경우 DirectQuery 모드를 사용합니다.
- 데이터 세트가 매우 큰 경우
- 근 실시간 데이터가 필요한 경우
DirectQuery 사용에 대한 자세한 내용은 Power BI에서 DirectQuery 사용 정보로 이동하세요.
Azure Data Explorer 커넥터를 사용하여 데이터를 쿼리하기 위한 팁
다음 섹션에는 파워 쿼리와 함께 Kusto 쿼리 언어를 사용하기 위한 팁과 요령이 포함되어 있습니다.
Power BI의 복합 쿼리
복합 쿼리는 파워 쿼리보다 Kusto에서 더 쉽게 표현됩니다. Kusto 함수로 구현되고 Power BI에서 호출되어야 합니다. 이 메서드는 Kusto 쿼리의 문과 함께 let
DirectQuery를 사용하는 경우에 필요합니다. Power BI는 두 개의 쿼리를 조인하고 let
문을 연산자와 함께 join
사용할 수 없으므로 구문 오류가 발생할 수 있습니다. 따라서 조인의 각 부분을 Kusto 함수로 저장하고 Power BI가 이러한 두 함수를 함께 조인할 수 있도록 합니다.
상대 날짜-시간 연산자를 시뮬레이션하는 방법
파워 쿼리에는 .와 같은 ago()
상대 날짜-시간 연산자가 포함되어 있지 않습니다.
시뮬레이션ago()
하려면 DateTime.FixedLocalNow와 #duration 파워 쿼리 M 함수의 조합을 사용합니다.
ago()
연산자를 사용하는 다음 쿼리를 대신하여,
StormEvents | where StartTime > (now()-5d)
StormEvents | where StartTime > ago(5d)
이와 동등한 다음 쿼리를 사용합니다.
let
Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", []),
#"Filtered Rows" = Table.SelectRows(Source, each [StartTime] > (DateTime.FixedLocalNow()-#duration(5,0,0,0)))
in
#"Filtered Rows"
M 쿼리에서 Azure Data Explorer 커넥터 옵션 구성
M 쿼리 언어의 파워 쿼리 고급 편집기에서 Azure Data Explorer 커넥터의 옵션을 구성할 수 있습니다. 이러한 옵션을 사용하여 Azure Data Explorer 클러스터로 전송되는 생성된 쿼리를 제어할 수 있습니다.
let
Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", [<options>])
in
Source
M 쿼리에서 다음 옵션 중 원하는 옵션을 사용할 수 있습니다.
옵션 | 샘플 | 설명 |
---|---|---|
MaxRows | [MaxRows=300000] |
truncationmaxrecords set 문을 쿼리에 추가합니다. 쿼리가 호출자에게 반환할 수 있는 기본 최대 레코드 수를 재정의합니다(잘림). |
MaxSize | [MaxSize=4194304] |
truncationmaxsize set 문을 쿼리에 추가합니다. 쿼리가 호출자(잘림)로 반환할 수 있는 기본 최대 데이터 크기를 재정의합니다. |
NoTruncate | [NoTruncate=true] |
notruncation set 문을 쿼리에 추가합니다. 호출자에게 반환된 쿼리 결과의 잘림을 표시하지 않도록 설정합니다. |
AdditionalSetStatements | [AdditionalSetStatements="set query_datascope=hotcache"] |
제공된 set 문을 쿼리에 추가합니다. 이러한 문은 쿼리 기간 동안 쿼리 옵션을 설정하는 데 사용됩니다. 쿼리 옵션은 쿼리가 실행되고 결과가 반환되는 방법을 제어합니다. |
CaseInsensitive | [CaseInsensitive=true] |
커넥터가 대/소문자를 구분하지 않는 쿼리를 생성하게 합니다. 쿼리는 값을 비교할 때 연산자 == 대신 연산자를 사용합니다=~ . |
ForceUseContains | [ForceUseContains=true] |
텍스트 필드를 사용할 때 커넥터에서 기본값 has 대신 사용하는 contains 쿼리를 생성합니다. has 성능은 훨씬 더 높지만 부분 문자열은 처리하지 않습니다. 두 연산자 간의 차이점에 대한 자세한 내용은 문자열 연산자를 참조하세요. |
시간 제한 | [Timeout=#duration(0,10,0,0)] |
쿼리의 클라이언트 및 서버 시간 제한을 제공된 기간으로 구성합니다. |
ClientRequestIdPrefix | [ClientRequestIdPrefix="MyReport"] |
커넥터에서 보낸 모든 쿼리에 대해 ClientRequestId 접두사를 구성합니다. 이렇게 하면 특정 보고서 및/또는 데이터 원본에서 들어오는 것으로 클러스터에서 쿼리를 식별할 수 있습니다. |
참고 항목
여러 옵션을 함께 결합하여 필요한 동작에 도달할 수 있습니다. [NoTruncate=true, CaseInsensitive=true]
Kusto 쿼리 제한에 도달
Kusto 쿼리는 쿼리 제한에서 설명한 대로 기본적으로 최대 500,000개 행 또는 64MB를 반환합니다. 이러한 기본값은 Azure Data Explorer(Kusto) 연결 창에서 고급 옵션을 사용하여 재정의할 수 있습니다.
이러한 옵션은 쿼리와 함께 set 문을 실행하여 기본 쿼리 제한을 변경합니다.
- 쿼리 결과 레코드 수 제한은
set truncationmaxrecords
를 생성합니다. - 쿼리 결과 데이터 크기를 바이트 단위로 제한하면 가 생성됩니다.
set truncationmaxsize
- 결과 집합 잘림 을 사용하지 않도록 설정하면 다음이 생성됩니다.
set notruncation
대/소문자 구분
기본적으로 커넥터는 문자열 값을 비교할 때 대/소문자 구분 ==
연산자를 사용하는 쿼리를 생성합니다. 데이터가 대/소문자를 구분하지 않는 경우 원하는 동작이 아닙니다. 생성된 쿼리를 변경하려면 커넥터 옵션을 사용합니다 CaseInsensitive
.
let
Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", [CaseInsensitive=true]),
#"Filtered Rows" = Table.SelectRows(Source, each [State] == "aLaBama")
in
#"Filtered Rows"
쿼리 문자열 매개 변수
쿼리 매개 변수를 사용하여 쿼리를 동적으로 수정할 수 있습니다.
쿼리 단계에서 쿼리 매개 변수 사용
쿼리 매개 변수는 해당 매개 변수를 지원하는 쿼리 단계에서 사용할 수 있습니다. 예를 들어 매개 변수 값에 따라 결과를 필터링합니다. 이 예제에서는 파워 쿼리 편집기에서 열의 오른쪽 State
에 있는 드롭다운 메뉴를 선택하고, 텍스트 필터>등가를 선택한 다음, '상태' 행 유지 아래에서 ALABAMA를 선택합니다.
Azure Data Explorer 함수에 매개 변수 제공
Kusto 함수는 복잡한 KQL(Kusto 쿼리 언어) 쿼리를 기본 수 있는 좋은 방법입니다. 파워 쿼리에 KQL을 포함하는 대신 함수를 사용하는 것이 좋습니다. 함수를 사용하는 기본 장점은 논리를 만들고 테스트하기 쉬운 환경에서 한 번 기본 얻을 수 있다는 것입니다.
또한 함수는 매개 변수를 수신할 수 있으므로 Power BI 사용자에게 많은 유연성을 더합니다. Power BI에는 데이터를 분할하는 여러 가지 방법이 있습니다. 그러나 모든 필터와 슬라이서는 원래 KQL 다음에 추가되며 대부분의 경우 쿼리의 초기 단계에서 필터링을 사용하려고 합니다. 함수 및 동적 매개 변수를 사용하는 것은 최종 쿼리를 사용자 지정하는 매우 효과적인 방법입니다.
함수 만들기
무료 클러스터를 포함하여 액세스할 수 있는 모든 Azure Data Explorer 클러스터에서 다음 함수를 만들 수 있습니다. 이 함수는 보고서 사용자가 제공한 수보다 크거나 작은 판매 트랜잭션에 대해 필터링된 도움말 클러스터에서 테이블을 SalesTable
반환합니다.
.create-or-alter function LargeOrSmallSales(Cutoff:long,Op:string=">")
{
cluster("help").database("ContosoSales").SalesTable
| where (Op==">" and SalesAmount >= Cutoff) or (Op=="<" and SalesAmount <= Cutoff)
}
함수를 만든 후 다음을 사용하여 테스트할 수 있습니다.
LargeOrSmallSales(2000,">")
| summarize Sales=tolong(sum(SalesAmount)) by Country
다음을 사용하여 테스트할 수도 있습니다.
LargeOrSmallSales(20,"<")
| summarize Sales=tolong(sum(SalesAmount)) by Country
Power BI에서 함수 사용
함수를 만든 클러스터로 커넥트.
파워 쿼리 탐색기의 개체 목록에서 함수를 선택합니다. 커넥터는 매개 변수를 분석하여 탐색기의 오른쪽에 있는 데이터 위에 표시합니다.
매개 변수에 값을 추가한 다음 적용을 선택합니다.
미리 보기가 나타나면 데이터 변환을 선택합니다.
파워 쿼리 편집기에서 두 개의 매개 변수를 만듭니다. 하나는 컷오프 값에 대한 매개 변수이고 다른 하나는 연산자에 대한 매개 변수입니다.
쿼리로
LargeOrSmallSales
돌아가서 수식 입력줄의 쿼리 매개 변수로 값을 바꿉다.편집기에서 두 개의 정적 테이블(데이터 입력)을 만들어 두 매개 변수에 대한 옵션을 제공합니다. 컷오프의 경우 값이 10, 50, 100, 200, 500, 1000, 2000과 같은 테이블을 만들 수 있습니다. 의
Op
경우 두 개의 텍스트 값<
이 있는 테이블과>
.테이블의 두 열은 매개 변수 선택에 바인딩을 사용하여 쿼리 매개 변수에 바인딩되어야 합니다.
최종 보고서에는 두 정적 테이블의 슬라이서와 요약 판매의 시각적 개체가 포함됩니다.
기본 테이블은 먼저 필터링된 다음 집계됩니다.
연결 세부 정보에서 쿼리 매개 변수 사용
쿼리 매개 변수를 사용하여 쿼리의 정보를 필터링하고 쿼리 성능을 최적화합니다.
고급 편집기:
쿼리의 다음 섹션을 찾습니다.
Source = AzureDataExplorer.Contents("<Cluster>", "<Database>", "<Query>", [])
예시:
Source = AzureDataExplorer.Contents("Help", "Samples", "StormEvents | where State == 'ALABAMA' | take 100", [])
Kusto 쿼리 언어(KQL) 쿼리에 쿼리 매개 변수를 삽입합니다.
연결 대화 상자에 KQL 쿼리를 직접 붙여넣으면 쿼리가 파워 쿼리의 원본 단계의 일부가 됩니다. 고급 편집기를 사용하거나 수식 입력줄에서 소스 문을 편집할 때 쿼리의 일부로 매개 변수를 포함할 수 있습니다. 예제 쿼리는 다음과 같습니다
StormEvents | where State == ' " & State & " ' | take 100
.State
는 매개 변수이며 런타임에 쿼리는 다음과 같습니다.StormEvents | where State == 'ALABAMA' | take 100
쿼리에 따옴표가 포함된 경우 올바르게 인코딩합니다. 예를 들어 KQL의 다음 쿼리는 다음과 같습니다.
"StormEvents | where State == "ALABAMA" | take 100"
이 경우 고급 편집기에 두 개의 따옴표를 사용하여 다음과 같이 표시됩니다.
"StormEvents | where State == ""ALABAMA"" | take 100"
매개 변수를 사용하는 경우 다음과 같은
State
쿼리로 바꿔야 합니다. 여기에는 세 개의 따옴표가 포함되어 있습니다."StormEvents | where State == """ & State & """ | take 100"
Azure Data Explorer 기능에 Value.NativeQuery 사용
파워 쿼리에서 지원되지 않는 Azure Data Explorer 기능을 사용하려면 파워 쿼리 M에서 Value.NativeQuery 메서드를 사용합니다. 이 메서드는 생성된 쿼리 내에 Kusto 쿼리 언어 조각을 삽입하고 실행된 쿼리를 더 자세히 제어하는 데 사용할 수도 있습니다.
다음 예제에서는 Azure Data Explorer에서 함수를 percentiles
사용하는 방법을 보여줍니다.
let
StormEvents = AzureDataExplorer.Contents(DefaultCluster, DefaultDatabase){[Name = DefaultTable]}[Data],
Percentiles = Value.NativeQuery(StormEvents, "| summarize percentiles(DamageProperty, 50, 90, 95) by State")
in
Percentiles
Power BI 데이터 새로 고침 스케줄러를 사용하여 Kusto에 대한 제어 명령 실행 안 함
Power BI에는 데이터 원본에 대해 정기적으로 쿼리를 실행할 수 있는 데이터 새로 고침 스케줄러가 포함되어 있습니다. Power BI는 모든 쿼리가 읽기 전용이라고 가정하므로 이 메커니즘을 사용하여 Kusto로 제어 명령을 예약하면 안 됩니다.