BigQuery API: 400 Синтаксическая ошибка: ожидаемое ключевое слово JOIN, но получено ")" - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь выполнить запрос через API Python bq (в стандартном режиме SQL), но есть ошибка:

400 Синтаксическая ошибка: ожидаемое ключевое слово JOIN, но полученное ")" в [1: 621]

Это мой код:

    from google.cloud import bigquery
    import pandas as pd
    client = bigquery.Client.from_service_account_json(r'/Users/dmitrij/Desktop/api-*****.json')
    QUERY2=("select date,pagePath,prev_page_path,hits.eventInfo.eventCategory,hits.eventInfo.eventAction,hits.eventInfo.eventLabel, COUNT(CONCAT(prev_page_path,pagePath,hits.eventInfo.eventAction,hits.eventInfo.eventLabel)) as count from (SELECT hits.page.pagePath AS pagePath, LAG(hits.page.pagePath) OVER (PARTITION BY fullVisitorId, visitStartTime ORDER BY hits.hitNumber) AS prev_page_path, date, hits.eventInfo.eventCategory, hits.eventInfo.eventAction, hits.eventInfo.eventLabel FROM (TABLE_DATE_RANGE([api-open-broker.150225190.ga_sessions_], DATE_ADD(CURRENT_TIMESTAMP(), -8, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')))")
    query_job2 = client.query(QUERY2)
    df_prevp = query_job2.to_dataframe()

QUERY2 находится в устаревших синтаксисах SQL, но если поместить код до, например:

job_config = bigquery.QueryJobConfig()
job_config.use_legacy_sql = True

У меня ошибка:

400 Обнаружено "" в строке 1, столбец 621. Ожидал: ")" ...

Это QUERY2:

select date,pagePath,prev_page_path,hits.eventInfo.eventCategory,hits.eventInfo.eventAction,hits.eventInfo.eventLabel, COUNT(CONCAT(prev_page_path,pagePath,hits.eventInfo.eventAction,hits.eventInfo.eventLabel)) as count
from
(SELECT
 hits.page.pagePath AS pagePath,
 LAG(hits.page.pagePath) OVER (PARTITION BY fullVisitorId, visitStartTime ORDER BY hits.hitNumber) AS prev_page_path,
 date,
 hits.eventInfo.eventCategory,
 hits.eventInfo.eventAction,
 hits.eventInfo.eventLabel
   FROM
 (TABLE_DATE_RANGE([api-open-broker.150225190.ga_sessions_],
 DATE_ADD(CURRENT_TIMESTAMP(), -8, 'DAY'),         DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY')))
   WHERE
 hits.type="EVENT"
 AND hits.eventInfo.eventCategory LIKE "%Title_Name_Podpisat%" )
where prev_page_path is not null 
group by pagePath,prev_page_path,date,hits.eventInfo.eventCategory,hits.eventInfo.eventAction,hits.eventInfo.eventLabel

Как избежать этой ошибки?

1 Ответ

0 голосов
/ 13 января 2019

эта ошибка

400 Обнаружено "" в строке 1, столбец 621. Ожидал: ")" ...

Означает, что вы не установили ваши job_config и BQ пытается выполнить ваш запрос как стандартный sql, я ожидаю увидеть что-то вроде этого:

query_job2 = client.query(QUERY2, job_config=job_config)

Другой вариант - использовать #LegacySql в начале вашего кода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...