BigQuery: извлечение месяца от даты (тип STRING) в SQL - PullRequest
0 голосов
/ 01 марта 2020

Я подключил свой аккаунт GA к Bigquery.

Теперь я пытаюсь сгруппировать в месяц все посещения.

Но я получаю:

EXTRACT does not support arguments of type: STRING at [2:3] 

Поскольку мой столбец даты имеет тип STRING.

SELECT
      EXTRACT(DATE_TIME_PART FROM date) AS Month, SUM(totals.visits) as totalVisits, 
    FROM
      `xxxx.yyyy.ga_sessions_20*`
    GROUP BY date

Я пытался CAST это до даты:

SELECT
  EXTRACT(DATE_TIME_PART FROM CAST(date AS date)) AS Month, SUM(totals.visits) as totalVisits, 
FROM
  `xxx-yyyy.ga_sessions_20*`
GROUP BY date 

Получение:

Требуется действительное имя части даты, но найдено DATE_TIME_PART в [2:11] Подробнее о функциях BigQuery SQL.

Что это значит?

Ожидаемый результат:

| year | month    | total_visits |
|:----:|----------|--------------|
| 2019 |  january | 162626       |
| 2019 | february | 599562       |

ОБНОВЛЕНИЕ 1:

SELECT
 FORMAT_DATE(CAST(date AS date), '%B'), SUM(totals.visits) as totalVisits, 
FROM
  `xxx.yyyy.ga_sessions_20*`
GROUP BY date 

Дает ошибку:

No matching signature for function FORMAT_DATE for argument types: DATE, STRING. Supported signature: FORMAT_DATE(STRING, DATE) at [2:2]

Ответы [ 2 ]

2 голосов
/ 01 марта 2020

Ниже для BigQuery Standard SQL

#standardSQL
SELECT
 FORMAT_DATE('%Y', PARSE_DATE('%Y%m%d', date)) AS year, 
 FORMAT_DATE('%B', PARSE_DATE('%Y%m%d', date)) AS month, 
 SUM(totals.visits) AS totalVisits, 
FROM 
 `xxx.yyyy.ga_sessions_20*`
GROUP BY year, month 
0 голосов
/ 01 марта 2020

Если вам нужно число, то правильный синтаксис:

SELECT EXTRACT(MONTH FROM CAST(date AS date)) AS Month

Если вам нужно полное имя, используйте FORMAT():

SELECT FORMAT_DATE(CAST(date AS date), '%B')

Я бы порекомендовал вам также указать год.

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