لتحويل القيمة الزمنية من نوع INT64 (epoch) إلى TIMESTAMP في BigQuery، يمكنك استخدام وظيفة TIMESTAMP_SECONDS(). يمكنك تطبيق هذه الوظيفة على حقل visitStartTime في الجدول الرئيسي لتحويل القيمة إلى TIMESTAMP، بحيث يمكنك استخدامها في العملية JOIN مع الجدول الثاني الذي يحتوي على الTIMESTAMPs مباشرة.
وبناءً على ذلك، يمكن تعديل الاستعلام كالتالي:
sqlSELECT *
FROM main_table h
INNER JOIN
test.delay_pairs d
ON
TIMESTAMP_SECONDS(d.interval_start_time_utc) < TIMESTAMP_SECONDS(h.visitStartTime)
AND TIMESTAMP_SECONDS(h.visitStartTime) < TIMESTAMP_SECONDS(d.interval_end_time_utc)
بهذا التعديل، يتم تحويل قيمة visitStartTime من نوع INT64 إلى TIMESTAMP قبل المقارنة مع interval_start_time_utc و interval_end_time_utc.
المزيد من المعلومات
في لغة الاستعلام SQL القياسية في BigQuery، يجب أن تتم مطابقة أنواع البيانات عند استخدام العوامل المنطقية مثل <
بين الحقول. في الاستعلام الذي قدمته، h.visitStartTime
هو من نوع INT64 (epoch) بينما d.interval_start_time_utc
و d.interval_end_time_utc
هما من نوع TIMESTAMP. لذا، تحتاج إلى تحويل قيمة h.visitStartTime
إلى TIMESTAMP ليتمكن BigQuery من المقارنة بشكل صحيح.
يمكنك استخدام وظيفة TIMESTAMP_SECONDS()
لتحويل قيمة INT64 (epoch) إلى TIMESTAMP. تقوم هذه الوظيفة بتحويل العدد الصحيح (الثواني من epoch) إلى TIMESTAMP. لذا، يمكنك تعديل الجزء الذي يتضمن h.visitStartTime
في الاستعلام ليصبح كالتالي:
sqlTIMESTAMP_SECONDS(h.visitStartTime)
بهذا التعديل، يمكنك استخدام TIMESTAMP_SECONDS()
لتحويل قيمة h.visitStartTime
إلى TIMESTAMP قبل المقارنة بين الجدولين.