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 ¢ ( …½‚0Ä_…t§ DÈŸ2¸JbB4®Th„bh±¼›ƒä+H¢7“î.¿áîy@6uw“ƒ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 ¢ ( mŽKÂ0D¯yŸº°@5eÜ€DÁýˆæ£ÆEál,8W mwˆ¥gæyæózWÇdñ 1öÞ)Ø%rÆßz×*˜¸‘{8ÖÕõ(ŠuQALjÑtdu,| —ÆVs>ǃ6wÝnËr‡Æ;&Ç’çPWgjô4°¸¤,¯µqZss•¦Ä¸Èø—°?yÂÐÍÙÄ$m”v!q^PK ³¸IJ¿ d› ³ Formulas/Section1.m ¢ ( mOkÃ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,øà 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{"columnCount":3,"keyColumnNames":[],"queryRelationships":[],"columnIdentities":["Section1/data/Changed Type.{Country,0}","Section1/data/Changed Type.{City,1}","Section1/data/Changed Type.{NetAmount,2}"],"ColumnCount":3,"KeyColumnNames":[],"ColumnIdentities":["Section1/data/Changed Type.{Country,0}","Section1/data/Changed Type.{City,1}","Section1/data/Changed Type.{NetAmount,2}"],"RelationshipInfo":[]}" /> <Entry Type="FillColumnNames" Value="s["Country","City","NetAmount"]" /> <Entry Type="LastAnalysisServicesFormulaText" Value="s{"IncludesReferencedQueries":true,"RootFormulaText":"let\r\n Source = Csv.Document(File.Contents(\"C:\\Users\\sldr01\\Desktop\\posts\\pl_pbix_inside\\data.csv\"),[Delimiter=\",\", Columns=3, Encoding=1252, QuoteStyle=QuoteStyle.None]),\r\n #\"Promoted Headers\" = Table.PromoteHeaders(Source),\r\n #\"Changed Type\" = Table.TransformColumnTypes(#\"Promoted Headers\",{{\"Country\", type text}, {\"City\", type text}, {\"NetAmount\", Int64.Type}})\r\nin\r\n #\"Changed Type\"","ReferencedQueriesFormulaText":{}}" /> <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~Ô € l|÷æP\}6&è*Rw•P GÔÒVÇdÈlg ð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.
- Docker dla amatora danych – Tworzenie środowiska (VM) w Azure i VirtualBox (skrypt) - April 20, 2020
- Power-up your BI project with PowerApps – materiały - February 5, 2020
- Docker dla “amatora” danych – kod źródłowy do prezentacji - November 18, 2019
Last comments