You’re offline. This is a read only version of the page.
Contoso Limited
  • Home
  • Camp Sessions
    • Camp Sessions
    • Session 24: Bringing Power BI into the Dataverse through the Magic of Synapse
    • Session 23: Developing for Power BI using Azure Functions
    • Session 22: Custom Functions and Documentation in Power Query
    • Session 21: Report Authoring and Customization with Power BI Embedding
    • Session 20: Scaling Multi-tenant Solutions using Service Principal Profiles
    • Session 19: Managing Power BI using the Power BI Admin APIs
    • Session 18: Developer Deep Dive into Row Level Security (RLS)
    • Session 17: Building Solutions using Power Automate and the Power BI REST APIs
    • Session 16: Using the Power BI Export API to Generate PDF and Image Files
    • Session 15: ALM in Power BI with Deployment Pipelines
    • Session 14: Developing Power BI for Dataverse + PowerApps, and Dynamics 365
    • Session 13: Developing in Salesforce with Power BI Embedding
    • Session 12: Building Multi-language Reports in Power BI
    • Session 11: Developing with the App-Owns-Data Starter Kit
    • Session 10: Best Practices to Improve Power BI Performance and Design
    • Session 09: Advanced Dataset Programming with Power BI
    • Session 08: Intro to M Programming
    • Session 07: Developing with .NET 5 and App-Owns-Data Embedding
    • Session 06: Developing Custom Visuals for Power BI
    • Session 05: Embedding Power BI Reports using React.js
    • Session 04: Programing Datasets using the Tabular Object Model
    • Session 03: Deep Dive into the Power BI JavaScript API
    • Session 02: Writing PowerShell Scripts for Power BI
    • Session 01: Developing for Power BI with .NET Core
  • Articles
    • Articles
    • Programming Datasets with the Tabular Object Model (TOM)
  • Videos
  • Resources
  • About
  • Home
  • Camp Sessions

Camp Sessions

August 25, 2022
Modern React-JS Development with Power BI Embedding
The React-JS developer community is currently migrating from the classic React programming model with class-based components and lifecycle methods to the more modern approach using functional components and hooks. The month's Power BI bootcamp session provides a quick primer on modern React-JS development and demonstrates how to create an SPA application which calls the Power BI REST API and implements User-Owns-Data embedding. Along the way, campers will learn to use Material UI React components to build the user interface and will also learn to authenticate users with Azure AD using Microsoft-recommended libraries and best practices.
July 28, 2022
Bringing Power BI into the Dataverse through the Magic of Synapse
Most Dataverse implementations, whether they be Power Apps or Dynamics 365 CE on the front-end, contain amazingly valuable data for the end-users and for the organizations' leadership. Although Direct Query is one way to connect Power BI to Dataverse, enterprise deployments will benefit from using Synapse Link feature which is far more appropriate for larger data volumes. Learn the surprising options and best practices (and potential pitfalls) of connecting Power BI with Dataverse though Synapse Server.
June 30, 2022
Developing for Power BI using Azure Functions
This session explores the potential of developing Azure Functions for a Power BI environment to automate administrative tasks and the deployment of datasets and reports. Campers will get a quick primer on Azure Function essentials and then learn how to write and test Azure Functions that call the Power BI REST API. The session will step through the process retrieving authentication credentials from Azure Key Vault and calling the Power BI REST API as a service principal. This session will also demonstrate a solution that responds to CSV file uploads by automating the creation of a Power BI dataset and report on top of the data in the CSV file. The session also demonstrates developing scheduled functions which call Power BI Admin APIs and save the responses in a JSON format into Azure Blob Storage where they can be analyzed and reported on using Power BI Desktop.
May 26, 2022
Custom Functions and Documentation in Power Query
This Dev camp session will be led by Alex Power from the Power BI CAT team. Alex will teach you how to get started with creating custom functions to aid in the reusability of transformation patterns and how to add robust documentation to your Power Query queries. As this is a code first session, we’ll explore primitive and structured data types, implicit and explicit return values, the Power Query / M language VS Code extension and more. The information presented in this session will be applicable to all places where Power Query is found.
April 28, 2022
Report Authoring and Customization with Power BI Embedding
This Dev Camp session teaches developers how to leverage Power BI embedding features for report authoring and customization. Campers will learn how to create a self-service authoring experience using the Power BI report designer by embedding reports in edit mode. Campers will also learn how to program the Power BI JavaScript Authoring API to automate the process of adding pages and visuals to an existing report. Along the way, this session will also explore other report customization techniques such as using custom bookmarks, custom report layouts, and custom report themes.
March 31, 2022
Scaling Multi-tenant Solutions using Service Principal Profiles
The Power BI Service has introduced a new feature known as service principal profiles which adds a powerful new dimension for scaling multi-tenant applications which use App-Owns-Data embedding. The good news here is that developers no longer have to worry about the 1000 workspace limitation per service principal. Now it's possible to develop a multi-tenant application with a single service principal that can scale far above the previous 1000 workspace limit. This session will introduce the fundamental concepts and terminology associated with service principal profiles and demonstrate how to create and manage service principal profiles using the Power BI REST API and the Power BI .NET SDK. Campers will learn the benefits of designing a multi-tenant application which creates a new service principal profile for each new customer tenant.
February 22, 2022
Managing Power BI using the Power BI Admin APIs
This session examines using the Power BI Admin APIs to automate Power BI administrative tasks and to enforce governance in a Power BI environment. Ted will be joined by Power BI Senior Program Manager, Rick Xu, as they discuss common usage scenarios for the Power BI Admin APIs such as generating a tenant-wide inventory report of workspaces and the Power BI artifacts they contain. This session will demonstrate using the Admin APIs to answer essential governance questions about which users have access to specific reports or dashboards. Campers will also learn to detect when a report has become overshared or made accessible over the public Internet using the Publish to Web feature. The session also discusses when to use the GetGroupsAsAdmin API versus when to use the Scan Workspace API. Campers will learn about the asynchronous programming required to use the Scan Workspace API. Along the way campers will also learn how to call Admin API operations which return continuation tokens such as GetUserArtifactAccessAsAdmin and the GetActivityEvents API which can be used to extract usage data from the Power BI activity log.
January 27, 2022
Developer Deep Dive into Row Level Security (RLS)
This camp sessions explores how to implement custom security policies in Power BI reports by designing Power BI datasets using Row Level Security (RLS). The session will begin with a quick review of creating RLS roles in Power BI Desktop and writing DAX expressions for RLS rules. The session will demonstrate common design patterns in the Power BI community for static RLS and dynamic RLS. Along the way, campers will learn how to integrate RLS security features when developing with App-Owns-Data embedding by writing RLS rule expressions which inspect the UserName and CustomData properties passed by the developer in an embed token.
December 16, 2021
Using Power Automate and the Power BI REST API
This session teaches teaches campers how to build Power Platform solutions with flows and canvas apps that call the Power BI REST APIs. The session will start with a quick primer on creating a Power Platform custom connector and configuring authentication to call the Power BI REST API either as a user or as a service principal. Campers will learn the basics of calling the Power BI REST API to return data on workspaces, datasets, reports and dashboards. The session will demonstrate how to call the Power BI REST API from a canvas apps and how to automate common Power BI builder tasks such as importing PBIX files, refreshing datasets and exporting reports to PDF files. The session also explains what's required to call the Power BI Admin APIs in a flow to export events from the Power BI activity log and to scan workspaces to inventory the reports and datasets that exist within a Power BI tenant.
November 18, 2021
Using the Power BI Export API to Generate PDF and Image Files
This session teaches campers how to use the ExportReportToFile API to export reports from a Power BI workspace into commonly-used file formats including PDF, XLSX, CSV, XML, PPTX and PNG. The session explains how to write the code to export both Power BI reports and paginated reports and explains the differences in supported output formats. Campers will learn how to apply filters and bookmarks when exporting a Power BI reports into PDF files for distribution. The session also examines advanced exporting scenarios such as how to export a single visual by itself and how to leverage the ExportReportToFile API in an App-Owns-Data embedding scenario.
October 28, 2021
ALM in Power BI with Deployment Pipelines
This deep dive session teaches campers how to use deployment pipelines for managing the application lifecycle of datasets and reports and for enabling CI/CD in a Power BI environment. The session explains how deployment pipelines are configured to create dedicated workspaces for developing and testing Power BI artifacts including datasets, reports, dashboards and dataflows. The session will demonstrate how to deploy artifacts in a deployment pipeline from the Dev workspace to the Testing workspace and then to the Production workspace where updates are made available to all users. Along the way, campers will learn how to configure data source rules, to automate pipelines deployment using PowerShell and the Power BI REST API and to integrate deployment pipelines together with Azure DevOps pipelines.
September 30, 2021
Developing Power BI for Dataverse, PowerApps & Dynamics365
In this camp session, Scott Sewel of the Power BI CAT team will demonstrate the value that Power BI brings to the Power Platform, specifically working with Dataverse, PowerApps and Dynamics 365 CE. The session will examine the different options for connecting from Power BI to the Dataverse and discuss the strengths, features, and limitations of each of these options. The sessions will look at how to implement a report in Dataverse as a general Dashboard – or as a filtered report on a record for powerful contextual reporting.
August 26, 2021
Developing in Salesforce with Power BI Embedding
This camp session focuses on developing with Power BI embedding techniques in a Salesforce environment. The session will explain how to implement User-Owns-Data embedding in Salesforce using a Single Page Application (SPA) with client-side JavaScript code written to acquire access tokens from Azure AD and program against the Power BI JavaScript API. The session also covers the more challenging task of implementing App-Owns-Data embedding in a Salesforce requirement which involves creating an Apex class which runs in the Salesforce cloud and calls to the Power BI Service under the identity of a service principal. Campers will also learn how to develop Lighting Aura components and Lightning web components which surface embedded reports on pages in a Salesforce environment.
July 22, 2021
Building Multi-language Reports in Power BI
Power BI provides Internationalization and localization features which make it possible to build multi-language reports. For example, you can design a Power BI report that renders in English for some users while rendering in Spanish, French, German or Dutch for other users. While Power BI provides all the features required to design and implement multi-language reports, the path to success is tricky and not intuitive. The purpose of this Dev Camp session is to explain how to use the Power BI features for Internationalization and localization from the ground up and to provide the guidance for building reports that support multiple languages. If a company or organization has the requirement of building Power BI reports that support multiple languages, it's no longer necessary to clone and maintain a separate PBIX project file for each language. Instead, they can increase reuse and lower report maintenance by designing and implementing multi-language reports.
June 24, 2021
Developing with the App-Owns-Data Starter Kit
This session will introduce campers to the App-Owns-Data Starter Kit which is a sample solution for developers built using .NET 5 to provide guidance for organizations and ISVs who are using App-Owns-Data embedding with Power BI in a multi-tenant environment. Camper will learn how to write C# code to onboard new customer tenants by using the Power BI REST API to create Power BI workspaces, assign workspaces to capacities, import PBIX files, patch datasource credentials and start dataset refresh operations. The session will also explain how to implement a custom authorization scheme where different users can be assigned to customer tenants with only viewing permissions or with edit and create permissions. Along the way, campers will also learn how to implement a custom telemetry layer to log and monitor user actions such as viewing, editing creating and copying reports and to capture and monitor the performance of loading and rendering reports.
May 27, 2021
Best Practices to Improve Power BI Performance and Design
This session will be hosted by Michael Kovalsky from the Power BI Customer Advisory Team (PBICAT). In this session, Campers will also learn how to get started with the Tabular Editor to use advanced data modeling techniques not available when working with Power BI Desktop. Michael will introduce the Best Practice Analyzer and discuss how to use Best Practice Rules to scan the data model behind a Power BI dataset to find areas for improvement. Campers will learn how to use and customize Best Practice Rules to meet data modeling best practices in areas such as DAX expression syntax, error prevention, formatting, maintenance, naming conventions and, of course, performance.
April 29, 2021
Advanced Dataset Programming with Power BI
This session will explore advanced dataset programming techniques using both the Power BI Service API and the Tabular Object Model (TOM). The session explains how to use the Power BI Service API to import PBIX files, update dataset parameters, set datasource credentials and start refresh operations. Campers will also learn how to create and clone datasets in the Power BI Service as well as how to write the code to extend the data model for a dataset by adding tables, columns, measures, hierarchies and table relationships. This session will also cover the essential dataset management topics including how to automate setting datasource credentials and and running dataset refresh operations. Along the way, camper will learn when and how to run automated dataset operations using a service principal instead of a user identity.
March 25, 2021
Intro to M Programming
This camp session will provide a fast-paced primer for writing Power BI query logic using the M programming language. The goal of this session is to give campers a stronger foundation for working directly with M code in the Advanced Editor when design queries for datasets in Power BI Desktop as well as for dataflows in the browser. Campers will learn how to design efficient queries using query folding as well as how to clean text values using the Text.Select function. Campers will be introduced to writing queries using complex M datatypes including lists, records, tables, functions and user-defined types and optimizing query logic using query folding. The session will demonstrate real-world examples of using dataset parameters, performing calculations across rows during query execution and writing reusable function queries. The session will also discuss how to avoid using dynamic datasources and privacy levels that prevent your queries from being able to run in the Power BI Service.
February 25, 2021
Developing with .NET 5 and App-Owns-Data
This session focuses on developing custom web applications using .NET 5 and the Power BI APIs to implement the App-Owns-Data embedding model. Campers will learn how to authenticate service principals and users using the Microsoft authentication library named Microsoft.Identity.Web. The session will teach developers how to acquire embedding data and generate embed tokens as service principal using the Power BI Service API. The session also examines the client-side programming required to embed and interact with reports in the browser using the Power BI JavaScript API. Along the way, the session will also explore advanced development topics such as adding TypeScript support to a Visual Studio Code development project, programming with multi-resource embed tokens and using EffectiveIdentity to leverage row-level security (RLS) in in the App-Owns-Data embedding model.
January 28, 2021
Developing Custom Visuals for Power BI
In this camp session, campers will learn how to get started designing and implementing custom visuals for Power BI. The session examines the Power BI Visuals API that Microsoft created to assist in the development of custom visuals. Campers will learn how to define the capabilities and data mappings for a custom visual and how to program D3-style data binding using categorical data from a Power BI dataset. The session also demonstrates how to extend a visual with custom properties as well as how to take advantage of the powerful utility classes that are included along with the Power BI Visuals API. Along the way, campers will learn how to package a custom visual as a PBIVIZ file for distribution and how to add custom visuals to Power BI Desktop projects as well as how to publish custom visuals at organization scope.
December 17, 2020
Embedding Power BI Reports using React.js
This session will build upon the earlier Power BI Dev Camp session which examined embedding reports with the Power BI JavaScript API. In this session, campers will learn to develop single page applications (SPAs) to embed Power BI reports using the ever-popular React.js library. The session will explain how to set up a new React.js development project using Node.js, TypeScript, webpack and Visual Studio Code. The session will also demonstrate best practices in SPA development for authenticating users and acquiring access tokens using Microsoft's new authentication library named msal-browser. Campers will also learn how to design an SPA application using React components for routing, navigation and Power BI embedding.
November 19, 2020
Programming Datasets using TOM
In this camp session, DAX expert, Phil Seamark, will teach campers how to query and modify Power BI datasets using C#, Visual Studio Code and the extensions to the Analysis Management Object (AMO) client library known as the Tabular Object Model (TOM). The session will explain how to connect to a local data model running in Power BI Desktop as well as how to connect to data models in the Power BI Service through the XMLA endpoint. Campers will learn how to write and test C# programs in Visual Studio Code to automate some of the more tedious aspects of building Power BI data models as well as how to integrate these programs into Power BI Desktop with its support for external tools. The session will also demonstrate how to automate creating new datasets in the Power BI Service and adding tables, columns and measures.
October 29, 2020
Deep Dive into the Power BI JavaScript API
In this camp session, we'll take an in-depth look at the Power BI JavaScript API and examine advanced Power BI embedding techniques using both JavaScript and TypeScript. The session will begin by introducing campers to the Power BI Embedded Playground and demonstrating how to copy-and-paste code into their own development projects. Campers will learn how to move beyond embedding read-only reports to provide their users with the ability to customize existing reports and to create new reports on top of existing datasets. The session will demonstrate how to implement interactive capabilities with Power BI embedding including navigating between pages, setting filters and applying bookmarks. Along the way, campers will learn cutting-edge techniques such as using the Power BI JavaScript API to programmatically add visuals to reports and to dynamically rearrange a report layout.
September 24, 2020
Writing PowerShell Scripts for Power BI
In this camp session, we'll explore how to get started writing and testing PowerShell scripts to automate common administrative tasks in a Power BI environment. We'll begin by introducing the Power BI cmdlets library and discussing the various ways to authenticate both as a user and as a service principal. Campers will learn how to use PowerShell to automate common tasks such as uploading PBIX files, patching datasource credentials, updating dataset parameters and refreshing datasets. The session will also explore advanced scripting techniques using the Invoke-PowerBIRestMethod cmdlet which makes it possible to call Power BI Service API operations directly. Campers will learn how to parse together REST URLs for the Power BI Service API and to convert PowerShell objects into JSON to populate the body of an HTTP request. This, in turn, will allow campers to write PowerShell scripts that take full advantage of what the Power BI Service API has to offer.
August 27, 2020
Developing for Power BI with .NET Core
In this camp session we'll examine how to develop custom web applications for Power BI using .NET Core 3.1 and .NET 5. Campers will be introduced to Microsoft's newest authentication library named Microsoft.Identity.Web and will learn best practices for acquiring and caching access tokens in cloud-based development. The session will teach campers how to implement Power BI embedding with server-side programming using the Power BI Service API combined together with client-side programming using the Power BI JavaScript API. Along the way, campers will learn how to integrate Node.js and webpack support into a .NET Core web application project to achieve strongly-typed programming when writing client-side TypeScript code using the Power BI JavaScript API.