有没有人充分了解Jupyter与PowerBI之间的python执行方式之间的差异,足以帮助我调试在jupyter中平稳运行但在PowerBI中执行时出错的脚本?
具体来说,我正在尝试访问Web服务API(使用python中的请求库)。这涉及加密身份验证以创建API会话,然后我将其用于请求JSON数据。我尝试通过以下方式在powerBi桌面客户端中运行脚本:
获取数据->其他-> Python脚本
我被告知该脚本是使用Anaconda(与我执行Jupyter笔记本的Python安装相同)运行的
这是我的脚本(有一些小的修改):
#I structured most of this code after https://github.com/csodedge/reporting-api-sample-code-python/blob/master/edge_api_samples/edge_api_client.py
import requests
import datetime
import base64
import hmac
import hashlib
import json
class csodSession():
def __init__(self, user_name, api_key, api_secret, sessionAlias):
#Initialize a session
self.user_name = user_name
self.api_key = api_key
self.api_secret = api_secret
self.timestamp=''
self.alias=sessionAlias
self.token = None
self.session_secret = None
self.sessionCnt = 0
def start(self):
#Connect to API and get session token and signature
self.sessionCnt+=1
reqUrl = XXXXXXXXX
self.setDateStamp()
stringtosign=XXXXXXXXX
headers={
XXXXXXXXX
}
response=requests.post(XXXXXXXXX)
response=response.content.decode('utf-8')
self.token=response[response.find('<a:Token>')+9:response.find('<a:Token>')+21]
self.session_secret=XXXXXXXXX
def setDateStamp(self):
#Update the timestamp on the session instance
self.timestamp=datetime.datetime.utcnow().strftime('%Y-%m-%dT%T.000')
def getView(self, view_name):
#takes the viewname as paramenter, retrieves requested view
self.setDateStamp()
stringtosign=XXXXXXXXX
self.signature=self.sign_string512(stringtosign,self.session_secret)
headers={
XXXXXXXXX
}
response=requests.get(XXXXXXXXX)
response=response.content.decode('utf-8')
return response
def sign_string512(self, string_to_sign, secret_key):
decoded_secret_key = base64.b64decode(secret_key)
input_bytes = string_to_sign.encode('utf8')
hash_value = (
hmac.new(decoded_secret_key, input_bytes, hashlib.sha512).digest()
)
return base64.b64encode(hash_value)
#Main
username=XXXXXXXXX
apikey=XXXXXXXXX
secret=XXXXXXXXX
s=csodSession(username,apikey,secret,XXXXXXXX)
s.start()
x=s.getView(XXXXXXXX)
正如我所说,这段代码在Jupyter中执行时没有错误,因此我主要将其发布以给出我正在使用的软件包,脚本的一般形式等的想法。
这是我尝试在PowerBi中执行它时遇到的错误:
该问题似乎与b64decode方法有关,但我不知道如何解决此问题。有什么想法吗?