Как преобразовать запрос PostgreSQL в BigQuery?

# #postgresql #google-bigquery

Вопрос:

У меня есть легальный запрос Postgre, и мне нужно преобразовать его в скрипт BigQuery, потому что теперь все данные основаны на BQ.

 SELECT to_timestamp(call.date_time, 'YYYY-MM-DD HH24:MI:SS'::text) AS call_ts,  call.call_type AS typez,  call.jk AS call_nb_name,  call.sale_type AS cost,  call.partner AS call_partner,  call.call_state AS call_sell_status,  to_timestamp(click.event_timestamp, 'YYYY-MM-DD HH24:MI:SS'::text) AS click_ts,  click.campaign,  click.medium,  click.source,  click."OS" AS device_category,  click.event_name AS event_label,  NULL::text AS event_category,  CASE  WHEN regexp_match(click.region, 'MOSOBL'::text) IS NOT NULL THEN 'MOS'::text  WHEN regexp_match(click.region, 'LENOBL'::text) IS NOT NULL THEN 'SP'::text  ELSE NULL::text  END AS click_region,  call.city AS call_region,  click."newBuilding_name" AS click_nb_name  FROM "username"."lost_calls" call  LEFT JOIN "username"."call_track" click  ON to_timestamp(call.date_time, 'YYYY-MM-DD HH24:MI:SS'::text) gt;  to_timestamp(click.event_timestamp, 'YYYY-MM-DD HH24:MI:SS'::text) AND  to_timestamp(click.event_timestamp, 'YYYY-MM-DD HH24:MI:SS'::text) gt;  (to_timestamp(call.date_time, 'YYYY-MM-DD HH24:MI:SS'::text) - '02:00:00'::interval)  WHERE click.medium !~~ 'test%'::text  AND call.partner !~~ '%VAS%'::text  

Мне удалось переписать некоторые из них, но все равно получить нулевые результаты Вот что у меня есть сейчас

 SELECT timestamp(call.date_time) AS call_ts,  call.call_type AS typez,  call.jk AS call_nb_name,  call.sale_type AS cost,  call.partner AS call_partner,  call.call_state AS call_sell_status,  timestamp(click.event_timestamp) AS click_ts,  click.campaign,  click.medium,  click.source,  click.OS AS device_category,  click.event_name AS event_label,  NULL AS event_category,  CASE  WHEN REGEXP_CONTAINS(click.region, 'MOSOBL') IS NOT NULL THEN 'MOS'  WHEN REGEXP_CONTAINS(click.region, 'LENOBL') IS NOT NULL THEN 'SP'  ELSE NULL  END AS click_region,  call.city AS call_region,  click.newBuilding_name AS click_nb_name  FROM `myproject.dataset.lost_calls` as call  LEFT JOIN `myproject.dataset.call_track` as click  ON call.date_time gt; click.event_timestamp  AND click.event_timestamp = call.date_time  AND TIMESTAMP(click.event_timestamp) gt; TIMESTAMP_ADD(TIMESTAMP(call.date_time), interval 2 HOUR)   WHERE click.medium LIKE 'test%'  AND call.partner LIKE '%VAS%'  

Держу пари, что проблема в ЛЕВОМ СОЕДИНЕНИИ, но мой узел в sql-это не лучший способ разобраться в этом. Также нужно упомянуть, что теперь все даты уже в YYYY-MM-DD HH24:MI:SS формате, но схема говорит, что это строка

Комментарии:

1. В своем запросе Postgres вы используете !~~ то, что я интерпретирую как NOT LIKE , но вы используете LIKE в своем запросе BQ.

2. Сработал ли для вас приведенный выше комментарий? Если нет, можете ли вы предоставить полный образец данных, чтобы сообщество могло легко воспроизвести проблемы?