BigQuery: konvertieren von Epoche zu TIMESTAMP
Ich versuche auf range-join von zwei Tabellen, wie so
SELECT *
FROM main_table h
INNER JOIN
test.delay_pairs d
ON
d.interval_start_time_utc < h.visitStartTime
AND h.visitStartTime < d.interval_end_time_utc
wo h.visitStartTime
ist ein INT64
Epoche d.interval_start_time_utc
und d.interval_end_time_utc
sind richtige TIMESTAMP
s.
Den oben schlägt mit
No matching signature for operator < for argument types: TIMESTAMP, INT64. Supported signature: ANY < ANY
Weder Verpackung h.visitStartTime
im TIMESTAMP()
noch CAST(d.interval_start_time_utc AS INT64)
Arbeit. Wie mache ich die beiden vergleichbar in BigQuery ist Standard-SQL-Dialekt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie timestamp-Funktionen für die Konvertierung wie
TIMESTAMP_SECONDS
,TIMESTAMP_MILLIS
,TIMESTAMP_MICROS
zum Beispiel, vorausgesetzt, Ihr h.visitStartTime ist Mikrosekunden seit der unix-Epoche
visitStartTime
ist in Sekunden seit Epoche eigentlich (https://support.google.com/analytics/answer/3437719?hl=en
) aber ja, das funktioniert!Mit standard sql, die Sie verwenden können, einer von denen, je nach Präzision:
DATE_FROM_UNIX_DATE
- von den Tagen der Epoche DatumTIMESTAMP_SECONDS
- von-Sekunden-Epoche timestampTIMESTAMP_MILLIS
- Millisekunden-Epoche timestampTIMESTAMP_MICROS
- von Mikro-Epoche timestampDokumentation ist hier zu sehen: https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#timestamp_seconds
Mit legacy sql können Sie einfach
TIMESTAMP
Funktion und multiplizieren oder dividieren Sie durch 1000, um es für erforderlich, Epoche, Typ: