Код: Выделить всё
import pandas as pd
from simple_salesforce import Salesforce
import pyarrow as pa
import pyarrow.parquet as pq
sf = Salesforce(username= 'username',
password='password',
security_token='token',
instance_url = 'instance',
domain='test')
Final_data = []
SFquery = ("select Id, Name from Salesforce limit 10")
response=sf.query_all(SFquery)
##formating the table for BQ##
for i in response['records']:
print(i)
df=pd.DataFrame(response['records']).drop(['attributes'], axis=1)
df=df.reset_index(drop=True)
pd.set_option('display.max_columns', 100)
pd.set_option('expand_frame_repr',True)
Pre_final = df.values.tolist()
Final_data = Final_data + Pre_final
table = pa.Table.from_pandas(df)
# Write Arrow Table to Parquet file with additional parameters
pq.write_table(table, 'output_pyarrow_custom.parquet', compression='snappy',
flavor='spark', version='2.0')
# Read the Parquet file using PyArrow
table = pq.read_table('salesforce.parquet')
df = table.to_pandas()
print(df)
import pandas as pd
from simple_salesforce import Salesforce
from datetime import datetime
from google.cloud import secretmanager
from multiprocessing.pool import ThreadPool
import time
import multiprocessing
def run_query(sf, query):
result = sf.query(query)
return result
if __name__ == '__main__':
sf = Salesforce(username= username,
password=password,
security_token=token,
instance_url = instance,
domain='test')
queries = ["select Id, Name from SF1",
"select Id, Name from SF2"]
pool = multiprocessing.Pool(processes=2)
results = pool.starmap(run_query,[(sf,q) for q in queries])
pool.close()
pool.join()
for results in results:
print(results)
< /code>
Но у меня возникают проблемы с объединением. Как я могу запустить его параллельно и создать отдельные паркетные файлы на основе количества заполненных его запросов. Таким образом, в этом случае это создаст два файла паркета .. sf1 и sf2.
Подробнее здесь: https://stackoverflow.com/questions/793 ... n-parallel
Мобильная версия