Ich habe versucht, eine meiner MSSQL-Abfragen in BigQuerys neuer SQL-Standardfunktion zu verwenden, da hierfür spezielle JOIN-Bedingungen erforderlich sind. Die Referenz enthält jedoch keine Erläuterungen zu den Datums- und Zeitfunktionen in BigQuery's Standard-SQL.Datums- und Uhrzeitfunktionen in BigQuery's Standard-SQL
Bisher konnte ich meine DATE_ADD Aussagen konvertieren aus: DATE_ADD ('2015.01.01', -13, 'Monat') zu: DATE_ADD ('2015.01.01', INTERVAL -13 MONAT)
Ich konvertierte auch YEAR (x) in EXTRACT (JAHR VON x). Beide scheinen MySQL-ähnliche Aussagen zu sein.
Schließlich habe ich bemerkt, dass die Ausgabe der meisten Datumsfunktionen mit TIMESTAMP konvertiert werden muss, bevor Sie sie vergleichen können.
Aber jetzt, dass meine Abfrage schließlich ausgeführt werden soll, erhalte ich einen "Interner Fehler". Wer weiß, was könnte falsch sein? Dies ist die Abfrage:
SELECT
M,
Bought12MBeforeM,
Bought12MBeforeAndInM,
(Bought12MBeforeAndInM * 1.0)/(Bought12MBeforeAndInM + Bought12MBeforeM) AS RepurchaseRate
FROM (
SELECT
M,
COUNT(DISTINCT CASE WHEN MaxM < TIMESTAMP(M) THEN user_id ELSE NULL END) AS Bought12MBeforeM,
COUNT(DISTINCT CASE WHEN MaxM >= TIMESTAMP(M)
AND MinM < TIMESTAMP(M) THEN user_id ELSE NULL END) AS Bought12MBeforeAndInM
FROM (
SELECT
M,
user_id,
MAX(cart_creation_date) AS MaxM,
MIN(cart_creation_date) AS MinM
FROM (
SELECT
user_id,
cart_creation_date
FROM
`vex-eu-cloud-sql-001.work_user.flat_orders`
WHERE
cart_creation_date >= TIMESTAMP(DATE_ADD('2015-01-01', INTERVAL -13 MONTH))
GROUP BY
user_id,
cart_creation_date) UniqueCarts
INNER JOIN (
SELECT
DATE(Day) AS M
FROM
`vex-custom.wouter.days_2007_2020`
WHERE
EXTRACT(YEAR
FROM
Day) >= 2015
AND EXTRACT(DAY
FROM
Day) = 1
AND Day < TIMESTAMP(CURRENT_DATE())) Months
ON
cart_creation_date > TIMESTAMP(DATE_ADD(M, INTERVAL -13 MONTH))
AND cart_creation_date < TIMESTAMP(DATE_ADD(M, INTERVAL 1 MONTH))
GROUP BY
M,
user_id) BoughtInM
GROUP BY
M) Results
Wenn Sie Job-ID liefern, ich nachschlagen kann, was die Interner Fehler –
Hallo Mosha verursacht, es ist ** vex-production: bquijob_343984cc_1545ef2e7a4 ** – Wouter
OK, ich habe die Antwort aktualisiert, nachdem ich diesen Fehler untersucht habe. –