Forum Discussion

hendustu's avatar
hendustu
Advocate I
11 years ago
Solved

Can PowerQuery write data back out?

So I know that PowerQuery is great for consuming and transforming data, but are there any export options? If not, what's the least klugey way to get data out of a BI model and into SQL tables, or a CSV?

 

  • Consider making a feature request on the "Give Feedback" site.

15 Replies

  • You can also add an R script step in the query editor that writes the data set to a csv.

     

    Here is the code.

     

    Transform and load your data with Power BI, M and R | Anthony Bulk | Pulse | LinkedIn

    # 'dataset' holds the input data for this script
    # set the working directory to the location in which you want the transformed CSV saved 
    setwd("C:/temp")
    # write out the transformed data set 
    write.table(dataset, file="transformed_data.csv", sep = ",", row.names = FALSE)
    # put the data set into a data frame so that you can continue to work with it. 
    # I did an extra transformation and then built a report off of it
    df1 <- data.frame(dataset)
    • ozmike's avatar
      ozmike
      Resolver I

      Hi

       

      Using R to export data out does seem to work.

       

      But here is a step by step approach for those who are not familiar with R (myself).

       

      1) Down load and install R ( probably need admin rights). 

       

      To install a MIcrosoft owned version of R click here download 

      Download the windows version ( will only work with 64 bit power bi).

       

      Alternative, info on getting R

      In power bi set up R, FIle -> options and settings -> options -> R scripting

      Click on the How to install R link

       

      2) In power bi set up R, choose menu in power bi FIle -> options and settings -> options -> R scripting

      set your home R directory to eg. depending on your version browse to 

      C:\Program Files\Microsoft\R Open\R-3.4.3

       also as shown here 

       

      3) Select a table you want to write to file in the query editor.

      4) Select all column change to text ( optional step). to prevent type conversion errors.

      5) Transform -> Run R Script ( if this is greyed out) step 2 failed.

      6) Paste in this code.  As supplied by jbulk

       

       

      # 'dataset' holds the input data for this script
      # set the working directory to the location in which you want the transformed CSV saved 
      setwd("C:/temp")
      # write out the transformed data set 
      write.table(dataset, file="transformed_data.csv", sep = ",", row.names = FALSE)

       

       

      7) press Ok, try for a small table . There is 1800000 millisec timeout 30 minutes.

       I was able to export a table of 2 million rows to CSV.

      8) 

      Check row counts. Open exported file in power bi, , Transform -> count row in query editor with your original table.

       

    • Gozde's avatar
      Gozde
      Helper I

      Hi Antony,

       

      Thanks for R script, it helped me a lot.

       

      Is there a way to add current date to these script?

       

      So, when I refresh, it will automatically save the date with the day in the title like "transformed_data-06/09/2017.csv".

       

      Regards,

      Gozde

      • ImkeF's avatar
        ImkeF
        Community Champion

        I would simply add it to the dataset itself: Add a custom column with: DateTime.LocalNow()

  • mim's avatar
    mim
    Advocate V

    another option that does not require any third party is to use powershell, i tried the vba approach and it does not work with large data, R works very well, but in some environement it may not be available

     

    the script is here

     

     

    • ImkeF's avatar
      ImkeF
      Community Champion

      This is brilliant mim !!!

      Re size-limitations: Change the export-format to txt (instead of csv) and these size-limits are gone :-)

      Thx a ton!

  • Greg_Deckler's avatar
    Greg_Deckler
    Community Champion

    No.

     

    Easiest/quickest way is to go into your PowerPivot model, select the table, Ctrl-A, Ctrl-C. Open new Excel file, Ctrl-V, save as CSV

    • hendustu's avatar
      hendustu
      Advocate I

      Yeah, it's just that we're often dealing with very, very large datasets.

       

      There's no way to pull a data model into access is there? I'd say that we could take our workbook and pull it into Tabular Services, but I don't think on-prem SQL Server can refersh Power Query. 

    • Moh_ali_square's avatar
      Moh_ali_square
      Advocate II

      Hi,

      now you can right click on the table, Select copy table, and then you can past directly in Excel spreadsheet. 

       

      Regards, 

      Mohamed. 

  • curth's avatar
    curth
    Power BI Team

    Consider making a feature request on the "Give Feedback" site.