Как получить данные из отчета в Tally, используя Python и сохранить данные в Google Big Query?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как получить данные из отчета в Tally, используя Python и сохранить данные в Google Big Query?

Сообщение Anonymous »

Я пытаюсь получить данные из отчетов в Tally , используя скрипт Python и сохранить их в Google Big Query . Я получил данные из Tally Report, используя XML запрос и получил ответ. Затем я попытался поместить данные в Google Big Query после преобразования их в «json». Но я не мог поместить данные в Google Большой запрос ». Кроме того, я хочу сделать cdc` перед сохранением данных в Google Big запросе для добавления обновленных сведений (Delete Row, обновленные строки, вновь добавленные строки)
код:

Код: Выделить всё

import requests
import json
import os
import pandas as pd
from google.cloud import bigquery
import os, json
from datetime import datetime
import xml.etree.ElementTree as et

url = "URL"

data_tdl = """

Export Data





$$SysName:XML

20170401

20210331

Ratio Analysis





"""
try:
req = requests.post(url=url, data=data_tdl)
# print(req.text)
xml_data = req.text

except:
xml_data = " Connection Not established, Try again after the server is up     ............................!"
print("connection not established.............................!")

with open('/home/abin/sme/response.xml', 'w') as f:  # Writing in XML file
for line in xml_data:
f.write(line)
print("file saved...")

## Converts schema dictionary to BigQuery's expected format for job_config.schema
def format_schema(schema):
formatted_schema = []
for row in schema:
formatted_schema.append(bigquery.SchemaField(row['name'], row['type'], row['mode']))
return formatted_schema

### Create dummy data to load
df_cols = ['RATIONAME', ' RATIOVALUE']

xtree = et.parse('response.xml')
xroot = xtree.getroot()
print(xroot)
rows = []

for node in xroot:
# print(node)
res = []
for el in df_cols:
if node is not None and node.find(el) is not None:
res.append(node.find(el).text)
else:
res.append(None)
rows.append({df_cols[i]: res[i]
for i, _ in enumerate(df_cols)})
# print(rows)
out_df = pd.DataFrame(rows, columns=df_cols)
# print(out_df)

### Convert dataframe to JSON object
json_data = out_df.to_json(orient = 'records')
json_object = json.loads(json_data)

os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = r"credentials.json"

### Define schema as on BigQuery table, i.e.  the fields id, first_name and last_name
table_schema = {
'name': 'ratio_name',
'type': 'STRING',
'mode': 'NULLABLE'
}, {
'name': 'ratio_value',
'type': 'STRING',
'mode': 'NULLABLE'
}

project_id = 'project id'
dataset_id = 'xml_data'
table_id = 'ratio_analysis'

client  = bigquery.Client(project = project_id)
dataset  = client.dataset(dataset_id)
table = dataset.table(table_id)

job_config = bigquery.LoadJobConfig()
job_config.source_format = bigquery.SourceFormat.NEWLINE_DELIMITED_JSON
job_config.schema = format_schema(table_schema)

now = datetime.now()

current_time = now.strftime("%H:%M:%S")
print("Time before data dumping =", current_time)
job = client.load_table_from_json(json_object, table, job_config = job_config)
current_time1 = now.strftime("%H:%M:%S")
print("Time after data dumping =", current_time1)
print(job.result())
< /code>
xml -ответ: < /p>

Working Capital
3,83,272.14 Dr
Cash-in-hand
1,28,788.00 Dr
Bank Accounts
39,18,723.51 Dr
Bank OD A/c
75,000.00 Cr

Может ли кто -нибудь предложить решение для решения этой проблемы?

Подробнее здесь: https://stackoverflow.com/questions/743 ... -in-google
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»