Skip to content

pbi-tools/pbi-tools

Repository files navigation

pbi-tools

pbi-tools is a command-line tool bringing source-control features to Power BI. It works alongside Power BI Desktop and enables mature enterprise workflows for Power BI projects.

An example project is available here: https://github.com/pbi-tools/adventureworksdw2020-pbix

GitHub release (latest by date) Twitter Follow Join the chat at https://gitter.im/pbi-tools/general

User Notes

Developer Notes

Build System

Prerequisites

  • Visual Studio 2022 17.2 or later (for MSBuild dependencies), incl C# 11 Preview
  • .Net 4.7.2 Targeting Pack
  • .Net 6.0 SDK
  • Power BI Desktop x64 (Must be installed in default location for local development: C:\Program Files\Microsoft Power BI Desktop\)

List Build Targets

dotnet fake build --list

Versioning

The project strictly adheres to SemVer v2 for release versioning. The build system uses the first entry in RELEASE_NOTES.md to inject version numbers into build artifacts.

Diagnostics

  • Log output can be controlled using the environment variable PBITOOLS_LogLevel.
  • Allowed values are:
    • Verbose
    • Debug
    • Information
    • Warning
    • Error
    • Fatal
  • The default is Information, which is also effective when an unknown/invalid option has been specified.

Build

.\build.cmd Build

Run Tests

.\build.cmd Test

Run All Targets (Build, Publish, Test, UsageDocs, Pack)

.\build.cmd Pack

Run only the specified build target

.\build.cmd UsageDocs -s
dotnet fake build -s -t SmokeTest

Install Dependencies

dotnet paket install

That is generally not needed as the build.cmd script takes care of fetching dependencies. However, it could be useful to run this manually on a fresh clone or after making changes in the paket.dependencies file.

Update Specific Dependency to latest version (ex: AMO)

dotnet paket update Microsoft.AnalysisServices.retail.amd64
dotnet paket update Microsoft.AnalysisServices.AdomdClient.retail.amd64

Updating All Dependencies (NuGet)

dotnet paket update
dotnet paket update -g Fake-Build

Find outdated dependencies

dotnet paket outdated -g Main

Invoke Build script directly

dotnet fake {...}
dotnet fake -t Build
dotnet fake --version

Extract embedded sample PBIX with local build version and using default settings

.\pbi-tools.local.cmd extract '.\data\Samples\Adventure Works DW 2020.pbix'

Extract embedded sample PBIX with local build version and 'Raw' serialization mode, into custom output folder

.\pbi-tools.local.cmd extract '.\data\Samples\Adventure Works DW 2020.pbix' -extractFolder '.\data\Samples\Adventure Works DW 2020 - Raw' -modelSerialization Raw

Enable Debug logging (PowerShell)

$env:PBITOOLS_LogLevel = "Debug"

Fast local build (no clean)

.\build.cmd Publish -s
.\build.cmd Pack -s

Git Submodules

Clone with submodules

git clone --recurse-submodules https://github.com/pbi-tools/pbi-tools.git

Pulling in Upstream Changes

git submodule update --remote

Clone specific single branch into named folder, with submodules

git clone -b Release/1.0.0-beta.9 --single-branch --recurse-submodules https://github.com/pbi-tools/pbi-tools.git ./1.0.0-beta.9