Introducing “R DataTable” Custom Visual for Power BI

Back in July 2017, I experimented with interactive R HTML custom visuals in Power BI and created a simple table visual that I called R DataTable. I had originally submitted it to AppSource in October. After a few rounds of suggested changes over about four months, it is now live! That sounds like a lot of time, but most of the delay was me taking long breaks from it. Also, many thanks to Boris Efraty from Microsoft for reviewing a high CPU issue with interactive R visuals. He also fixed a package dependency and ultimately helped to get this published. In case you did not know, Boris has developed many of the existing Power BI R HTML visuals that you can find on AppSource.

R DataTable Custom Visual in AppSource by DataVeld


What is R DataTable, and what can it do? The short video below (no audio) provides a quick look at three of R DataTable’s key uses: column-specific filters, changing the number of records that display per page, and global search across all fields.


  • Search
    • Global search field to filter data across all columns
  • Pagination
    • Use “Show # of entries” to choose between 5, 10, 25, 50, 100, or 1000 records to display per page
  • Column-level filters
    • Conveniently filter column values using the option below each column header


In my opinion, it is much easier to create a Power BI R custom visual than a standard TypeScript custom visual. This is particularly true if you limit or omit Format options. The best part of this visual is that it is only about a dozen lines of R code. R has a package called DT, which wraps JavaScript’s DataTables library. R already has a package called data.table, which is not at all related. In hindsight, I should have picked a different name for this Power BI visual to avoid confusion. R DataTable for Power BI uses JavaScript’s DataTables library via R’s DT package.

Please log any issues in the GitHub repository here:



Leave a Reply

Your email address will not be published. Required fields are marked *