Record.FieldValues와 Record.ToList를 비교해 보았습니다 | Power Query

똑같은 것 밖에 보이지 않는 2개의 함수에 대해 조사한 갈수록, 기사로 했습니다.
역시 차이는 발견할 수 없습니다・・・.

원본 레코드



대소, 데이터형 등 편차해 본다.

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만건으로 하고 같은 테스트해 보았습니다만, 거의 같습니다. 요점은 차이가 없다.

좋은 웹페이지 즐겨찾기