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
- Twitter Hashtag: #pbitools
User Notes
Developer Notes
Build System
- All build targets are implemented using FAKE.
- Dependencies are managed using Paket.
- Main entry point for all build tasks is
.\build.cmd
. - The fake-cli tool is installed as a local .NET Core Tool, see .config\dotnet-tools.json. That's why a .Net Core 3.x SDK is required to build the project. The
build.cmd
script handles the tool installation.
Prerequisites
- Visual Studio 2019 or later (for MSBuild dependencies)
- .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