Forum Discussion
Query Folding - disable?
- 6 years ago
Hi Anonymous ,
After researching and testing,I am afraid that you could not turn off query folding currently.
However, you could vote for this idea which is similar to yours. Maybe it will be a feature of Power BI in the future.
It is possible to turn 'Folding' off!
Go to 'Edit Queries' and in 'APPLIED STEPS' click on 'Source'.
Then click in the command line (starts with 'Value.NativeQuery(' etc. and scroll to the end of the statement.
You'll see: '[EnableFolding=true]', change it to false.
That's it. Succes!
Anonymous - I have written custom queries and native query is not available for all of my tables. I can remove the section on query folding using the advanced editor, but it reappears with every minor change I make to my query. I can change it to false in the advanced editor, but this does not seem to apply to Power BI Service when I upload the workbook.
There are workarounds to this issue, but they are very annoying.
- ryan05856 years agoAdvocate II
Anonymous yes that is a workaround, however, it assumes you were able to load data up into Power Query in the first place.
If you're loading data via the PostgreSQL connector for the first time, you're given 3 options in the error that comes up:
- Retry: Just resubmits the query again, after which you get the same errors and options
- Edit: Takes you back to the screen to edit the custom query, no option to remove query folding there
- Cancel: Give up on trying to bring in data altogether (obviously not what anyone here wants)
One option would be to hand-write a native query, and by golly that's just too much work. At my organization, we're using ODBC connectors for PostgreSQL instead. No issues to speak of using that method as of the time I'm writing this.
The PostgreSQL driver for ODBC can be found at the bottom of the page linked here, and it's pretty easy to set up:
https://www.postgresql.org/ftp/odbc/versions/msi/
When you do set it up on your local machine (Start > type "ODBC", click "ODBC Data Sources"), make sure you add the ODBC driver to the "System DSN" tab. And if you use a VM as a gateway, make sure you set it up on your local machine (for Power BI desktop) and the VM (for scheduled refreshes) exactly the same (notably, with the same "Data Source Name").
- Alex_Ooi6 years agoHelper IV
I have issues with the ODBC and at this time, I got tired of trying. Rather, I was lucky to understand the syntax of Value.NativeQuery(). Below is my approach, along with the syntactic explanation.
1. Open Blank Query
2. Go to Advanced Editor
3. Edit the Source = "" to the following below.
Source = Value.NativeQuery(
// target as any - we will choose PostgreSQL
PostgreSQL.Database("insert_host", "insert_dB_name"),
// query as text - basically just change double quotes into two double quotes, and add #(lf) after every line
"
SELECT
#(lf)""Field_1"",
#(lf)""Field_2""
#(lf)FROM ""Table_1""
"
// optional parameters as any - null is the default optional, I will leave this here
, null
// optional options as nullable record - [EnableFolding=true] is default which you can delete the whole thing
// , [EnableFolding=true] - safe to delete
)
I used Excel to concatenate my query into something readable in M.
- ryan05856 years agoAdvocate II
Alex_Ooi yep, that's about the only other way to do it if ODBC isn't working for you. Definitely tedious to create the M code by hand, even though the Value.NativeQuery() function isn't all that complicated.
The kicker, as you've shown in your sample SQL, is replacing carriage returns (i.e. new lines) with the #(lf) syntax, and double quotes with two sets of double quotes (since the Value.NativeQuery() itself uses double quotes).
For my queries, that's a pain in the butt, but alas, if there's no other way...
- Anonymous6 years agoNot applicable
My workaround is this:
I am able to load a simple query such as "select * from primary_table limit 1". Or, I can connect directly to a table or view in our back end. As long as I don't write a custom query, I am able to load a table. Once the table is loaded, I can manipulate it however I want. Not ideal, but this works for now.