Power Query – Automation and Parameters: Difference between revisions

From Training Material
Jump to navigation Jump to search
No edit summary
Line 2: Line 2:


== Objective ==
== Objective ==
Use parameters to automate queries and build dynamic data loading processes.
Use parameters to automate queries and build dynamic, reusable data loading processes in Power Query.


== Files Used ==
== Files Used ==
Line 8: Line 8:


== Creating a Parameter ==
== Creating a Parameter ==
'''Goal:''' Create a user-defined value that can be reused throughout queries.
'''Steps:'''
'''Steps:'''
# In Power Query Editor → '''Home''' tab → '''Manage Parameters''' → '''New Parameter'''
# Open Power Query Editor
# Fill in:
# In the ribbon go to the '''Home''' tab → click '''Manage Parameters''' → select '''New Parameter'''
#* '''Name''': e.g. `TargetCurrency`
# In the New Parameter dialog:
#* '''Type''': Text
#* Name: `TargetCurrency`
#* '''Current Value''': e.g. `EUR`
#* Description: (optional)
#* Required: Checked
#* Type: '''Text'''
#* Suggested Values: Any value
#* Current Value: `EUR` (or any other currency from the dataset)
# Click '''OK'''
# Click '''OK'''


== Using a Parameter in Filtering ==
== Using a Parameter in Filtering ==
'''Goal:''' Filter a column dynamically using a parameter.
'''Steps:'''
'''Steps:'''
# Load '''ExchangeRates.xlsx''' into Power Query
# In Excel → go to the '''Data''' tab → click '''Get Data''' → '''From File''' → '''From Workbook'''
# Select the column '''Currency'''
# Select and load '''ExchangeRates.xlsx'''
# Go to '''Home''' tab → '''Keep Rows''' → '''Keep Rows Where...'''
# In the Navigator → select the worksheet → click '''Transform Data'''
# Set: ''Currency'' equals ''Parameter'' → choose `TargetCurrency`
# In Power Query Editor:
#* Select the column named `Currency`
#* Go to the '''Home''' tab → click '''Keep Rows''' → choose '''Keep Rows Where...'''
# In the dialog:
#* Select the column `Currency`
#* Condition: equals
#* Select the value type as: '''Parameter'''
#* Choose the parameter: `TargetCurrency`
# Click '''OK'''


== Using Parameters in M Code ==
== Using Parameters in M Code ==
You can reference parameters directly in formulas:
'''Goal:''' Apply parameter logic manually in the formula bar or Advanced Editor.


 
'''Steps:'''
= Table.SelectRows(Source, each [Currency] = TargetCurrency)
# Make sure the parameter `TargetCurrency` exists
# Click on the filtering step in the Applied Steps pane
# Go to the formula bar and ensure the logic looks like:
<syntaxhighlight lang="m">
= Table.SelectRows(Source, each [Currency] = TargetCurrency)
</syntaxhighlight>
This will dynamically filter based on the parameter value.


== Parameter for File Path ==
== Parameter for File Path ==
'''Scenario:''' Create a reusable query for loading Excel files.
'''Scenario:''' Allow the user to select the file path dynamically instead of hardcoding it.


'''Steps:'''
'''Steps:'''
# Create a parameter `FilePath` (Type: Text)
# In Power Query Editor → go to '''Home''' tab → click '''Manage Parameters''' → select '''New Parameter'''
# Go to '''Home''' tab → '''New Source''' → '''Excel Workbook'''
# In the New Parameter dialog:
# In file path dialog, paste the value from the parameter
#* Name: `FilePath`
# Or: go to Advanced Editor and replace path with `FilePath`
#* Type: Text
#* Current Value: Paste the full path to an Excel file (e.g. C:\\Data\\Sales_Q1.xlsx)
# Click '''OK'''
# Then, to load the file using this path:
# Go to '''Home''' tab → click '''New Source''' → choose '''Excel Workbook'''
# When prompted for the file path:
#* Instead of browsing, paste the value from the `FilePath` parameter directly
# OR: go to '''Advanced Editor''' and replace the hardcoded path:
<syntaxhighlight lang="m">
= Excel.Workbook(File.Contents(FilePath), null, true)
</syntaxhighlight>


== Automating Folder Imports ==
== Automating Folder Imports ==
'''Goal:''' Use folder-based queries to dynamically import and combine files.
'''Steps:'''
'''Steps:'''
# Go to '''Data''' tab → '''Get Data''' → '''From File''' → '''From Folder'''
# In Excel → go to the '''Data''' tab → click '''Get Data''' → '''From File''' → '''From Folder'''
# Select a folder (e.g. with sales data)
# In the folder selection dialog → paste or browse to a folder with multiple Excel/CSV files
# Click '''Transform Data'''
# Click '''OK''' and then '''Transform Data'''
# In Power Query Editor, click '''Combine''' → '''Combine & Transform Data'''
# In Power Query Editor → you’ll see a table with metadata for each file
# Use a parameter for folder path if needed
# Click the button in the '''Content''' column → select '''Combine''' → choose '''Combine & Transform Data'''
# Power Query creates a function and imports a sample file structure
 
'''Optional: Use parameter for folder path'''
# Create a parameter named `FolderPath` (type: Text)
# In the source step → click the gear icon on '''Source''' in the Applied Steps
# Replace the folder path with `FolderPath`
# OR go to Advanced Editor and replace:
<syntaxhighlight lang="m">
= Folder.Files(FolderPath)
</syntaxhighlight>


== Additional Exercise: Parameterized Currency Filter ==
== Additional Exercise: Parameterized Currency Filter ==
'''Goal:''' Build a flexible report that shows exchange rates for one currency.
'''Goal:''' Build a flexible report showing exchange rates for one selected currency.


'''Steps:'''
'''Steps:'''
# Load '''ExchangeRates.xlsx'''
# Load '''ExchangeRates.xlsx''' into Power Query
# Create a `TargetCurrency` parameter (e.g. "USD")
# Go to '''Home''' → '''Manage Parameters''' → '''New Parameter'''
# Use it to filter the rows
#* Name: `TargetCurrency`
# Load the result into a worksheet
#* Type: Text
#* Current Value: e.g. `USD`
# Apply a filter to the `Currency` column using this parameter:
#* Select `Currency` → '''Home''' → '''Keep Rows''' → '''Keep Rows Where...'''
#* Condition: equals parameter `TargetCurrency`
# Load the result:
#* Go to '''Home''' → '''Close & Load To...''' → select output destination (table, worksheet, etc.)


== Extension: Combine Parameters and Folder Query ==
== Extension: Combine Parameters and Folder Query ==
'''Goal:''' Allow the user to set a folder path dynamically.
'''Goal:''' Allow user to control which folder is imported dynamically.


'''Steps:'''
'''Steps:'''
# Create parameter `FolderPath`
# Create a parameter named `FolderPath` (type: Text)
# Use it in '''From Folder''' source
# Set its value to the full folder location where your files are stored
# Refresh the query after changing parameter value
# In Power Query:
# Load combined data to Excel sheet
#* Go to '''Data''' tab → '''Get Data''' → '''From File''' → '''From Folder'''
#* In the folder path dialog → paste the value from `FolderPath`
# OR in Advanced Editor, replace the path with:
<syntaxhighlight lang="m">
= Folder.Files(FolderPath)
</syntaxhighlight>
# Power Query will combine the files
# Load the final result to Excel via '''Close & Load'''


----
----

Revision as of 10:43, 22 June 2025

Module 4: Automation and Parameters

Objective

Use parameters to automate queries and build dynamic, reusable data loading processes in Power Query.

Files Used

Creating a Parameter

Goal: Create a user-defined value that can be reused throughout queries.

Steps:

  1. Open Power Query Editor
  2. In the ribbon → go to the Home tab → click Manage Parameters → select New Parameter
  3. In the New Parameter dialog:
    • Name: `TargetCurrency`
    • Description: (optional)
    • Required: Checked
    • Type: Text
    • Suggested Values: Any value
    • Current Value: `EUR` (or any other currency from the dataset)
  4. Click OK

Using a Parameter in Filtering

Goal: Filter a column dynamically using a parameter.

Steps:

  1. In Excel → go to the Data tab → click Get DataFrom FileFrom Workbook
  2. Select and load ExchangeRates.xlsx
  3. In the Navigator → select the worksheet → click Transform Data
  4. In Power Query Editor:
    • Select the column named `Currency`
    • Go to the Home tab → click Keep Rows → choose Keep Rows Where...
  5. In the dialog:
    • Select the column `Currency`
    • Condition: equals
    • Select the value type as: Parameter
    • Choose the parameter: `TargetCurrency`
  6. Click OK

Using Parameters in M Code

Goal: Apply parameter logic manually in the formula bar or Advanced Editor.

Steps:

  1. Make sure the parameter `TargetCurrency` exists
  2. Click on the filtering step in the Applied Steps pane
  3. Go to the formula bar and ensure the logic looks like:
= Table.SelectRows(Source, each [Currency] = TargetCurrency)

This will dynamically filter based on the parameter value.

Parameter for File Path

Scenario: Allow the user to select the file path dynamically instead of hardcoding it.

Steps:

  1. In Power Query Editor → go to Home tab → click Manage Parameters → select New Parameter
  2. In the New Parameter dialog:
    • Name: `FilePath`
    • Type: Text
    • Current Value: Paste the full path to an Excel file (e.g. C:\\Data\\Sales_Q1.xlsx)
  3. Click OK
  4. Then, to load the file using this path:
  5. Go to Home tab → click New Source → choose Excel Workbook
  6. When prompted for the file path:
    • Instead of browsing, paste the value from the `FilePath` parameter directly
  7. OR: go to Advanced Editor and replace the hardcoded path:
= Excel.Workbook(File.Contents(FilePath), null, true)

Automating Folder Imports

Goal: Use folder-based queries to dynamically import and combine files.

Steps:

  1. In Excel → go to the Data tab → click Get DataFrom FileFrom Folder
  2. In the folder selection dialog → paste or browse to a folder with multiple Excel/CSV files
  3. Click OK and then Transform Data
  4. In Power Query Editor → you’ll see a table with metadata for each file
  5. Click the button in the Content column → select Combine → choose Combine & Transform Data
  6. Power Query creates a function and imports a sample file structure

Optional: Use parameter for folder path

  1. Create a parameter named `FolderPath` (type: Text)
  2. In the source step → click the gear icon on Source in the Applied Steps
  3. Replace the folder path with `FolderPath`
  4. OR go to Advanced Editor and replace:
= Folder.Files(FolderPath)

Additional Exercise: Parameterized Currency Filter

Goal: Build a flexible report showing exchange rates for one selected currency.

Steps:

  1. Load ExchangeRates.xlsx into Power Query
  2. Go to HomeManage ParametersNew Parameter
    • Name: `TargetCurrency`
    • Type: Text
    • Current Value: e.g. `USD`
  3. Apply a filter to the `Currency` column using this parameter:
    • Select `Currency` → HomeKeep RowsKeep Rows Where...
    • Condition: equals parameter `TargetCurrency`
  4. Load the result:
    • Go to HomeClose & Load To... → select output destination (table, worksheet, etc.)

Extension: Combine Parameters and Folder Query

Goal: Allow user to control which folder is imported dynamically.

Steps:

  1. Create a parameter named `FolderPath` (type: Text)
  2. Set its value to the full folder location where your files are stored
  3. In Power Query:
    • Go to Data tab → Get DataFrom FileFrom Folder
    • In the folder path dialog → paste the value from `FolderPath`
  4. OR in Advanced Editor, replace the path with:
= Folder.Files(FolderPath)
  1. Power Query will combine the files
  2. Load the final result to Excel via Close & Load

→ Continue to Module 5: Power Pivot Overview

Return to Main Page