The M Code Behind the Power Query M function PostgreSQL.Database

Introduction to PostgreSQL.Database

PostgreSQL is a popular open-source relational database management system that is widely used by developers and businesses around the world. With PostgreSQL.Database, you can connect to a PostgreSQL database and extract data into Power Query for further analysis and transformation. The function takes four arguments:

– server: the name or IP address of the PostgreSQL server

– database: the name of the database you want to connect to

– options: a list of optional parameters such as user name, password, and SSL configuration

– query: an optional SQL query to filter and extract data from the database

Understanding the M Code Behind PostgreSQL.Database

When you use PostgreSQL.Database in Power Query, the function generates M code that connects to the PostgreSQL database and retrieves data. Here is an example of the M code generated by the function:


Source = PostgreSQL.Database(“localhost”, “database_name”, [CreateNavigationProperties=true]),

schema = Source{[Schema=”public”,Item=”table_name”]}[Data],



Let's break down this code into its components:

- The first line sets the variable "Source" to the result of the PostgreSQL.Database function. The function takes three arguments: the server name or IP address, the database name, and a list of optional parameters.

- The second line sets the variable "schema" to the data retrieved by the "Source" variable. In this example, we're extracting all the data from a table named "table_name" in the "public" schema of the database.

- The third line returns the "schema" variable, which contains the data retrieved from the database.

You can modify this code to suit your needs. For example, you can add a SQL query to the PostgreSQL.Database function to filter the data you want to extract from the database. Here's an example:


Source = PostgreSQL.Database(“localhost”, “database_name”, [Query=”SELECT FROM table_name WHERE column_name = ‘value'”]),

schema = Source{[Schema=”public”,Item=”table_name”]}[Data],



In this example, we're adding a SQL query to the PostgreSQL.Database function to extract only the data where the value of a column named "column_name" is equal to "value".

Best Practices for Using PostgreSQL.Database

When using PostgreSQL.Database in Power Query, there are a few best practices you should follow to ensure that your queries are efficient and accurate:

- Use parameterized queries to avoid SQL injection attacks and improve performance.

- Limit the number of columns and rows returned by your queries to avoid overwhelming the Power Query engine.

- Use the "Navigation Properties" option to create a relationship between tables in your PostgreSQL database and other data sources in Power Query.

PostgreSQL.Database is a powerful function in Power Query that enables you to extract data from a PostgreSQL database and transform it for further analysis. By understanding the M code behind this function and following best practices, you can optimize your queries and get the most out of your PostgreSQL database.

Power Query and M Training Courses by G Com Solutions (0800 998 9248)

Upcoming Courses

10-12 Jul 23 (London or Online)
25-27 Sep 23 (London or Online)
20-22 Nov 23 (London or Online)

Contact Us


    Your Name (required)


    Email (required)


    Training Course(s)

    Your Message

    Upload Example Document(s) (Zip multiple files)