Perguntas Frequentes
Origem do artigo: https://www.fourmoo.com/2018/06/05/using-the-power-bi-api-with-powershell-scripts-refreshing-your-dataset/
Eu sei que quando comecei a tentar usar as APIs do Power BI, eu não tinha certeza do que estava fazendo, e como eu poderia fazê-lo funcionar.Não só isso, mas eu pude ver que, como com a construção de qualquer plataforma de nuvem, as APIs têm que estar lá antes que eles possam colocar a pele e facilitar o uso.
Há sempre novos recursos ou funcionalidades disponíveis através das APIs power BI.
Nesta série de posts no Blog, vou mostrar como você pode usar recursos adicionais no Power BI usando a API e o PowerShell.
Deixe-me começar dizendo que não sou especialista em codificação ou scripting.
Meu objetivo neste post no blog, é mostrar que usar os scripts do PowerShell pode ser bastante fácil, uma vez que alguém (eu, escolha ME) mostrou como colocar os detalhes necessários.
Exemplo
Como sempre, gosto de usar um exemplo, que eu acho que facilita a seguiram.
Neste exemplo, vou usar a API power BI Refresh para atualizar um conjunto de dados usando o PowerShell.
Meu conjunto de dados será "Fourmoo Google Analytics"
Obtendo os detalhes necessários para o Script PowerShell
Eu tenho os detalhes sobre como atualizar um Conjunto de Dados power BI a partir do seguinte local abaixo. Aqui ele explica o que a API Power BI espera receber para atualizar o conjunto de dados.
https://msdn.microsoft.com/en-us/library/mt784652.aspx
Em seguida, baixei o Script PowerShell daqui: Power BI Dataset Refresh API Sample Code
Você acredita que há apenas 3 informações necessárias para atualizar o Script PowerShell e fazê-lo funcionar?
Abaixo eu vou explicar como obter esses dados e colocá-lo no Script PowerShell
Registrando-se para um ClientID
O primeiro passo que eu tinha que fazer era me registrar para um ClientID
- Para fazer isso, fui para a seguinte URL:
- https://dev.powerbi.com/apps
- Se eu não estivesse logado, seria solicitado a fazer login com minha conta de POWER BI.
- Eu coloquei no seguinte abaixo, a fim de obter o ClientID que eu preciso no meu script PowerShell.
- Em seguida, cliquei no Aplicativo de Registro
- Uma vez que isso completa, eu então tenho o meu ClientID
- Ele será exibido na seção ClientID abaixo, que eu copiei e colei e armazenado em um local seguro.
- Registrar o aplicativo em https://aad.portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade
Groupid
NOTA: O grupo é o que era chamado no Power BI antes de ser alterado para App Workspaces. Então, quando qualquer coisa se refere ao Grupo, ele está realmente agora se referindo a um Espaço de Trabalho do aplicativo.
Este é o grupo onde seu conjunto de dados está atualmente.
Para encontrar o GroupID, você pode completar as seguintes etapas abaixo.
- Faça login no serviço power BI, e então eu fui para o App Workspace onde eu tenho o conjunto de dados que eu quero atualizar.
- No meu exemplo, entrei no espaço de trabalho "Site Analytics"
- Em seguida, na URL você verá que ele vai dizer grupos, ea seção imediatamente depois disso é o GroupID
- Como você pode ver acima meu GroupID começa com 0084
- Anote o GroupID
Conjunto de dadosID
Em seguida, é onde eu precisava encontrar o Dataset ID, que eu mostro nos passos abaixo.
- Eu me certifiquei de que eu já estava no meu site Analytics App Workspace.
- Em seguida, eu cliquei em Configurações e, em seguida, Configurações e, em seguida, Configurações novamente
- Em seguida, cliquei em Datasets e cliquei no conjunto de dados que quero atualizar.
- Como no meu exemplo, foi chamado de "Fourmoo Google Analytics"
- Agora na URL eu agora tinha o meu DatasetID que é que é depois de conjuntos de dados, e destacado como mostrado abaixo.
- Então eu fiz uma nota do DatasetID
Atualizando o Script PowerShell
Agora estou pronto para atualizar o script do PowerShell com os detalhes que recebi de cima.
NOTA: O script do PowerShell tem muita documentação nele, então se você se perder, há muitos comentários para ajudá-lo.
- Abri o PowerShell ISE
- Então abri meu script powershell.
- Agora, onde diz $groupID eu coloquei no meu GroupID que eu tinha notado anteriormente.
- Então, onde ele disse $datasetID, eu coloquei no meu DatasetID que eu tinha notado anteriormente.
- A peça final é colocar no $clientID, que eu tinha notado anteriormente
- Então eu salvei o arquivo PowerShell Script
Testando o script PowerShell e minha atualização do conjunto de dados
O passo final é agora executar o script PowerShell, garantir que ele seja executado, e meu conjunto de dados realmente seja atualizado.
- Como você pode ver minha última atualização é mostrado abaixo
- Então eu executo o Script PowerShell.
- Recebi um aviso pedindo as permissões do aplicativo
- Eu cliquei em Aceitar
- Então eu tenho o seguinte resultado mostrando que foi executado com sucesso
- Agora eu podia ver que estava em progresso
- E, finalmente, foi refrescado com sucesso.
Conclusão
Embora este tenha sido um pouco mais longo post no blog, espero que você possa ver que se você seguir os passos como você pode aproveitar as APIs do Power BI para seus conjuntos de dados.
Eu planejo fazer posts adicionais no blog sobre as diferentes APIs power BI. Se houver algum interessado, por favor deixe um comentário abaixo.
E como eu digo em cada post no blog, por favor deixe qualquer comentário ou perguntas.
# adal is the azure-activedirectory-library-for-python. install it first.
from adal import AuthenticationContext
import requests
import json
# get access token implictly with username and password.
def get_token():
client_id = "?"
resource_uri = "https://analysis.windows.net/powerbi/api"
user_name = "?"
user_password = "?"
auth_context = AuthenticationContext("https://login.microsoftonline.com/consultline.cnt.br")
token_response = auth_context.acquire_token_with_username_password(resource_uri, user_name, user_password, client_id)
token = "Bearer " + token_response["accessToken"]
#print(token_response)
return token
def refresh():
token = get_token()
headers = {"Authorization": token, "Content-type": "application/json"}
post_url = "https://api.powerbi.com/v1.0/myorg/groups/?/datasets/?/refreshes"
body = {
"notifyOption": "MailOnCompletion"
}
r = requests.post(post_url, headers = headers, data = json.dumps(body))
#print(r)
return r.status_code
if __name__ == "__main__":
refresh()
Usando a API Power BI com scripts PowerShell (e Python) – Atualizando seu conjunto de dados