Power BI is turning 10! Tune in for a special live episode on July 24 with behind-the-scenes stories, product evolution highlights, and a sneak peek at what’s in store for the future.
Save the dateEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
Hi All,
I am trying to use the REST API to post a dataflow JSON to a specified workspace on powerbi online using authorization token and workspace ID. Below is the code I am trying to use, however I am getting an ImportSizeErrorCode with exceptionCulprit: 1. Does anyone have advice on accomplishing this? it works in python however I need it to be in Powershell.
function Read-JsonFromFile {
param (
[Parameter(Mandatory = $true, Position = 0)]
[string]$FilePath
)
# Read the file contents
$fileContent = Get-Content -Path $FilePath -Raw
# Convert the file content to JSON
try {
$jsonObject = $fileContent | ConvertFrom-Json -AsHashtable
return $jsonObject
}
catch {
Write-Error "Failed to parse JSON from file: $FilePath"
return $null
}
}
$jsonFile = Read-JsonFromFile -FilePath "DNAV-GLOBAL-DEMO-FUND-AccountBalance.json"
Write-Output $jsonObject
function Remove-Partitions {
param (
[Parameter(Mandatory = $true)]
[System.Collections.Hashtable]$JsonFile
)
for ($i = 0; $i -lt $JsonFile["entities"].Count; $i++) {
if ($JsonFile["entities"][$i].ContainsKey("partitions")) {
$JsonFile["entities"][$i].Remove("partitions")
}
else {
Write-Host "Key not found in JSON data."
}
}
Write-Host "Partitions Removed"
return $JsonFile
}
$jsonFile = Remove-Partitions -JsonFile $jsonFile
function to-powerbi {
param (
[Parameter(Mandatory=$true)]
[string]$json_file,
[Parameter(Mandatory=$true)]
[string]$file_name,
[Parameter(Mandatory=$true)]
[string]$access_token,
[Parameter(Mandatory=$true)]
[string]$group_id
)
# Prepare the multipart/form-data request body
$json_string = ConvertTo-Json $json_file -Depth 5
$multipart_data = @{
"model.json" = @{
"filename" = (Split-Path -Leaf $file_name)
"content" = $json_string
"content-type" = "application/json"
}
}
# Set the headers
$headers = @{
"Authorization" = "Bearer $access_token"
"Content-Type" = "multipart/form-data"
}
# Set export URL
$export_url = "https://api.powerbi.com/v1.0/myorg/groups/$group_id/imports?datasetDisplayName=$file_name"
$response = Invoke-RestMethod -Uri $export_url -Method Post -Headers $headers -Body $multipart_data
# Check response
if ($response.StatusCode -eq 202) {
Write-Host "Dataflow import successful"
Write-Host "Dataflow posted to PowerBI as $file_name"
} else {
Write-Host "Error: $($response | Select-Object StatusCode) $($response | ConvertTo-Json -Depth 10)"
}
}
to-powerbi -json_file $jsonFile -file_name $file_name -access_token $AuthToken -group_id $workspace_id
Solved! Go to Solution.
I ended up finding the solution, it is to use the built in powershell multipart encoding capabilities under System.Net.Http.HttpClient
I ended up finding the solution, it is to use the built in powershell multipart encoding capabilities under System.Net.Http.HttpClient
User | Count |
---|---|
5 | |
4 | |
3 | |
2 | |
2 |
User | Count |
---|---|
8 | |
7 | |
4 | |
4 | |
4 |