Wie kann ich eine Python -DateTime über Avro an BigQuery übergeben?Python

Python-Programme
Anonymous
 Wie kann ich eine Python -DateTime über Avro an BigQuery übergeben?

Post by Anonymous »

Ich habe eine Python -Pipeline, in der ich versuche: < /p>
  • Holen Sie sich einige JSON -Daten aus einer API -Antwort < /li>
    Ändern Sie sie über Duckdb (nur im Gedächtnis) < /li>
    Konvertieren Sie die resultierenden Daten zu einer Liste von Python -Dicts (1 Rhow). Python datetime zu jedem Diktieren in der Liste
  • Schreiben Sie eine Avro -Datei aus diesem Diktat
  • Laden Sie die AVRO -Datei in BigQuery
, aber ich habe Probleme aufgrund des DateTime -Felds. Zeitstempel
Mein Avro -Schema wird von der Py_avro_schema -Bibliothek über eine Datenklasse generiert. Also modifiziere ich mein Schema manuell: < /p>

Code: Select all

schema_bytes = generate(MyClass, namespace="myclass")
schema_str = schema_bytes.decode("utf-8") if isinstance(schema_bytes, bytes) else schema_bytes
schema = json.loads(schema_str)
schema["fields"][0] = {
"name": "request_ts",
"type": [
"null",
{
"type": "long",
"logicalType": "timestamp-micros"
}
],
"default": None,
}
Ich habe versucht, Request_ts als Python DateTime, Isoformat DateTime und Timestamp
zu generieren

Code: Select all

# tried eeach approach individually
datetime.datetime.now(tz=datetime.timezone.utc)
datetime.datetime.now(tz=datetime.timezone.utc).isoformat()
int(datetime.datetime.now(tz=datetime.timezone.utc).timestamp())
< /code>
Aber es führt immer zu Fehlern in BigQuery, es kann Request_ts in einen Zeitstempel nicht unterdrücken. Mit dem Zeitstempel behauptet BQ, es sei nur ein int64-Wert (auch wenn das Schema das Feld "Typ" sein sollte: ["null", {"Typ": "Long", "logicalType": "Timestamp-Millis"}] 


Ich habe auch versucht, nur ein TISTAMP. Ein Pandas -Zeitstempel, der auch fehlschlägt, weil er nicht langen Avro zugeordnet ist. Zusätzlich versucht, die Tabelle ohne zeitliche Partitionierung nachzubilden. In diesem Fall ist der Job erfolgreich, aber der Zeitstempel ist nur der Epochen -Zeitstempel im Jahr 1970, nicht aktuelles

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post