簡體   English   中英

將數據插入 BigQuery 表時出錯

[英]Error with inserting data into BigQuery table

我嘗試將 pandas dataframe 中的數據插入 GBQ 表,但出現“無效數據錯誤”。 GBQ 表具有以下架構:

字段名稱 類型 模式
ID 細繩 必需的
order_id 細繩 必需的
行動日期 日期 可空
產品名稱 細繩 可空
order_sum 漂浮 可空
網站編號 細繩 可空
網站名稱 細繩 可空
網站管理員_id 細繩 可空
站長 細繩 可空

而 dataFrame 具有這樣的結構:

ID order_id 行動日期 產品名稱 order_sum 網站編號 網站名稱 網站管理員_id 網站管理員姓名
830339411 970561 2022-02-25 產品_1 1000.0 123 站點 1 456 站長 1
830339412 970562 2022-02-25 產品_2 1500.0 120 站點 2 456 站長 1

和數據類型:

柱子 類型
ID object
order_id object
行動日期 object
產品名稱 object
order_sum float64
網站編號 object
網站名稱 object
網站管理員_id object
站長 object

最初action_date列的格式類似於2022-02-25T20:31:02但我已將其轉換為2022-02-25

all_orders['action_time'] = pd.to_datetime(df['action_time'])
all_orders['action_date'] = all_orders['action_time'].dt.date

所以當我嘗試向 GBQ 中插入一些行時,出現錯誤:

'errors': [{'reason': 'invalid', 'location': 'action_date', 'debugInfo': '', 'message': "Invalid date: '1644019200000'"}]

看起來 GBQ 將 action_date 列中的日期視為 unix 時間戳。 如何解決?

您不需要在寫入之前解析2022-02-25T20:31:02格式,使用以下內容並寫入表。

dataframe['action_time'] = pandas.to_datetime(dataframe['action_time'], infer_datetime_format=True)

以下是將日期寫入 BigQuery 的完整功能示例:

import datetime
from google.cloud import bigquery
import pandas
import pytz

client = bigquery.Client()

table_id = "<project>.<ds>.<table>"

records = [
    {
        "date": '2022-12-25T20:31:02',
        "data": "Final Teste",
    },
]
dataframe = pandas.DataFrame(
    records,
    columns=[
        "date",
        "data",
    ],
)


dataframe['date'] = pandas.to_datetime(dataframe['date'], infer_datetime_format=True)

job_config = bigquery.LoadJobConfig(
    schema=[
        bigquery.SchemaField("date", bigquery.enums.SqlTypeNames.DATE),
        bigquery.SchemaField("data", bigquery.enums.SqlTypeNames.STRING),
    ],)

job = client.load_table_from_dataframe(dataframe, table_id) 
job.result()  

table = client.get_table(table_id)  # Make an API request.
print("Loaded {} rows and {} columns to {}".format(table.num_rows, len(table.schema), table_id))

表中結果: 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM