Предполагая, что учетной записи службы по умолчанию для App Engine назначена роль редактора по умолчанию, и что у вас есть очень простая схема для таблицы BigQuery. Например:
Field name Type Mode Policy tags Description
date STRING NULLABLE
location STRING NULLABLE
new_cases INTEGER NULLABLE
new_deaths INTEGER NULLABLE
total_cases INTEGER NULLABLE
total_deaths INTEGER NULLABLE
Следующая модификация вашего кода должна работать для функции, запускаемой по HTTP. Обратите внимание, что вы не включили Row_list.append(my_list)
в for для l oop, чтобы заполнить ваш список элементами, и что согласно образцам в документации вы должны использовать список кортежей:
from google.cloud import bigquery
import pandas as pd
client = bigquery.Client()
table_id = "[PROJECT-ID].[DATASET].[TABLE]"
def download_data(request):
df = pd.read_csv('https://covid.ourworldindata.org/data/ecdc/full_data.csv')
# Create an empty list
Row_list =[]
# Iterate over each row
for index, rows in df.iterrows():
# Create list for the current row
my_list =(rows.date, rows.location, rows.new_cases, rows.new_deaths, rows.total_cases, rows.total_deaths)
# append the list to the final list
Row_list.append(my_list)
## Get Biq Query Set up
table = client.get_table(table_id)
errors = client.insert_rows(table, Row_list) # Make an API request.
if errors == []:
print("New rows have been added.")
С очень простым файлом require.txt:
# Function dependencies, for example:
# package>=version
pandas
google-cloud-bigquery