2017-09-13 1 views
0

J'essaie d'actualiser le jeu de données bi Power à l'aide de la méthode POST avec le script PowerShell, mais je reçois toujours une erreur sur le type de support. fais ici. Juste curieux si quelqu'un d'autre ayant une solution pour cela. Merci d'avance pour l'aide!!Le serveur distant a renvoyé une erreur: (415) Type de support non pris en charge pour l'API PowerBI Data Refresh

S'il vous plaît voir ce code source pour plus de détails ...

https://github.com/Azure-Samples/powerbi-powershell/blob/master/manageRefresh.ps1

Poweshell error snapshot

# This sample script calls the Power BI API to progammtically trigger a refresh for the dataset 
# It then calls the Power BI API to progammatically to get the refresh history for that dataset 
# For full documentation on the REST APIs, see: 
# https://msdn.microsoft.com/en-us/library/mt203551.aspx 

# Instructions: 
# 1. Install PowerShell (https://msdn.microsoft.com/en-us/powershell/scripting/setup/installing-windows-powershell) and the Azure PowerShell cmdlets (https://aka.ms/webpi-azps) 
# 2. Set up a dataset for refresh in the Power BI service - make sure that the dataset can be 
# updated successfully 
# 3. Fill in the parameters below 
# 4. Run the PowerShell script 

# Parameters - fill these in before running the script! 
# ===================================================== 

# An easy way to get group and dataset ID is to go to dataset settings and click on the dataset 
# that you'd like to refresh. Once you do, the URL in the address bar will show the group ID and 
# dataset ID, in the format: 
# app.powerbi.com/groups/{groupID}/settings/datasets/{datasetID} 

$groupID = " FILL ME IN " # the ID of the group that hosts the dataset. Use "me" if this is your My Workspace 
$datasetID = " FILL ME IN " # the ID of the dataset that hosts the dataset 

# AAD Client ID 
# To get this, go to the following page and follow the steps to provision an app 
# https://dev.powerbi.com/apps 
# To get the sample to work, ensure that you have the following fields: 
# App Type: Native app 
# Redirect URL: urn:ietf:wg:oauth:2.0:oob 
# Level of access: all dataset APIs 
$clientId = " FILL ME IN " 

# End Parameters ======================================= 

# Calls the Active Directory Authentication Library (ADAL) to authenticate against AAD 
function GetAuthToken 
{ 
     $adal = "${env:ProgramFiles(x86)}\Microsoft SDKs\Azure\PowerShell\ServiceManagement\Azure\Services\Microsoft.IdentityModel.Clients.ActiveDirectory.dll" 

     $adalforms = "${env:ProgramFiles(x86)}\Microsoft SDKs\Azure\PowerShell\ServiceManagement\Azure\Services\Microsoft.IdentityModel.Clients.ActiveDirectory.WindowsForms.dll" 

     [System.Reflection.Assembly]::LoadFrom($adal) | Out-Null 

     [System.Reflection.Assembly]::LoadFrom($adalforms) | Out-Null 

     $redirectUri = "urn:ietf:wg:oauth:2.0:oob" 

     $resourceAppIdURI = "https://analysis.windows.net/powerbi/api" 

     $authority = "https://login.microsoftonline.com/common/oauth2/authorize"; 

     $authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $authority 

     $authResult = $authContext.AcquireToken($resourceAppIdURI, $clientId, $redirectUri, "Auto") 

     return $authResult 
} 

# Get the auth token from AAD 
$token = GetAuthToken 

# Building Rest API header with authorization token 
$authHeader = @{ 
    'Content-Type'='application/json' 
    'Authorization'=$token.CreateAuthorizationHeader() 
} 

# properly format groups path 
$groupsPath = "" 
if ($groupID -eq "me") { 
    $groupsPath = "myorg" 
} else { 
    $groupsPath = "myorg/groups/$groupID" 
} 

# Refresh the dataset 
$uri = "https://api.powerbi.com/v1.0/$groupsPath/datasets/$datasetID/refreshes" 
Invoke-RestMethod -Uri $uri -Headers $authHeader -Method POST -Verbose 

# Check the refresh history 
$uri = "https://api.powerbi.com/v1.0/$groupsPath/datasets/$datasetID/refreshes" 
Invoke-RestMethod -Uri $uri -Headers $authHeader -Method GET -Verbose 
+0

Pouvez-vous mettre à jour la question avec le code avec lequel vous rencontrez ce problème? – Persistent13

+0

@ Persistent13 juste mis à jour .. –

+0

Basé sur ce que je vois dans la [référence de l'API] (https://msdn.microsoft.com/en-us/library/mt203567.aspx#request) pour cette URL la demande devrait être un N'obtenez pas un POST. Si vous le changez, ça marche? – Persistent13

Répondre

0

J'ai suis tombé sur cette question précise.

Vous êtes essentiellement essayer de retourner les informations de rafraîchissement à partir d'un ensemble de données qui ne peut pas être mise à jour (par ex. Un jeu de données de requête directe ou les ensembles de données de métriques prédéfinies)

Vous devez soit ajouter -ErrorAction SilentlyContinue

ou envelopper l'ensemble de données rafraîchir appel API dans une boucle comme ceci:

$ = jeux de données Invoke-RestMethod -uri $ uri -Headers $ AuthHeader -Méthode GET

foreach($dataset in $datasets.value) 
{ 
    if($dataset.isRefreshable -eq $true) 
    { 
     #Build API String 
     $uri2 = "https://api.powerbi.com/v1.0/$groupsPath/datasets/$($dataset.id)/refreshes" 
     #Return refresh info for each dataset 
     $refreshes = Invoke-RestMethod -Uri $uri2 -Headers $authHeader -Method GET 
    } 
}