Discourse Data Explorer Power BI 통합
최근 저는 Data Explorer 데이터를 최소한의 오버헤드로 Power BI에 직접 가져오는 멋진 Power BI 함수를 만들었습니다.
따라서 저처럼 Power BI 앱을 통해 데이터를 자동으로 가져오고 새로고침되기를 원하신다면, 아래는 Power BI의 고급 편집기(Advanced Editor)에 입력해야 할 함수 코드입니다:
(queryID) => let
resultCount = 1000,
otherNameForPage = 0,
GetPage = (otherNameForPage) =>
let
content1 = "params={""page"":""" & Number.ToText(otherNameForPage) & """}",
RawData = Json.Document(Web.Contents(
"https://forumURL/admin/plugins/explorer/queries",
[RelativePath=Number.ToText(queryID) & "/run",
Query=
[
params="{""page"":""" & Number.ToText(otherNameForPage) & """}"
],
Headers = [
#"api-username"="yourAPIUsername",
#"api-key"="yourAPIKey",
#"Content-Type" = "application/x-www-form-urlencoded"],
Content = Text.ToBinary(content1)
]
) ),
resultCount = RawData[result_count]
in
if RawData[result_count] = 0 then null else RawData,
Pages = List.Generate(
() => [i = 0, RawData = GetPage(i)],
each [RawData] <> null,
each [i=[i]+1, RawData = GetPage(i)],
each Table.Combine(let raw = [RawData] in List.Transform(raw[rows], each Table.FromRows({_}, raw[columns])))),
Output = Table.Combine(Pages)
in
Output
그리고 여기 Data Explorer 쿼리 예시가 있습니다. 위의 함수가 올바르게 작동하려면 필요한 페이지네이션(pagination)을 포함하고 있습니다 (쿼리가 단 1페이지만 반환하더라도 필요합니다):
--[params]
-- integer :page = 0
SELECT count(*) from badges
OFFSET :page * 1000
LIMIT 1000
(위 예시의 첫 번째와 마지막 두 줄을 포함함으로써 기존 쿼리를 쉽게 수정할 수 있습니다)
이 함수는 더 이상 결과가 없도록 페이지를 자동으로 반복합니다.
작동하는 방법?
함수를 Power BI에 로드한 후, 두 가지를 설정해야 합니다:
-
api-username과 api-key (위 함수의 플레이스홀더 참조):
Headers = [ #"api-username"="yourAPIUsername", #"api-key"="yourAPIKey", -
쿼리 ID 번호.
데이터를 가져오려면 쿼리 URL에서 쉽게 찾을 수 있는 쿼리의 ID만 제공하면 됩니다:

함수를 클릭한 후 Power BI에서는 다음과 같이 보일 것입니다:
출력 예시
이것은 샘플 쿼리의 출력입니다:

이것으로 끝입니다! 이제 원하는 대로 데이터를 변환할 수 있습니다.










