Forum Discussion

poweruser1's avatar
poweruser1
Frequent Visitor
3 years ago
Solved

Create partition via powershell error

I am trying to write a Powershell script to create a partition in a Power BI dataset. Anyone know how to resolve this error? I am receiving the following error:

My Powershell Code:

$m_code = "let
Source = Sql.Database(`"source`", `"db`", [Query=`"sel column form table`", CommandTimeout=#duration(0, 1, 0, 0)])
in
Source"

$tmsl = "{
`"create`": {
`"parentObject`": {
`"database`": `"model name`",
`"table`": `"Table name`"
},
`"partition`": {
`"name`": `"test partition`",
`"source`": {
`"type`": `"m`",
`"expression`": [
`"$m_code`"
]
}
}
}
}"

invoke-ascmd -Server "powerbi://api.powerbi.com/v1.0/myorg/workspace" -Database "model Name" -Query $tmsl

  • Anonymous's avatar
    Anonymous
    3 years ago

    Hi poweruser1,

    Perhaps you can take a look the following sample code if it help with your scenario:

    $groupID = "<your group ID>"
    $datasetID = "<your dataset ID>"
    $token = Get-PowerBIAccessToken
    $authHeader = @{ "Authorization" = "Bearer $token" }
    $uri = "https://api.powerbi.com/v1.0/myorg/groups/$groupID/datasets/$datasetID/Partitions"
    $body = @{
        "name" = "ImportName"
        "mode" = "Import"
        "source" = @{
            "type" = "Query"
            "query" = "SELECT * FROM $tableName"
            "dataSource" = @{
                "type" = "Sql"
                "connectionDetails" = @{
    				"server" = "$serverName.database.windows.net"
    				"database" = "$databaseName"
                    "authentication" = "Windows"
                }
            }
        }
    }
    $jsonBody = $body | ConvertTo-Json
    Invoke-RestMethod -Uri $uri -Headers $authHeader -Method Post -Body $jsonBody

    Regards,

    Xiaoxin Sheng

1 Reply

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi poweruser1,

    Perhaps you can take a look the following sample code if it help with your scenario:

    $groupID = "<your group ID>"
    $datasetID = "<your dataset ID>"
    $token = Get-PowerBIAccessToken
    $authHeader = @{ "Authorization" = "Bearer $token" }
    $uri = "https://api.powerbi.com/v1.0/myorg/groups/$groupID/datasets/$datasetID/Partitions"
    $body = @{
        "name" = "ImportName"
        "mode" = "Import"
        "source" = @{
            "type" = "Query"
            "query" = "SELECT * FROM $tableName"
            "dataSource" = @{
                "type" = "Sql"
                "connectionDetails" = @{
    				"server" = "$serverName.database.windows.net"
    				"database" = "$databaseName"
                    "authentication" = "Windows"
                }
            }
        }
    }
    $jsonBody = $body | ConvertTo-Json
    Invoke-RestMethod -Uri $uri -Headers $authHeader -Method Post -Body $jsonBody

    Regards,

    Xiaoxin Sheng