Я пытаюсь получить данные из отчетов в 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
Может ли кто -нибудь предложить решение для решения этой проблемы?
Я пытаюсь получить данные из отчетов в Tally , используя скрипт Python и сохранить их в Google Big Query . Я получил данные из Tally Report, используя XML запрос и получил ответ. Затем я попытался поместить данные в Google Big Query после преобразования их в «json». Но я не мог поместить данные в Google Большой запрос ». Кроме того, я хочу сделать cdc` перед сохранением данных в Google Big запросе для добавления обновленных сведений (Delete Row, обновленные строки, вновь добавленные строки) код: [code]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
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']
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)
Я не могу подключиться к Tally ODBC из другой сети. Я внес свой IP-адрес в белый список и открыл порт 9000. Tally установлена на машине в облаке. Вот что я делаю:
import pyodbc
conn = pyodbc.connect('Dsn=TallyODBC64_9000;Driver={Tally ODBC...
Я использую Python для подключения и получения данных Big Query с моего корпоративного сервера. Однако я получаю сообщение об ошибке
TransportError: HTTPSConnectionPool(host='oauth2.googleapis.com', port=443): Max retries exceeded with url: /token...
Мне нужно загрузить сжатый avro-файл Hadoop Snappy в большой запрос. Увидел в документах Google, что большой запрос обнаруживает быстрое сжатие. Но когда я попробовал bq load --source-format=AVRO проект:dataset.table gs://mybucket/inputsnappy.snappy...
I have one method for generate file stream, I called the method two time line by line, I am facing outside the bounds of the array, when i call it one time it works fine
public byte[] GenerateReportAsync(string reportName, string reportType,...