{"id":93575,"date":"2022-04-25T17:00:06","date_gmt":"2022-04-25T17:00:06","guid":{"rendered":"https:\/\/www.red-gate.com\/simple-talk\/?p=93575"},"modified":"2024-09-03T20:15:19","modified_gmt":"2024-09-03T20:15:19","slug":"power-bi-last-refresh-time-visualization-tool","status":"publish","type":"post","link":"https:\/\/www.red-gate.com\/simple-talk\/blogs\/power-bi-last-refresh-time-visualization-tool\/","title":{"rendered":"Power BI Last Refresh Time Visualization Tool"},"content":{"rendered":"<p>On the article Automating table refresh in Power BI I explained many methods to automate refresh of individual objects, which could be tables or partitions.<\/p>\n<p>This creates the need of good ways to visualize the last refresh date and time for each partition and table. The portal shows the refresh date\/time for the entire dataset, we can&#8217;t identify on the <strong>Power BI<\/strong> portal the exactly date for each table last refresh.<\/p>\n<p>The <strong>Tabular Editor<\/strong>, famous 3rd part tool to manage <strong>Power BI<\/strong> models, is very powerful. It implements a <strong>c#<\/strong> execution engine inside it, allowing us to create scripts, from small scripts to very powerful ones.<\/p>\n<p>One example is the <a href=\"https:\/\/www.elegantbi.com\/post\/processingmanager\">Processing Manager<\/a> published on Elegant BI blog. It creates a powerful <strong>C#<\/strong> program to generate refresh script for a set of objects in the model.<\/p>\n<p>Based on this example, I created a <strong>C#<\/strong> program to visualize the last refresh date\/time for each partition. It&#8217;s <a href=\"https:\/\/github.com\/DennesTorres\/RefreshView\">published on Github<\/a>, you can copy the <strong><em>LastRefresh.cs<\/em><\/strong> code and execute it on the Advanced Scripting window in the Tabular Editor.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-93576\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2022\/03\/RefreshDate01.png\" alt=\"\" width=\"512\" height=\"63\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>The result is like the image below. You will be able to see the last refresh date\/time for each partition. I hope this tool is useful if you are <a href=\"https:\/\/www.red-gate.com\/simple-talk\/databases\/sql-server\/bi-sql-server\/how-to-automate-table-level-refresh-in-power-bi\/\">customizing the refresh of the objects<\/a>. You are also invited to improve this tool.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-93577\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2022\/03\/RefreshDate02.png\" alt=\"\" width=\"672\" height=\"720\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Some future improvement possibilities:<\/p>\n<ul>\n<li>Join this tool with the Processing Manager, calling them from a single main form.<\/li>\n<li>Make these tools an independent application<\/li>\n<li>Improve the design of the form<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>On the article Automating table refresh in Power BI I explained many methods to automate refresh of individual objects, which could be tables or partitions. This creates the need of good ways to visualize the last refresh date and time for each partition and table. The portal shows the refresh date\/time for the entire dataset,&#8230;&hellip;<\/p>\n","protected":false},"author":50808,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2,159166],"tags":[145417,145827,101611,145825,145826],"coauthors":[6810],"class_list":["post-93575","post","type-post","status-publish","format-standard","hentry","category-blogs","category-powerbi","tag-csharp","tag-data-refresh","tag-power-bi","tag-tabular-editor","tag-tom"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/93575","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/users\/50808"}],"replies":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/comments?post=93575"}],"version-history":[{"count":3,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/93575\/revisions"}],"predecessor-version":[{"id":94025,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/93575\/revisions\/94025"}],"wp:attachment":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media?parent=93575"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/categories?post=93575"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/tags?post=93575"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/coauthors?post=93575"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}