使用Python验证Power BI REST API时出现问题

戴维·菲茨·杰拉德

我已经创建了一个推送流数据集(历史记录已建立),并且设法使用“ Push URL”从Python脚本向其发布数据,该URL是从有关数据集的“ API信息”选项卡中获得的。我还需要做的是删除历史数据,以便清除我的测试数据和/或在必要时可以重置数据集并从头开始重新填充。

推送网址的格式为 https://api.powerbi.com/beta/xxxxxxxx/datasets/xxxxxxxxxxxx/rows?key=xxxxxxxxxxxxxxx

以下代码可以正常工作并发布数据;

import requests 
import pyodbc as db
import pandas as pd

API_ENDPOINT = "https://api.powerbi.com/beta/xxxxxxxx/datasets/xxxxxxxxxxxx/rows?key=xxxxxxxxxxxxxxx"

dbcon = db.connect('DRIVER={SQL Server};SERVER=tcp:fxdb.database.windows.net;DATABASE=FXDatabase;UID=xxxx;PWD=xxxx')
df = pd.read_sql("select statement etc...", dbcon)
data = df.to_dict(orient='records')

response = requests.post(API_ENDPOINT, json=data)

但是添加以下内容:

response = requests.delete(API_ENDPOINT)

给我:

404

{
  "error":{
    "code":"","message":"No HTTP resource was found that matches the request URI 'http://api.powerbi.com/beta/...

我无法解决这个问题,因此我开始研究OAuth2身份验证,认为Auth URL用于发布数据。https://dev.powerbi.com/apps注册应用程序后,我的代码现在如下所示:

import requests 
import pyodbc as db
import pandas as pd

API_ENDPOINT = "https://api.powerbi.com/beta/xxxxxxxxxxxxxx/datasets/xxxxxxxxxxxxxxx/rows"

data = {
        'grant_type': 'password',
        'scope': 'openid',
        'resource': r'https://analysis.windows.net/powerbi/api',
        'client_id': 'xxxxxxxxx',
        'username': 'xxxxxxxxx',
        'password': 'xxxxxxxx'
    }
response = requests.post('https://login.microsoftonline.com/common/oauth2/token', data=data)

access_token = response.json().get('access_token')
headers = {'Authorization': 'Bearer ' + access_token}

dbcon = db.connect('DRIVER={SQL Server};SERVER=tcp:fxdb.database.windows.net;DATABASE=FXDatabase;UID=xxxx;PWD=xxxx')
df = pd.read_sql("select statement etc...", dbcon)
data = df.to_dict(orient='records')

response = requests.post(API_ENDPOINT, json=data, headers=headers)

response = requests.delete(API_ENDPOINT, headers=headers)

身份验证有效,返回状态码200。POST返回401(此方法适用于先前的方法),而DELETE仍返回404。

戴维·菲茨·杰拉德

感谢jonrsharpe向我指出了正确的方向。

重新访问API文档时,我发现了一个获取表名的调用。

GET https://api.powerbi.com/v1.0/myorg/datasets/ {datasetKey} / tables

所以认证后我就跑了

response = requests.get("https://api.powerbi.com/v1.0/myorg/datasets/xxxxxxxx/tables", headers=headers)

响应的内容告诉我,我的数据集中有一个名为“ RealTimeData”的表,该表必须为默认名称,因为我没有有意创建此表。

我现在将端点更新为;

API_ENDPOINT = "https://api.powerbi.com/v1.0/myorg/datasets/xxxxxxxxx/tables/RealTimeData/rows"

而且一切正常。

谢谢乔恩!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用ClientResponse Jersey调用Rest API时出现问题

使用 redux 将图像从 react 发布到 Django Rest API 时出现问题

使用REST API从Salesforce.com调用“获取更新”记录时出现问题

Power BI REST API:导入数据

使用Power BI REST API 403错误生成嵌入令牌

使用REST API从Power bi获取数据(不是元数据)

使用Karate框架发送嵌套JSON作为请求以验证POST REST API方法时出现问题

power bi 服务中的 Rest API 凭据问题

使用JBoss部署REST服务时出现问题

Power BI REST API-使用应用程序密钥/服务主体时出现401授权错误

在Power BI中创建唯一值以创建关系时出现问题

Node js App与Power Bi Rest Api的集成

REST API和PowerBI Designer的Power BI数据集

使用rcurl连接到BI工具的REST API

使用Java和REST发送Apple Push Notification时出现问题

从Firebase检索信息以及使用REST与Retrofit和RxJava进行解析时出现问题

Django REST框架;使用“组”字段序列化用户模型时出现问题

在Django Rest框架中使用POST方法发送信息时出现问题

使用Worklight适配器调用REST服务时出现问题

使用VSTS的REST API更新内部定义时出现的问题

Power BI:DAX 的问题

在 Python 列表中存储 API 数据时出现问题

使用 Graph API 创建 AD 组时出现问题

使用FileReader API打开文件时出现问题

使用configparser传递API凭证时出现问题

使用Docusign API获取JWT令牌时出现问题

在Google磁盘API中使用凭据时出现问题

使用 Swift 从 API 解析 JSON 数据时出现问题

使用Google Calendar API时出现问题