使用Beatbox在Pandas DataFrame中解析Salesforce报告

时间:2016-12-06 20:21:40

标签: pandas salesforce beatbox

是否有人尝试使用Beatbox将SalesForce报告解析为Pandas DataFrame? SO上有几个例子,但没有一个提供全面的解决方案,或者至少我认为它没有。

#!/usr/bin/env python3

import beatbox
import pandas as pd


sf = beatbox._tPartnerNS
service = beatbox.Client()
service.serverUrl = 'https://login.salesforce.com/services/Soap/u/38.0'
service.login('my-username', 'my-password')

report_id = '00myreport4G3V'

query = "SELECT Name FROM Report where id = '{}'".format(report_id)
query_result = service.query(query)

这只是选择名称,但理想情况下我想将报告内容加载到DataFrame中。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

我对BeatBox并不熟悉,但是使用simple-salesforce提取csv然后将其转换为DataFrame非常容易。

#-*-coding:utf-8-*-
import pandas as pd
import numpy as np
from simple_salesforce import Salesforce 
import requests
###login to SF
sf = Salesforce(username='xxxxx', 
                password='xxxx', 
                security_token='', 
                organizationId='xxxxxx')
def readReport(reportid):
    with requests.session() as s:
        d = s.get("https://ap1.salesforce.com/{}?export=1&enc=UTF-8&xf=csv".format(reportid), 
                  headers=sf.headers, 
                  cookies={'sid': sf.session_id})
    import sys
    if sys.version_info[0] < 3:
        from StringIO import StringIO
    else:
        from io import StringIO
    return pd.read_csv(StringIO(d.text), sep=",")

df = readReport('your report id')