Record.FieldValues와 Record.ToList를 비교해 보았습니다 | Power Query
5910 단어 PowerBIExcelPowerQuery
역시 차이는 발견할 수 없습니다・・・.
원본 레코드
대소, 데이터형 등 편차해 본다.
RecordSource
let
Source = [A=10,C=3,G=Json.FromValue({1..100}),B=1,E={1..20},F=[],D=11]
in
Source
↓미리 보기
테스트를 위한 쿼리
Record.FieldValues
로그 출력을 하지 않고 있습니다만, 없어도 관계 없는 것 같습니다.
Values
let
Source = RecordSource,
Custom3 = Diagnostics.Trace(TraceLevel.Information,
"Execute_FiledValues",//自由に出力したい文字列を書ける。
()=> Record.FieldValues(Source),//とにかく、関数の形にすればよい。
true
)
in
Custom3
Record.ToList
구조는 유사하다.
ToList
let
Source = RecordSource,
Custom2 = Diagnostics.Trace(TraceLevel.Information,
"Execute_ToList",
()=>Record.ToList(Source),true
)
in
Custom2
단순 출력 결과
같은 것입니다.
런타임
진단 기능으로 6회 로그를 취해, 그 평균치를 구해 보았습니다.
한 번에 2개의 쿼리를 업데이트하기 위해 전반 3번과 후반 3번 사이에 쿼리 업데이트 순서가 바뀌었습니다.
Power BI 진단 기능 준비
관리자 권한으로 Power BI를 시작합니다.
↓실행하면, 이런 상황에 로그를 읽는 쿼리가 자동으로 만들어진다. (한 번에 두 개의 쿼리 가능)
결과를 추출한 쿼리
처음에는 자동 생성되는 쿼리를 #section을 사용하여 집계하면 좋을 것이라고 생각했지만 Power BI의 데이터 모델에 로드할 수 없었습니다.
그래서 스스로 집계하는 쿼리를 썼습니다. Json 파일도 깨끗하고 기술적으로 새로운 것은 없습니다.
let
InFolder =Folder.Files(ログフォルダ),
#"Filtered Rows" = Table.SelectRows(InFolder, each ([Extension] = ".json")),
//診断の都度、Jsonが3種類作成されるが、そのうちの1個でいいので名前を絞り込み。
#"Filtered Rows1" = Table.SelectRows(#"Filtered Rows", each Text.StartsWith([Name], "Diagnostics_Aggregated")),
#"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows1",{"Content", "Date created"}),
#"Added Custom" = Table.AddColumn(#"Removed Other Columns", "JSON変換後", each
Table.FromRecords(Json.Document([Content]))
),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Content"}),
//combineでないので、各データのテーブル列名を統合しておきました。
Names =List.Distinct(
List.Combine(
List.Transform(#"Removed Columns"[JSON変換後],Table.ColumnNames)
)
),
#"Expanded {0}" = Table.ExpandTableColumn(#"Removed Columns", "JSON変換後", Names, Names),
//実施日が一緒なので、時刻だけを取る。
#"Extracted Time" = Table.TransformColumns(#"Expanded {0}",{{"Date created", DateTime.Time, type time}}),
//集計前にデータ型を規定する。
#"Changed Type" = Table.TransformColumnTypes(#"Extracted Time",{{"ExclusiveDuration", type duration}}),
//
#"Grouped Rows" = Table.Group(#"Changed Type", {"Date created", "Query", "Step"}, {
{"合計秒数", each Duration.Seconds(List.Sum([ExclusiveDuration])),type number}
})
in
#"Grouped Rows"
결과
취한 데이터는 아래와 같다.
Date created
Query
Step
총 초 수
15:27
Values
Custom3
1.096082
15:27
Values
소스
0.0166865
15:27
ToList
Custom2
0.038083
15:27
ToList
소스
0.0280941
15:28
Values
Custom3
0.1193354
15:28
Values
소스
0.0163969
15:28
ToList
Custom2
0.0251825
15:28
ToList
소스
0.0152157
15:30
Values
Custom3
0.043262
15:30
Values
소스
0.022095
15:30
ToList
Custom2
0.0362267
15:30
ToList
소스
0.0200129
16:41
ToList
Custom2
0.0543803
16:41
ToList
소스
0.0385302
16:41
Values
Custom3
0.0765213
16:41
Values
소스
0.0316931
16:43
ToList
Custom2
0.065703
16:43
ToList
소스
0.0267765
16:43
Values
Custom3
0.0298695
16:43
Values
소스
0.0240801
16:44
ToList
Custom2
0.0478038
16:44
ToList
소스
0.0283888
16:44
Values
Custom3
0.0465215
16:44
Values
소스
0.0247305
보고서에서 평균을 구하면 이런 상황입니다.
일단, 데이터수를 10만건으로 하고 같은 테스트해 보았습니다만, 거의 같습니다. 요점은 차이가 없다.
Reference
이 문제에 관하여(Record.FieldValues와 Record.ToList를 비교해 보았습니다 | Power Query), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tanuki_phoenix/items/296b6944dfa31c185b30텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)