Co znajduje sie w srodku pliku pbix?

Raporty stworzone za pomocą Power BI Desktop zapisywane są z rozszerzeniem *.pbix Okazuje się, że nie jest to nowy format plików w którym zawarty jest kod źródłowy raportów tylko plik archiwum, który jesteśmy w stanie rozpakować. Zacznijmy od stworzenia bardzo prostego raportu w Power Bi Desktop.

Tworzenie raportu

Jako źródło danych do raportu posłuży bardzo prosty plik csv z następującymi danymi:

Country,City,NetAmount
Poland,Warsaw,1000
Spain,Madrid, 250
France,Paris,920

Tekst zapisujemy jako plik csv i następnie importujemy go do Power BI Desktop.

Dodajmy dodatkową miarę do modelu:

TotalPercent = CALCULATE(SUM(data[NetAmount])/CALCULATE(SUM(data[NetAmount]),ALLSELECTED(data)))

Dodajemy również przykładową wizualizację danych:

 

Tak przygotowany raport postaramy się podejrzeć od środka.

Plik *.pbix
Raport jest zapisywany z rozszerzeniem *.pbix Nie jest to jednak nowy format plików natomiast archiwum, które możemy rozpakować przy użyciu np. 7-Zip.

Po rozpakowaniu naszym oczom ukaże się lista plików.


Przyjrzyjmy się poszczególnym plikom i ich zawartości. Do przeglądania zawartości tych plików będziemy wykorzystywać program Notepad++

.\Version – plik zawiera informacje o wersji. Nie jest to jednak numer wersji Power Bi Desktop w którym zostało stworzony numer.
Zawartość mojego pliku:

1.11

.\Settings – w moim przypadku plik jest pusty.
.\SecurityBindings – w moim przypadku plik zawiera pewne losowe dane

   ÐŒßÑŒz ÀO—ë   t9Rž•G€¢\úÞ         f  À      gÑ
ÇMe YKŽ§Ð4ýì    €         kñó5|©æeãÉÓ6‰H   …™ÄvÙ*Òÿfì>˜š…Ül§Ô´$Th1Â	ÞžÕîêˆnÌ
ï¬VJ¤´_A´Ù„bªzÜ	%ߥcš˜efÉ*f‡vfX   ¾–wÍíæ“(ÜÖ%~jrêd9^

.\Metadata – w moim przypadku plik zawiera pewne dane z których ciężko cokolwiek wywnioskować poza id (GUID), które zostało nadane tabeli

          data$19cce2b4-9125-4106-8281-da33db91feb0   $19cce2b4-9125-4106-8281-da33db91feb0data

.\DiagramState – plik zawiera informacje o relacjach między tabelami, tutaj również tabela jest oznaczana jako id (GUID)

{
    "Version": 0,
    "Data": [
        {
            "TableKey": "Tables\\19cce2b4-9125-4106-8281-da33db91feb0",
            "Height": 150,
            "Width": 200,
            "Left": 0,
            "Top": 0
        }
    ]
}

.\DataModel – plik zawiera pewne informacje o modelu, które możemy odczytać.

STREAM_STORAGE_SIGNATURE_)!@#$%^&*(
<BackupLog>
    <BackupRestoreSyncVersion>140</BackupRestoreSyncVersion>
    <Fault>false</Fault>
    <faultcode>43981</faultcode>
    <ErrorCode>false</ErrorCode>
    <EncryptionFlag>false</EncryptionFlag>
    <EncryptionKey>6</EncryptionKey>
    <ApplyCompression>true</ApplyCompression>
    <m_cbOffsetHeader>114688</m_cbOffsetHeader>
    <DataSize>41268</DataSize>
    <Files>75</Files>
    <ObjectID>E31C7D2F-EF13-11E6-87D7-847BEB500275</ObjectID>
    <m_cbOffsetData>4096</m_cbOffsetData>
</BackupLog>
<Partitions/>ॎΪ  䰼慯⁤浸湬㵳栢瑴㩰⼯捳敨慭⹳業牣  獯景⹴潣⽭湡污獹獩敳癲捩獥㈯
<img class="emoji" draggable="false" alt="〰" src="https://s.w.org/images/core/emoji/2.2.1/svg/3030.svg" data-mce-resize="false" data-mce-placeholder="1" data-wp-emoji="1">⼳녷Ą湥楧敮ଢ㨂摤㉬ȷ∯㈯ɇ坟㼂朥㄂
    <img class="emoji" draggable="false" alt="〰" src="https://s.w.org/images/core/emoji/2.2.1/svg/3030.svg" data-mce-resize="false" data-mce-placeholder="1" data-wp-emoji="1">ɧᩏ攸朁异ʇ⥟ʧè껕魝ʇ᥯〱ݶɧ蝟异ꜩ㌂ʇᱏ蔱朁异ʇ⥟ʧ蜴伂㈜ʅǰɧ蝟漂ꜩ㄂ʇ╟朱异ʇ⥟ă불ʧ霵伇똜朁异ʇ⤯ʧ獸湤眂睷眮⸳牯䥧ㄕ堯䱍ɓ會 䀀杩ँ椭獮慴据≥㰾扏敪瑣敄楦楮楴湯㰾  慄慴慢敳㰾慎敭㤾捡㌲㈱ⴷ㕡㕦㐭㙢Ѡ ⴸ敡扡㐭摤㤱晣摥㉢㱡刯㰁䑉ŷ๿ŀ䌼敲aက琁摥楔敭Ѩ灭ᠾ㜈〭ⴲ㠰㉔㨳〱〺⸱㈰瀳䞄㰀术㰁慌瑳ٳ灕

.\DataMashup – plik zawiera między innymi kod języka M dla zapytań

    %  PK   ³¸IJƒ	zª   ú     Config/Package.xml ¢ (&nbsp; …½‚0Ä_…t§&nbsp;DÈŸ2¸JbB4®Th„bh±¼›ƒä+H¢7“î.¿áîy@6u­w“ƒQ½NÃyR—}¥t¢ÑžýÊ8ìEyµôfX›d2UŠk¯ !Î9ìBÜ5 (eä”‘@_Xý‡}¥º”ˆÃñ=†x5+bÇ”YjÈ•^<Ãkq„)Ÿ¶ckÇAr©ýCd‰@>?øPK   ³¸IJÊ髤   é     [Content_Types].xml ¢ (&nbsp;                     mŽKÂ0D¯yŸº°@5eÜ€DÁýˆæ£ÆEál,8W mwˆ¥gæyæózWÇdñ&nbsp;1öÞ)Ø%rÆßz×*˜¸‘{8ÖÕõ(ŠuQALjÑtdu,| —ÆVs>ǃ6wÝnËr‡Æ;&Ç’çPWgjô4°¸¤,¯µqZss•¦Ä¸Èø—°?yÂÐÍÙÄ$m”v!q^PK   ³¸IJ¿ d›  ³    Formulas/Section1.m ¢ (&nbsp;                     mOkÃ0Åï|ã]R0aíþVréÆv)íNË(n¬µfŽ,¥´Œ~÷9¤ÐÃê‹í÷ô¤Ÿj¶èÅb¸ÇÓ4IÚê FÍZ§‰ˆg]¨!*%íòÖ]ž³gë /ÑsüP&Ë‡êƒ PE΄ëq5úal«‰©jݪ]ÛýÊz²ª~B^ÓNŽÔçœm,C(¤’J”èºÆSq£Ä“¯ÑX¿)Æ“»‰ï2,øà&nbsp;8?ó9zø©ôJ¾l¢gÄhqdÄ^êu,
<9'=–:Ë­ö›˜[Z8‡–A{úÆÐX½IÙ…)ê÷W–Øy‡¸Ç2Á°ç£Q·ü_œ?6} :¯žïoó¾÷ñ8Jë/2Mÿ PK-    ³¸IJƒ	zª   ú                    Config/Package.xmlPK-    ³¸IJÊ髤   é                ö   [Content_Types].xmlPK-    ³¸IJ¿ d›  ³               ç  Formulas/Section1.mPK         M      
    <?xml version="1.0" encoding="utf-8"?>
    <PermissionList 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <CanEvaluateFuturePackages>false</CanEvaluateFuturePackages>
        <FirewallEnabled>true</FirewallEnabled>
    </PermissionList>      ó	  
    <?xml version="1.0" encoding="utf-8"?>
    <LocalPackageMetadataFile 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <Items>
            <Item>
                <ItemLocation>
                    <ItemType>AllFormulas</ItemType>
                    <ItemPath />
                </ItemLocation>
                <StableEntries />
            </Item>
            <Item>
                <ItemLocation>
                    <ItemType>Formula</ItemType>
                    <ItemPath>Section1/data</ItemPath>
                </ItemLocation>
                <StableEntries>
                    <Entry Type="IsPrivate" Value="l0" />
                    <Entry Type="IsDirectQuery" Value="l0" />
                    <Entry Type="RelationshipInfoContainer" Value="s{&quot;columnCount&quot;:3,&quot;keyColumnNames&quot;:[],&quot;queryRelationships&quot;:[],&quot;columnIdentities&quot;:[&quot;Section1/data/Changed Type.{Country,0}&quot;,&quot;Section1/data/Changed Type.{City,1}&quot;,&quot;Section1/data/Changed Type.{NetAmount,2}&quot;],&quot;ColumnCount&quot;:3,&quot;KeyColumnNames&quot;:[],&quot;ColumnIdentities&quot;:[&quot;Section1/data/Changed Type.{Country,0}&quot;,&quot;Section1/data/Changed Type.{City,1}&quot;,&quot;Section1/data/Changed Type.{NetAmount,2}&quot;],&quot;RelationshipInfo&quot;:[]}" />
                    <Entry Type="FillColumnNames" Value="s[&quot;Country&quot;,&quot;City&quot;,&quot;NetAmount&quot;]" />
                    <Entry Type="LastAnalysisServicesFormulaText" Value="s{&quot;IncludesReferencedQueries&quot;:true,&quot;RootFormulaText&quot;:&quot;let\r\n    Source = Csv.Document(File.Contents(\&quot;C:\\Users\\sldr01\\Desktop\\posts\\pl_pbix_inside\\data.csv\&quot;),[Delimiter=\&quot;,\&quot;, Columns=3, Encoding=1252, QuoteStyle=QuoteStyle.None]),\r\n    #\&quot;Promoted Headers\&quot; = Table.PromoteHeaders(Source),\r\n    #\&quot;Changed Type\&quot; = Table.TransformColumnTypes(#\&quot;Promoted Headers\&quot;,{{\&quot;Country\&quot;, type text}, {\&quot;City\&quot;, type text}, {\&quot;NetAmount\&quot;, Int64.Type}})\r\nin\r\n    #\&quot;Changed Type\&quot;&quot;,&quot;ReferencedQueriesFormulaText&quot;:{}}" />
                    <Entry Type="IsLastAnalysisServicesFormulaTextCollection" Value="l1" />
                    <Entry Type="LoadedToAnalysisServices" Value="l1" />
                    <Entry Type="ResultType" Value="sTable" />
                    <Entry Type="BufferNextRefresh" Value="l0" />
                </StableEntries>
            </Item>
            <Item>
                <ItemLocation>
                    <ItemType>Formula</ItemType>
                    <ItemPath>Section1/data/Source</ItemPath>
                </ItemLocation>
                <StableEntries />
            </Item>
            <Item>
                <ItemLocation>
                    <ItemType>Formula</ItemType>
                    <ItemPath>Section1/data/Promoted%20Headers</ItemPath>
                </ItemLocation>
                <StableEntries />
            </Item>
            <Item>
                <ItemLocation>
                    <ItemType>Formula</ItemType>
                    <ItemPath>Section1/data/Changed%20Type</ItemPath>
                </ItemLocation>
                <StableEntries />
            </Item>
        </Items>
    </LocalPackageMetadataFile>   PK                  Ú      ÐŒßÑŒz ÀO—ë   t9Rž•G€¢\úÞ         f  À      CQeP¦×	Ë1Ô±e5~Ô    €  &nbsp;      l|÷æP\}6&è*Rw•P   GÔÒVÇdÈlg&nbsp;ðuxt®ñV[3ÞÓz…B™2ÕKÛk©B›/Æ­J3Z¼“ÎlýÍ?û6Ìþ	Î+Õ—úFxU¯‚!šËύ   A€÷rü–P¥²«•§':/mAé‘

.\[Content_Types].xml – plik zawiera pewne informacje w formacie XML

<?xml version="1.0" encoding="utf-8"?>
<Types 
    xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
    <Override PartName="/Version" ContentType="" />
    <Override PartName="/DataMashup" ContentType="" />
    <Override PartName="/DataModel" ContentType="" />
    <Override PartName="/Report/Layout" ContentType="" />
    <Override PartName="/Settings" ContentType="" />
    <Override PartName="/Metadata" ContentType="" />
    <Override PartName="/DiagramState" ContentType="" />
    <Override PartName="/SecurityBindings" ContentType="" />
</Types>

.\Report\Layout – plik zawiera definicję raportu. Plik może być przydatny w chwili kopiowania stron raportu między raportami.

{
    "id": 0,
    "sections": [
        {
            "id": 0,
            "name": "ReportSection",
            "displayName": "Page 1",
            "ordinal": 0,
            "visualContainers": [
                {
                    "x": 0,
                    "y": 116.75675675675676,
                    "z": 0,
                    "width": 500.3861003861004,
                    "height": 603.2432432432432,
                    "config": "{\"layouts\":[{\"id\":0,\"position\":{\"x\":0,\"y\":116.75675675675676,\"z\":0,\"width\":500.3861003861004,\"height\":603.2432432432432}}],\"singleVisual\":{\"visualType\":\"columnChart\",\"projections\":{\"Category\":[{\"queryRef\":\"data.Country\",\"active\":true}],\"Y\":[{\"queryRef\":\"Sum(data.NetAmount)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"d\",\"Entity\":\"data\"}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"d\"}},\"Property\":\"Country\"},\"Name\":\"data.Country\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"d\"}},\"Property\":\"NetAmount\"}},\"Function\":0},\"Name\":\"Sum(data.NetAmount)\"}]},\"objects\":{\"labels\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}},\"name\":\"VisualContainer\"}",
                    "query": "{\"Commands\":[{\"SemanticQueryDataShapeCommand\":{\"Query\":{\"Version\":2,\"From\":[{\"Name\":\"d\",\"Entity\":\"data\"}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"d\"}},\"Property\":\"Country\"},\"Name\":\"data.Country\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"d\"}},\"Property\":\"NetAmount\"}},\"Function\":0},\"Name\":\"Sum(data.NetAmount)\"}],\"OrderBy\":[{\"Direction\":1,\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"d\"}},\"Property\":\"Country\"}}}]},\"Binding\":{\"Primary\":{\"Groupings\":[{\"Projections\":[0,1]}]},\"DataReduction\":{\"DataVolume\":4,\"Primary\":{\"Window\":{\"Count\":1000}}},\"Version\":1}}}]}",
                    "dataTransforms": "{\"objects\":{\"labels\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]},\"projectionOrdering\":{\"Category\":[0],\"Y\":[1]},\"projectionActiveItems\":{\"Category\":[{\"queryRef\":\"data.Country\",\"suppressConcat\":false}]},\"queryMetadata\":{\"Select\":[{\"Restatement\":\"Country\",\"Name\":\"data.Country\",\"Type\":2048},{\"Restatement\":\"NetAmount\",\"Name\":\"Sum(data.NetAmount)\",\"Type\":3,\"Format\":\"0\"}]},\"visualElements\":[{\"DataRoles\":[{\"Name\":\"Category\",\"Projection\":0,\"isActive\":true},{\"Name\":\"Y\",\"Projection\":1,\"isActive\":false}]}],\"selects\":[{\"displayName\":\"Country\",\"queryName\":\"data.Country\",\"roles\":{\"Category\":true},\"sort\":1,\"sortOrder\":0,\"type\":{\"category\":null,\"underlyingType\":1},\"expr\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"data\"}},\"Property\":\"Country\"}}},{\"displayName\":\"NetAmount\",\"format\":\"0\",\"queryName\":\"Sum(data.NetAmount)\",\"roles\":{\"Y\":true},\"type\":{\"category\":null,\"underlyingType\":260},\"expr\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"data\"}},\"Property\":\"NetAmount\"}},\"Function\":0}}}]}"
                },
                {
                    "x": 0.9266409266409267,
                    "y": 0.9266409266409267,
                    "z": 2,
                    "width": 1277.837837837838,
                    "height": 89.88416988416989,
                    "config": "{\"layouts\":[{\"id\":0,\"position\":{\"x\":0.9266409266409267,\"y\":0.9266409266409267,\"z\":2,\"width\":1277.837837837838,\"height\":89.88416988416989}}],\"singleVisual\":{\"visualType\":\"textbox\",\"objects\":{\"general\":[{\"properties\":{\"paragraphs\":[{\"textRuns\":[{\"value\":\"REPORT TITLE\",\"textStyle\":{\"fontSize\":\"60px\"}}],\"horizontalTextAlignment\":\"center\"}]}}]}},\"name\":\"VisualContainer1\"}"
                },
                {
                    "x": 521.6988416988418,
                    "y": 326.1776061776062,
                    "z": 3,
                    "width": 757.992277992278,
                    "height": 393.82239382239385,
                    "config": "{\"layouts\":[{\"id\":0,\"position\":{\"x\":521.6988416988418,\"y\":326.1776061776062,\"z\":3,\"width\":757.992277992278,\"height\":393.82239382239385}}],\"singleVisual\":{\"visualType\":\"map\",\"projections\":{\"Category\":[{\"queryRef\":\"data.Country\",\"active\":true}],\"Size\":[{\"queryRef\":\"Sum(data.NetAmount)\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"d\",\"Entity\":\"data\"}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"d\"}},\"Property\":\"Country\"},\"Name\":\"data.Country\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"d\"}},\"Property\":\"NetAmount\"}},\"Function\":0},\"Name\":\"Sum(data.NetAmount)\"}]}},\"name\":\"VisualContainer2\"}",
                    "query": "{\"Commands\":[{\"SemanticQueryDataShapeCommand\":{\"Query\":{\"Version\":2,\"From\":[{\"Name\":\"d\",\"Entity\":\"data\"}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"d\"}},\"Property\":\"Country\"},\"Name\":\"data.Country\"},{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"d\"}},\"Property\":\"NetAmount\"}},\"Function\":0},\"Name\":\"Sum(data.NetAmount)\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"d\"}},\"Property\":\"NetAmount\"}},\"Function\":0}}}]},\"Binding\":{\"Primary\":{\"Groupings\":[{\"Projections\":[0,1]}]},\"DataReduction\":{\"DataVolume\":4,\"Primary\":{\"Top\":{}}},\"Version\":1}}}]}",
                    "dataTransforms": "{\"projectionOrdering\":{\"Category\":[0],\"Size\":[1]},\"projectionActiveItems\":{\"Category\":[{\"queryRef\":\"data.Country\",\"suppressConcat\":false}]},\"queryMetadata\":{\"Select\":[{\"Restatement\":\"Country\",\"Name\":\"data.Country\",\"Type\":2048},{\"Restatement\":\"NetAmount\",\"Name\":\"Sum(data.NetAmount)\",\"Type\":3,\"Format\":\"0\"}]},\"visualElements\":[{\"DataRoles\":[{\"Name\":\"Category\",\"Projection\":0,\"isActive\":true},{\"Name\":\"Size\",\"Projection\":1,\"isActive\":false}]}],\"selects\":[{\"displayName\":\"Country\",\"queryName\":\"data.Country\",\"roles\":{\"Category\":true},\"type\":{\"category\":null,\"underlyingType\":1},\"expr\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"data\"}},\"Property\":\"Country\"}}},{\"displayName\":\"NetAmount\",\"format\":\"0\",\"queryName\":\"Sum(data.NetAmount)\",\"roles\":{\"Size\":true},\"sort\":2,\"sortOrder\":0,\"type\":{\"category\":null,\"underlyingType\":260},\"expr\":{\"Aggregation\":{\"Expression\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"data\"}},\"Property\":\"NetAmount\"}},\"Function\":0}}}]}"
                },
                {
                    "x": 521.6988416988418,
                    "y": 120.46332046332047,
                    "z": 4,
                    "width": 757.992277992278,
                    "height": 182.54826254826256,
                    "config": "{\"layouts\":[{\"id\":0,\"position\":{\"x\":521.6988416988418,\"y\":120.46332046332047,\"z\":4,\"width\":757.992277992278,\"height\":182.54826254826256}}],\"singleVisual\":{\"visualType\":\"treemap\",\"projections\":{\"Group\":[{\"queryRef\":\"data.Country\",\"active\":true}],\"Values\":[{\"queryRef\":\"data.TotalPercent\"}]},\"prototypeQuery\":{\"Version\":2,\"From\":[{\"Name\":\"d\",\"Entity\":\"data\"}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"d\"}},\"Property\":\"Country\"},\"Name\":\"data.Country\"},{\"Measure\":{\"Expression\":{\"SourceRef\":{\"Source\":\"d\"}},\"Property\":\"TotalPercent\"},\"Name\":\"data.TotalPercent\"}]},\"objects\":{\"labels\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]}},\"name\":\"VisualContainer3\"}",
                    "query": "{\"Commands\":[{\"SemanticQueryDataShapeCommand\":{\"Query\":{\"Version\":2,\"From\":[{\"Name\":\"d\",\"Entity\":\"data\"}],\"Select\":[{\"Column\":{\"Expression\":{\"SourceRef\":{\"Source\":\"d\"}},\"Property\":\"Country\"},\"Name\":\"data.Country\"},{\"Measure\":{\"Expression\":{\"SourceRef\":{\"Source\":\"d\"}},\"Property\":\"TotalPercent\"},\"Name\":\"data.TotalPercent\"}],\"OrderBy\":[{\"Direction\":2,\"Expression\":{\"Measure\":{\"Expression\":{\"SourceRef\":{\"Source\":\"d\"}},\"Property\":\"TotalPercent\"}}}]},\"Binding\":{\"Primary\":{\"Groupings\":[{\"Projections\":[0,1]}]},\"DataReduction\":{\"DataVolume\":3,\"Primary\":{\"Top\":{}}},\"Version\":1}}}]}",
                    "dataTransforms": "{\"objects\":{\"labels\":[{\"properties\":{\"show\":{\"expr\":{\"Literal\":{\"Value\":\"true\"}}}}}]},\"projectionOrdering\":{\"Group\":[0],\"Values\":[1]},\"projectionActiveItems\":{\"Group\":[{\"queryRef\":\"data.Country\",\"suppressConcat\":false}]},\"queryMetadata\":{\"Select\":[{\"Restatement\":\"Country\",\"Name\":\"data.Country\",\"Type\":2048},{\"Restatement\":\"TotalPercent\",\"Name\":\"data.TotalPercent\",\"Type\":1}]},\"visualElements\":[{\"DataRoles\":[{\"Name\":\"Group\",\"Projection\":0,\"isActive\":true},{\"Name\":\"Values\",\"Projection\":1,\"isActive\":false}]}],\"selects\":[{\"displayName\":\"Country\",\"queryName\":\"data.Country\",\"roles\":{\"Group\":true},\"type\":{\"category\":null,\"underlyingType\":1},\"expr\":{\"Column\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"data\"}},\"Property\":\"Country\"}}},{\"displayName\":\"TotalPercent\",\"queryName\":\"data.TotalPercent\",\"roles\":{\"Values\":true},\"sort\":2,\"sortOrder\":0,\"type\":{\"category\":null,\"underlyingType\":259},\"expr\":{\"Measure\":{\"Expression\":{\"SourceRef\":{\"Entity\":\"data\"}},\"Property\":\"TotalPercent\"}}}]}"
                }
            ],
            "displayOption": 1,
            "width": 1280,
            "height": 720,
            "config": "{}"
        }
    ],
    "config": "{\"version\":\"2.4\",\"activeSectionIndex\":0}",
    "layoutOptimization": 0
}

Warto zauważyć, że w przypadku wykorzystania jakiegokolwiek dodatkowego wykresu (Custom Visuals) zostanie on również skopiowany i umieszczony w archiwum pliku raportu.
Niestety bardzo trudno powiedzieć coś więcej o zawartości plików ze względu na brak dokumentacji i swoje wnioski można opierać wyłącznie na podstawie domysłów. Niemniej jednak powinna to być dla nas cenna i ciekawa informacja. To co jednak możemy powiedzieć to fakt, iż udostępnianie raportów osobom niepowołanym może wiązać się z dostępem do danych i wiedzy, które te osoby nie powinny posiadać. W przypadku pojawienia się większej liczby informacji, dokumentacji lub diametralnych zmian w zawartości tych plików wpis ten zostanie zaktualizowany.

 

Slawomir Drzymala
Follow me on

Leave a Reply