Pythonを使用してSalesforceからデータ抽出を自動化する方法


アナリストは、データ解析を実行するか、ダッシュボードをローカルに構築するために、Salesforceオブジェクトからデータ抽出プロセスを自動化する必要に遭遇します.オートメーションの前に、私の組織のアナリストは、KPIレポートを作成するために、以下の手順を踏まなければなりませんでした
  • Salesforceサイトを通ってログインしてください
  • 手動で複数のレポートのフィールドを更新する
  • 各レポートをCSVファイルとしてダウンロードします
  • 計算を実行し、データを操作し、集約されたデータセットを作成する
  • 最後に、レポートの目的のために消費されるGoogleシートに貼り付けます
  • このプロセスは、手動で、時間がかかり、エラーがちだった.しかし、それはこのようにする必要はありません.単純なPythonスクリプトとSalesforce APIの助けを借りて、プロセス全体を自動化できます.

    Pythonを使用したSalesforceデータの取得
    開始するには、オープンソースパッケージをインストールしますSimple Salesforce . これは、ユーザーがSalesforceから直接ビルドされたレポートをダウンロードしたり、SOSSPACE APIをクエリすることによって、新しいデータセットを生成する基本的なSalesforce REST APIクライアントです.

    PythonパッケージとAPIアクセスを設定する
  • 最初のステップはPython package , これにより、必要なパッケージを全てPythonファイルにインポートできます.
  • pip install simple_salesforce
    
    from simple_salesforce import Salesforce
    import requests
    import pandas as pd
    from io import StringIO
    
  • The Salesforce 関数を使用するとAPIに接続することができます(APIアクセスとSalesforce資格情報が必要になります).接続が必要な場合
  • APIアクセスのためにあなたのSalesforce管理者に手を伸ばしてください.
  • セキュリティトークンを持っていない場合は、Salesforceアカウントにログインし、設定ページに移動します.その後、私の個人情報の下で私のセキュリティトークンをリセットするをクリックします.あなたがこのオプションを見ないならば、あなたのSalesforce管理者に連絡してください.
  • Note: Be sure to protect your passwords and keys; you can set environment variables for these credentials within your script.


    sf = Salesforce(username='',password='', security_token='')
    

    アクセスあなたのSalesforceデータ
    Salesforceからデータを取得するには2種類のオプションがあります.
    オプション1:ダウンロードSalesforceレポート
    ダウンロードは、Pythonの要求を使用してカスタムビルドSesesforceレポートを構築get() あなたのSalesforceインスタンスURLとレポートのIDをダウンロードする方法.また、を読むことができます.さらにデータ操作のためのデータファイルとしてCSVファイル.
    sf_instance = 'https://oneappexchange.lightning.force.com/' #Your Salesforce Instance URL
    reportId = '' # add report id
    export = '?isdtp=p1&export=1&enc=UTF-8&xf=csv'
    sfUrl = sf_instance + reportId + export
    response = requests.get(sfUrl, headers=sf.headers, cookies={'sid': sf.session_id})
    download_report = response.content.decode('utf-8')
    df1 = pd.read_csv(StringIO(download_report))
    
    オプション2 : SOQLを使用してデータを照会する
    SOLEQUESTデータを直接構造化クエリ言語(SQL)に似ていますが、Salesforceデータだけに適用します.SOQLとその制限の詳細についてはSOQL documentation .
    メタデータの検索
  • 次のように移動して、オブジェクトとフィールドのAPI名を見つけます.
  • Pythonを使用してSalesforceオブジェクトのすべてのフィールド名を確認するには、次のコマンドを実行します.SalesforceオブジェクトのAPI名は以下の通りです.UserInstall__c .
  • descri=sf.UserInstall__c.describe()
    [field['name'] for field in descri['fields']]
    
    SOQLでデータを取得する
    シンプルなSalesforceメソッドを提供しますquery_all SOQLを使用してデータを取得します.複数のオブジェクトを一度にクエリすることができますrelationship queries . これは、異なるSalesforceオブジェクトから単一のデータセットにデータをマージする必要がある場合に役立ちます.Listing 別のオブジェクトであり、このオブジェクトからフィールドをdot notation Listing __r.ProviderName__ c .
    results=sf.query_all("""
        Select 
        CreatedDate,
        Listing __r.RecordTypeSnapshot__ c,
        Name,
        Listing __r.ProviderName__ c
        from UserInstall__c
        where CreatedDate=LAST_N_DAYS:7 
        """)
    
    辞書からのデータフレームの構築
    SOQLクエリの結果は順序付き辞書形式です.入れ子になったデータを反復処理し、次のようにDataFrameを生成できます.
    records = [dict(CreatedDate=rec['CreatedDate'], 
                    Record_Type=rec['Listing__r']['RecordTypeSnapshot__c'],
                    Name=rec['Name'],
                    ProviderName=rec['Listing__r']['ProviderName__c']) 
                    for rec in results['records']]
    df=pd.DataFrame(records)
    

    データ処理とレポートの自動化
    データをPythonでDataFramameとすると、必要に応じてデータのラングリングと集約メトリクスの両方を実行できます.また、データの出力方法を選択することもできます.たとえば、GoogleシートAPIを使用してGoogleシートにエクスポートしてpygsheets Python package またはそれをデータベーステーブルに取り込みます.さらに、プラットフォーム上でPythonスクリプトをスケジュールすることができますAirflow スケジュールされた時間で自動的に実行し、この集約されたデータセットに基づいてダッシュボードを構築します.


    結論
    うまくいけば、このポスト役に立つ!この単純なスクリプトは、データの抽出とレポート処理を自動化し、マニュアル作業のチーム時間を節約し、エラーを入力するリスクを減らす.詳しくはrefer to our sample code on GitHub .

    著者について
    Rutuja PatilはSalesforceのプラットフォームAnalyticsチームのAnalytics Managerです.そこで、彼女はビジネス分析、オートメーションに集中して、BIツールを使って報告します.Rutujaは情報システムのMSを持っており、タブローで認定されています.
    郵便How to Automate Data Extraction from Salesforce Using Python 最初に現れたSalesforce Developers Blog .