我为API调用创建了一个Python函数,因此我不再需要在Power BI中这样做。它创建了5个XML文件,然后将它们合并成一个CSV文件。我希望该功能在谷歌云上运行(如果这不是一个好主意,请纠正我)。
我认为不可能在函数中创建XML文件(也许可以写入bucket),但理想情况下,我希望跳过XML文件的创建,直接创建CSV。
请在下面找到生成XML文件并合并为CSV的代码:
offices = ['NL001', 'NL002', 'NL003', 'NL004', 'NL005']
#Voor elke office inloggen, office veranderen en een aparte xml maken
for office in offices:
xmlfilename = office+'.xml'
session.service.SelectCompany(office, _soapheaders={'Header': auth_header})
proces_url = cluster + r'/webservices/processxml.asmx?wsdl'
proces = Client(proces_url)
response = proces.service.ProcessXmlString(query.XML_String, _soapheaders={'Header': auth_header})
f = open(xmlfilename, 'w')
f.write(response)
f.close()
到csv
if os.path.exists('CombinedFinance.csv'):
os.remove('CombinedFinance.csv')
else:
print("The file does not exist")
xmlfiles = ['NL001.xml','NL002.xml','NL003.xml','NL004.xml','NL005.xml']
for xmlfile in xmlfiles:
with open(xmlfile, encoding='windows-1252') as xml_toparse:
tree = ET.parse(xml_toparse)
root = tree.getroot()
columns = [element.attrib['label'] for element in root[0]]
columns.append('?')
data = [[field.text for field in row] for row in root[1::]]
df = pd.DataFrame(data, columns=columns)
df = df.drop('?', axis=1)
df.to_csv('CombinedFinance.csv', mode='a', header=not os.path.exists('CombinedFinance.csv'))
有什么想法吗?
n. b.如果我能改进我的代码,请让我知道,我只是在学习这一切
编辑:为了回应一些评论,代码现在看起来是这样的。部署到云端时,我遇到以下错误:
错误:(gcloud.functions.deploy)操作错误:代码=13,消息=由于运行状况检查失败,函数部署失败。这通常表示代码生成成功,但在测试执行期间失败。检查日志以确定原因。如果看起来是暂时的,请在几分钟后再次尝试部署。
我的要求。txt如下所示:
大熊猫
有什么想法吗?
import pandas as pd
import xml.etree.ElementTree as ET
from zeep import Client
import query
import authentication
import os
sessionlogin = r'https://login.twinfield.com/webservices/session.asmx?wsdl'
login = Client(sessionlogin)
auth = login.service.Logon(authentication.username, authentication.password, authentication.organisation)
auth_header = auth['header']['Header']
cluster = auth['body']['cluster']
#Use cluster to create a session:
url_session = cluster + r'/webservices/session.asmx?wsdl'
session = Client(url_session)
#Select a company for the session:
offices = ['NL001', 'NL002', 'NL003', 'NL004', 'NL005']
#Voor elke office inloggen, office veranderen en een aparte xml maken
for office in offices:
session.service.SelectCompany(office, _soapheaders={'Header': auth_header})
proces_url = cluster + r'/webservices/processxml.asmx?wsdl'
proces = Client(proces_url)
response = proces.service.ProcessXmlString(query.XML_String, _soapheaders={'Header': auth_header})
treetje = ET.ElementTree(ET.fromstring(response))
root = treetje.getroot()
columns = [element.attrib['label'] for element in root[0]]
columns.append('?')
data = [[field.text for field in row] for row in root[1::]]
df = pd.DataFrame(data, columns=columns)
df = df.drop('?', axis=1)
df.to_csv('/tmp/CombinedFinance.csv', mode='a', header=not os.path.exists('/tmp/CombinedFinance.csv'))
关于将常规Python脚本(您在这里所拥有的)转换为云函数,需要考虑的一些事情:
请求
,并且必须返回某种HTTP响应/tmp
。在执行函数的过程中,您必须将所有文件都写入其中def my_http_function(request):
# business logic here
...
return "This is the response", 200
def my_background_function(event, context):
# business logic here
...
# No return necessary
问题内容: 我需要执行一些python机器学习代码,并希望从Google Cloud Function中的节点进程执行它。 我想使用node,因为我有一些稍后要运行的firebase管理任务。我也有一个我满意的节点的部署工作流。 这可能吗?如果是这样,您能举个例子吗? 问题答案: 是的,这是可能的,您可能需要使用http://www.pyinstaller.org/来打包python代码。看看我的
我不知道该怎么说,但我觉得谷歌在我不知情的情况下改变了一些东西。我过去常常从日志仪表板中Google Cloud Console中的python Cloud Functions获取日志。现在,它刚刚停止工作。 所以我去调查了很长时间,我只是做了一个日志 hello world python Cloud Function: 因此,这是我 main.py,我将其部署为具有http触发器的云函数。 因为
这个python脚本的目的是从google analytics中提取数据,并将其添加到google MySQL数据库中。该脚本在我的本地机器上工作,但在google函数上不行: 当我运行上面的代码时,我得到了这些错误: 错误消息 我想这可能是因为谷歌机器的IP地址没有被列入我的SQL数据库的白名单。我尝试添加一个带有外部IP地址的云NAT,以便将其列入白名单。那没用。下面是一篇文章的链接,该文章有
我正在尝试使用谷歌云数据流将谷歌PubSub消息写入谷歌云存储。PubSub消息采用json格式,我要执行的唯一操作是从json到parquet文件的转换。
我尝试运行一个数据流管道,使用DirectPipelineRunner从本地计算机(windows)读取数据,并写入Google云存储。作业失败,出现以下指定FileNotFoundException的错误(因此我认为数据流作业无法读取我的位置)。我正在本地计算机上运行作业,以运行我创建的基于GCP的模板。我可以在GCP数据流仪表板中看到它,但由于以下错误而失败。请帮忙。我还尝试了本地机器的IP或
按照https://cloud.google.com/endpoints/docs/openapi/get-started-cloud-functions入门指南获取CDN背后的云功能。将ESPv2 Beta部署到Cloud Run并获得预配的CloudRun服务URL。现在我的文件碰壁了。当我运行命令时: 我得到了错误响应: 我正在使用的似乎与教程中的示例几乎相同,并且似乎此错误表示云函数终结点