Home Business Intelligence Fast Suggestions: Renaming All Tables’ Columns in One Go in Energy Question

Fast Suggestions: Renaming All Tables’ Columns in One Go in Energy Question

0
Fast Suggestions: Renaming All Tables’ Columns in One Go in Energy Question

[ad_1]

Renaming All Tables' Columns in One Go in Power Query

I beforehand wrote a weblog put up explaining the way to rename all columns in a desk in a single go along with Energy Question. One in all my guests raised a query within the feedback concerning the risk to rename all columns from all tables in a single go. Curiously sufficient, one among my clients had an identical requirement. So I believed it’s good to put in writing a Fast Tip explaining the way to meet the requirement.

The Drawback

You might be connecting to the information sources from Energy BI Desktop (or Excel or Knowledge Flows). The columns of the supply tables usually are not person pleasant, so that you require to rename all columns. You already know the way to rename all columns of a desk in a single go however you’d like to use the renaming columns patterns to all tables.

The Resolution

The answer is kind of easy. We require to hook up with the supply, however we don’t navigate to any tables immediately. In my case, my supply desk is an on-premises SQL Server. So I hook up with the SQL Server occasion utilizing the Sql.Database(Server, DB) perform in Energy Question the place the Server and the DB are question parameters. Learn extra about question parameters right here. The outcomes would love the next picture:

The Results of Sql.Database() Function in Power Query
The outcomes of working the Sql.Database(Server, DB) perform

As you see within the above picture, the outcomes embrace Tables, Views and Features. We’re not all in favour of Features due to this fact we simply filter them out. The next picture exhibits the outcomes after making use of the filter:

Filtering out SQL Server Functions After Connecting from Power Query
Filtering out SQL Server Features

If we glance nearer to the Knowledge column, we see that the column is certainly a Structured Column. The structured values of the Knowledge column are Desk values. If we click on on a cell (not on the Desk worth of the cell), we are able to see the precise underlying knowledge, as proven within the following picture:

The Contents of a Table Value in Power Query
The Contents of a Desk Worth in Energy Question

Because the above picture illustrates, the chosen cell accommodates the precise knowledge of the DimProduct desk from the supply. What we’re after is to rename all columns from all tables. So we are able to use the Desk.TransformColumnNames(desk as desk, NameGenerator as perform) perform to rename all tables’ columns. We have to move the values of the Knowledge column to the desk operand of the Desk.TransformColumnNames() perform. The second operand of the Desk.TransformColumnNames() perform requires a perform to generate the names. In my instance, the column names are CamelCased. So the NameGenerator perform should rework a column identify like EnglishProductName to English Product Identify. As you see, I want to separate the column identify when the characters transit from decrease case to higher case. I can obtain this by utilizing the Splitter.SplitTextByCharacterTransition(earlier than as anynonnull, after as anynonnull) perform. So the expression to separate the column names primarily based on their character transition from decrease case to higher case seems to be like beneath:

Splitter.SplitTextByCharacterTransition({"a".."z"}, {"A".."Z"})

As per the documentation , the Splitter.SplitTextByCharacterTransition() perform returns a perform that splits a textual content into a listing of textual content. So the next expression is respectable:

Splitter.SplitTextByCharacterTransition({"a".."z"}, {"A".."Z"})("EnglishProductName")

The next picture exhibits the outcomes of the above expression:

Results of Running Splitter.SplitTextByCharacterTransition Function with Text Input in Power Query
Outcomes of Working the Splitter.SplitTextByCharacterTransition() Operate with Textual content Enter

However what I want just isn’t a listing, I want a textual content that mixes the values of the listing separated by an area character. Such a textual content can be utilized for the column names. So I exploit the Textual content.Mix(texts as listing, non-compulsory separator as nullable textual content) perform to get the specified end result. So my expression seems to be like beneath:

Textual content.Mix(
            Splitter.SplitTextByCharacterTransition({"a".."z"}, {"A".."Z"})("EnglishProductName")
            , " "
            )

Right here is the results of the above expression:

Using Text.Combine() function in Power Query
Utilizing Textual content.Mix() Operate

So, we are able to now use the latter expression because the NameGenerator operand of the Desk.TransformColumnNames() perform with a minor modification; quite than a relentless textual content we have to move the column names to the Desk.TransformColumnNames() perform. The ultimate expression seems to be like this:

Desk.TransformColumnNames(
                    [Data]
                    , (OldColumnNames) => 
                    Textual content.Mix(Splitter.SplitTextByCharacterTransition({"a".."z"}, {"A".."Z"})(OldColumnNames)
                    , " ")
                    )

Now we are able to add a Customized Column with the previous expression as proven within the picture beneath:

Adding a Custom Column Containing Tables with Renamed Columns in Power Query
Including a Customized Column Containing Tables with Renamed Columns

The next picture exhibits the contents of the DimProduct desk with renamed columns:

The Contents of Table Values with Renamed Columns in Power Query
The Contents of Desk Values with Renamed Columns

The final piece of the puzzle is to navigate by the tables. It is rather easy, good click on on a cell from the Columns Renamed column and click on Add as a New Question from the context menu as proven within the following picture:

Navigating Through Table Values in Power Query
Navigating By means of Desk Values

And… right here is the end result:

Table Value Expanded as a New Query in Power Query
The Desk Worth Expanded as a New Question

Does it Fold?

That is certainly a basic query that you could all the time ask when coping with the information sources that assist Question Folding. And… the short reply to that query is, sure it does. The next picture exhibits the native question handed to the back-end knowledge supply by right-clicking the final step and clicking View Native Question:

View Native Query for Query Folding in Power Query Power BI
Native Question Handed to SQL Server

If you’re not conversant in the time period “Question Folding”, I encourage you to be taught extra about it. Listed here are some good assets:

Conclusion

As you see, we are able to use this method to rename all tables’ columns in a single base question. We must always disable the question’s knowledge load as we don’t have to load it into the information mannequin. However take into accout, we nonetheless have to increase each single desk as a brand new question by right-clicking on every cell of the Columns Renamed column and choosing Add as a New Question from the context menu. The opposite level to notice is that everybody’s circumstances will be totally different. In my case the column names are in CamelCase, this may be very totally different in your case. So I don’t declare that we totally automated the entire strategy of renaming tables’ columns and navigating the tables. The desk navigation half remains to be a bit laborious, however this method can save a number of improvement time.

As all the time, if in case you have a greater concept I admire it when you can share it with us within the feedback part beneath.

[ad_2]

LEAVE A REPLY

Please enter your comment!
Please enter your name here