#google-bigquery
# #google-bigquery
Вопрос:
Я создал запрос для изменения типа данных Date
столбца с String
на Date
используемый запрос следующий:
SELECT *, CAST(Date AS DATE) From `table_name`
Однако при выполнении запроса я получаю следующую ошибку:
Недопустимая дата: ’18/11/2020′
Может ли кто-нибудь помочь мне с этим?
Ответ №1:
Вместо этого используйте PARSE_DATE:
SELECT
* EXCEPT (Date),
PARSE_DATE('%d/%m/%Y', Date) AS Date
From table_name
или
SELECT
Account,
Campaign_name,
PARSE_DATE('%d/%m/%Y', Date) AS Date,
Ad_set_name,
Ad_name,
Impressions,
Cost__GBP_,
Link_clicks,
Reach,
Website_conversions
From table_name
Комментарии:
1. ПРИВЕТ, я использовал предложенный вами запрос, но я получил следующую ошибку: несоответствие между символом формата ‘/’ и строковым символом ‘2’
2. Привет, вероятно, не все строки имеют формат
18/11/2020
. Попробуйте использоватьSAFE.PARSE_DATE
вместо этого. Для не проанализированных строк будет выдано значение NULL. Таким образом, вы сможете находить и исправлять такие строки.3. ПРИВЕТ, я использовал ваш запрос, но создаю дополнительный столбец с именем f0 вместо перезаписи существующего поля «Дата» из строки в тип данных даты. Есть ли у вас какие-либо предложения о том, как сохранить одинаковое количество столбцов и перезаписать существующую схему поля даты?
4. Схема здесь: СТРОКА учетной записи, ОБНУЛЯЕМАЯ СТРОКА имя_кампании, ОБНУЛЯЕМАЯ СТРОКА даты, ОБНУЛЯЕМАЯ СТРОКА ИМЯ_РЕКЛАМЫ, ОБНУЛЯЕМАЯ СТРОКА ИМЯ_РЕКЛАМЫ, ОБНУЛЯЕМАЯ СТРОКА показов, ОБНУЛЯЕМАЯ ЦЕЛАЯ стоимость__GBP_ ОБНУЛЯЕМАЯ с ПЛАВАЮЩЕЙ ЗАПЯТОЙ Link_clicks ОБНУЛЯЕМАЯ с ПЛАВАЮЩЕЙ ЗАПЯТОЙ Reach ОБНУЛЯЕМАЯ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ Website_conversions ОБНУЛЯЕМАЯ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ f0_ ОБНУЛЯЕМАЯ ДАТА
5. Попробуйте явно ИСКЛЮЧИТЬ или перечислить все необходимые поля. Обновлен ответ.
Ответ №2:
Приведение строки к дате в стандартном SQL в BigQuery должно выполняться для строки в формате ГГГГ-ММ-ДД в соответствии с документацией.
Ваша строка находится в другом формате и не может быть преобразована функцией приведения.
Попробуйте функцию PARSE_DATE в BigQuery. Пример будет проанализирован следующим образом:
SELECT PARSE_DATE("%d/%m/%Y", "18/11/2020") as parsed;