Information below is no longer accurate. Please check updated article

On May, 2017 Microsoft released SDK for creating custom Data Connectors for Power BI. Given this opportunity we are releasing TeamDesk Data Connector (Beta) for Power BI.

Currently Microsoft supports custom connectors on desktop version only, but they plan to extend this technology to Power BI online and, eventually to all their products supporting PowerQuery (M) language, such as Excel and SQL 2017 and distribute connectors via Office Store, so the tech looks promising.

Try it now!

If you want to try it now, you’ll need to follow this steps:

  1. Install Microsoft Power BI Desktop;
  2. Create a [My Documents]\Microsoft Power BI Desktop\Custom Connectors directory;
  3. Download TeamDesk Data Connector into the directory. If browser tries to change file extension to .zip, rename it back to TeamDesk.PowerBI.DataConnector.mez;
  4. Enable Custom data connectors feature under File > Options and Settings > Options > Preview features in Power BI Desktop;
  5. Restart Power BI Desktop.

Upon using Get Data, you’ll find TeamDesk connector in Online Services category.

Select TeamDesk Data Connector for Power BI

Click on the connector, confirm you are using beta tech and you’ll be prompted to enter your database URL. Simplest way is to copy any database URL from browser window.

Type or paste your database URL

Next, enter your TeamDesk email and password:

Enter TeamDesk credentials

Next, connector will prompt you to choose the table and the view to get the data from. On the screenshot is the data from Invoicing sample database.

Select the table and the view

Finally, click Load button to get the data to Power BI:

The data is in Power BI

Then transform and visualize the way you want:

Visualize the data using charts

If you prefer programmability, there are two functions available at your disposal:

TeamDesk.SelectView(url, table, view) – given database URL, the name of the table and the name of view retrieves the content.

=TeamDesk.SelectView("", "Invoice", "List All")

produces result identical to the sample above. Or, there is even-more low-level function:

TeamDesk.Select(url, table, columns, filter, sort) – allows you to specify the data you need, precisely:

=TeamDesk.Select("", "Invoice", {"Name", "Total"}, "[Company]='ABC, Inc.'", "Due Date//DESC")

selects customer names and totals from invoices for ABC, Inc. company,  and sorts by recent due date on top.