Power BI Desktop에서 Connpass 이벤트 구문 분석
Connpass API
API 참조 에 따르면 이벤트 검색 쿼리입니다.
이번에는 특정 그룹의 이벤트를 각각 취해 보겠습니다.
그룹의 이벤트 주소
시리즈 (3366은 Power BI 스터디)
htps : // 곤파 s. 코 m / 아피 / v1 / 에이 t? 세리에 s_i d = 3366
페이징
응답에 포함된 정보와 count, start 매개 변수를 사용하여 페이징할 수 있습니다.
{
"results_start": 1,
"results_returned": 10,
"results_available": 38,
"events": [...]
}
Postman에서 실행해보기
htps : // 곤파 s. 코 m / 아피 / v1 / 에이 t? 세리에 s_i d = 3366 & s rt = 1 & Koun t = 5 실행
Power BI로 보고서 만들기
1. Power BI Desktop을 열고 데이터 가져오기를 클릭합니다.
2. "빈 쿼리"를 추가.
3. "고급 편집기"를 클릭하여 아래 코드를 붙입니다.
let
Count = 10,
Series_Id = 3366,
GetConnpassEvents = (start as number) =>
let
data = Web.Contents("https://connpass.com/api/v1/event?series_id="& Number.ToText(Series_Id) & "&count=" & Number.ToText(Count) & "&start=" & Number.ToText(start))
in
data,
AllEventsRawData = List.Generate(
()=> GetConnpassEvents(1),
each Json.Document(_)[results_returned] > 0,
each GetConnpassEvents(Json.Document(_)[results_start]+Json.Document(_)[results_returned])
),
AllEventsList = List.Transform(AllEventsRawData, (_) => Json.Document(_)[events]),
AllEvents = Table.FromList(List.Combine(AllEventsList), Splitter.SplitByNothing(), null, null, ExtraValues.Error),
ExpandColumns = Table.ExpandRecordColumn(AllEvents, "Column1", {"event_id", "title", "catch", "description", "event_url", "started_at", "ended_at", "limit", "hash_tag", "event_type", "accepted", "waiting", "updated_at", "owner_id", "owner_nickname", "owner_display_name", "place", "address", "lat", "lon", "series"}, {"event_id", "title", "catch", "description", "event_url", "started_at", "ended_at", "limit", "hash_tag", "event_type", "accepted", "waiting", "updated_at", "owner_id", "owner_nickname", "owner_display_name", "place", "address", "lat", "lon", "series"}),
ConvertGeolocationType = Table.TransformColumnTypes(ExpandColumns,{{"lat", type number}, {"lon", type number}}),
ConvertIntType = Table.TransformColumnTypes(ConvertGeolocationType,{{"waiting", Int64.Type}, {"accepted", Int64.Type}, {"limit", Int64.Type}}),
ConvertDateType = Table.TransformColumns(ConvertIntType,{{"ended_at", each Date.From(DateTimeZone.From(_)), type date}, {"started_at", each Date.From(DateTimeZone.From(_)), type date}, {"updated_at", each Date.From(DateTimeZone.From(_)), type date}}),
ExpandSeries = Table.ExpandRecordColumn(ConvertDateType, "series", {"id", "title", "url"}, {"series.id", "series.title", "series.url"})
in
ExpandSeries
4. 쿼리 이름을 이벤트로 변경하고 닫고 적용을 클릭합니다.
5. 보고서를 작성합니다.
코드 설명
Power Query 및 M 언어에 대해서는 다음 기사가 훌륭하므로 참조하십시오.
Power Query는 조금 이상한 곳이 있지만, 알아두는 것이 좋은 일이 있다는 이야기를 했다
그럼 이번 코드입니다.
처음에 변수 설정
let
Count = 10,
Series_Id = 3366,
Web.Contents 함수를 사용하여 Connpass API에서 이벤트를 가져옵니다. 인수로 시작 번호를 전달하는 것 외에 숫자를 텍스트로 변환하기 위해 Number.ToText를 사용합니다.
GetConnpassEvents = (start as number) =>
let
data = Web.Contents("https://connpass.com/api/v1/event?series_id="& Number.ToText(Series_Id) & "&count=" & Number.ToText(Count) & "&start=" & Number.ToText(start))
in
data,
이벤트수에 따라서는 복수회 GetConnpassEvents 를 부르게 되므로, List.Generate 를 이용.
{
"results_start": 1,
"results_returned": 10,
"results_available": 38,
"events": [...]
}
1. Power BI Desktop을 열고 데이터 가져오기를 클릭합니다.
2. "빈 쿼리"를 추가.
3. "고급 편집기"를 클릭하여 아래 코드를 붙입니다.
let
Count = 10,
Series_Id = 3366,
GetConnpassEvents = (start as number) =>
let
data = Web.Contents("https://connpass.com/api/v1/event?series_id="& Number.ToText(Series_Id) & "&count=" & Number.ToText(Count) & "&start=" & Number.ToText(start))
in
data,
AllEventsRawData = List.Generate(
()=> GetConnpassEvents(1),
each Json.Document(_)[results_returned] > 0,
each GetConnpassEvents(Json.Document(_)[results_start]+Json.Document(_)[results_returned])
),
AllEventsList = List.Transform(AllEventsRawData, (_) => Json.Document(_)[events]),
AllEvents = Table.FromList(List.Combine(AllEventsList), Splitter.SplitByNothing(), null, null, ExtraValues.Error),
ExpandColumns = Table.ExpandRecordColumn(AllEvents, "Column1", {"event_id", "title", "catch", "description", "event_url", "started_at", "ended_at", "limit", "hash_tag", "event_type", "accepted", "waiting", "updated_at", "owner_id", "owner_nickname", "owner_display_name", "place", "address", "lat", "lon", "series"}, {"event_id", "title", "catch", "description", "event_url", "started_at", "ended_at", "limit", "hash_tag", "event_type", "accepted", "waiting", "updated_at", "owner_id", "owner_nickname", "owner_display_name", "place", "address", "lat", "lon", "series"}),
ConvertGeolocationType = Table.TransformColumnTypes(ExpandColumns,{{"lat", type number}, {"lon", type number}}),
ConvertIntType = Table.TransformColumnTypes(ConvertGeolocationType,{{"waiting", Int64.Type}, {"accepted", Int64.Type}, {"limit", Int64.Type}}),
ConvertDateType = Table.TransformColumns(ConvertIntType,{{"ended_at", each Date.From(DateTimeZone.From(_)), type date}, {"started_at", each Date.From(DateTimeZone.From(_)), type date}, {"updated_at", each Date.From(DateTimeZone.From(_)), type date}}),
ExpandSeries = Table.ExpandRecordColumn(ConvertDateType, "series", {"id", "title", "url"}, {"series.id", "series.title", "series.url"})
in
ExpandSeries
4. 쿼리 이름을 이벤트로 변경하고 닫고 적용을 클릭합니다.
5. 보고서를 작성합니다.
코드 설명
Power Query 및 M 언어에 대해서는 다음 기사가 훌륭하므로 참조하십시오.
Power Query는 조금 이상한 곳이 있지만, 알아두는 것이 좋은 일이 있다는 이야기를 했다
그럼 이번 코드입니다.
처음에 변수 설정
let
Count = 10,
Series_Id = 3366,
Web.Contents 함수를 사용하여 Connpass API에서 이벤트를 가져옵니다. 인수로 시작 번호를 전달하는 것 외에 숫자를 텍스트로 변환하기 위해 Number.ToText를 사용합니다.
GetConnpassEvents = (start as number) =>
let
data = Web.Contents("https://connpass.com/api/v1/event?series_id="& Number.ToText(Series_Id) & "&count=" & Number.ToText(Count) & "&start=" & Number.ToText(start))
in
data,
이벤트수에 따라서는 복수회 GetConnpassEvents 를 부르게 되므로, List.Generate 를 이용.
let
Count = 10,
Series_Id = 3366,
GetConnpassEvents = (start as number) =>
let
data = Web.Contents("https://connpass.com/api/v1/event?series_id="& Number.ToText(Series_Id) & "&count=" & Number.ToText(Count) & "&start=" & Number.ToText(start))
in
data,
Json.Document(_)
에 있는 _
는 GetConnpassEvents의 결과이므로 Web.Contents의 반환 값 results_returned
를 사용해 처리를 계속할지 확인. 레코드가 반환되는 한 다음을 실행하십시오 results_start
와 results_returned
의 값으로부터 start
의 값을 만든다 AllEventsRawData = List.Generate(
()=> GetConnpassEvents(1),
each Json.Document(_)[results_returned] > 0,
each GetConnpassEvents(Json.Document(_)[results_start]+Json.Document(_)[results_returned])
),
List.Transform 에서 상기의 AllEventsRawData 를 호출해, 결과로부터
events
만을 꺼낸다. AllEventsList = List.Transform(AllEventsRawData, (_) => Json.Document(_)[events]),
그런 다음 List.Combine에서 얻은
events
를 모두 병합하고 Table.FromList로 테이블화합니다. AllEvents = Table.FromList(List.Combine(AllEventsList), Splitter.SplitByNothing(), null, null, ExtraValues.Error),
여기서부터는 GUI에서도 할 수 있는 변환을 하고 있을 뿐입니다.
요약
웹 API 사양에 따라 다르지만 대략 비슷한 패턴으로 데이터를 검색할 수 있습니다. 실시에는 에러의 핸들등 생각할 필요도 있습니다만, 부디 여러가지 데이터를 취해 봐 주세요.
참조
Power Query는 조금 이상한 곳이 있지만, 알아두는 것이 좋은 일이 있다는 이야기를 했다
Power Query의 List.Generate 함수는 무엇입니까?
때때로 나오는 "each" 키워드와 "_"(밑줄)
Reference
이 문제에 관하여(Power BI Desktop에서 Connpass 이벤트 구문 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kenakamu/items/e52dc82f5cf3c609b467
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Power Query는 조금 이상한 곳이 있지만, 알아두는 것이 좋은 일이 있다는 이야기를 했다
Power Query의 List.Generate 함수는 무엇입니까?
때때로 나오는 "each" 키워드와 "_"(밑줄)
Reference
이 문제에 관하여(Power BI Desktop에서 Connpass 이벤트 구문 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kenakamu/items/e52dc82f5cf3c609b467텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)