【问题标题】:How can we change the datatype of a column using standard SQL in bigquery?我们如何在 bigquery 中使用标准 SQL 更改列的数据类型?
【发布时间】:2019-07-09 19:36:49
【问题描述】:

我知道这可能很愚蠢,但没有一个旧案例适合我。 'CAST' 方法也没有。

我正在尝试运行以下查询,但出现以下错误:

SELECT
  P.date,
  P.campaign_id,
  P.ad_name,
  P.impressions,
  P.clicks,
  P.spend,
  P.NOM_ENSEMBLE,
  P.CODE_ENSEMBLE_IMMO,
  F.FREQUENTATION_CENTRE
FROM
  `project.digital.fb_data` AS P
JOIN
  `project.digital.freq_data` AS F
ON
  (P.date = F.JOUR AND P.CODE_ENSEMBLE_IMMO=F.CODE_ENSEMBLE_IMMO)

错误:

Error: No matching signature for operator = for argument types: DATE, STRING. Supported signatures: ANY = ANY at [16:4]

【问题讨论】:

  • 您能否尝试:P.date = cast(F.JOUR as date) 在 ON 部分而不是 P.date = F.JOUR... t 说明您尝试过哪一种。也许这个你以前没有尝试过,它可能会起作用。

标签: mysql sql database google-bigquery data-analysis


【解决方案1】:

以下是 BigQuery 标准 SQL

第一个查询是重现/演示您的问题的简化查询

#standardSQL
WITH `project.digital.fb_data` AS (
  SELECT DATE '2019-02-15' `date`, 1 CODE_ENSEMBLE_IMMO 
),  `project.digital.freq_data` AS (
  SELECT '02-15-2019' JOUR, 1 CODE_ENSEMBLE_IMMO, 'zzz' FREQUENTATION_CENTRE
)
SELECT
  P.date,
  P.CODE_ENSEMBLE_IMMO,
  F.FREQUENTATION_CENTRE
FROM `project.digital.fb_data` AS P
JOIN `project.digital.freq_data` AS F
ON P.date = F.JOUR 
AND P.CODE_ENSEMBLE_IMMO=F.CODE_ENSEMBLE_IMMO   

结果

Error: No matching signature for operator = for argument types: DATE, STRING. Supported signatures: ANY = ANY at [13:4]  

下面的查询演示了如何解决上述问题

#standardSQL
WITH `project.digital.fb_data` AS (
  SELECT DATE '2019-02-15' `date`, 1 CODE_ENSEMBLE_IMMO 
),  `project.digital.freq_data` AS (
  SELECT '02-15-2019' JOUR, 1 CODE_ENSEMBLE_IMMO, 'zzz' FREQUENTATION_CENTRE
)
SELECT
  P.date,
  P.CODE_ENSEMBLE_IMMO,
  F.FREQUENTATION_CENTRE
FROM `project.digital.fb_data` AS P
JOIN `project.digital.freq_data` AS F
ON P.date = PARSE_DATE('%m-%d-%Y', F.JOUR)
AND P.CODE_ENSEMBLE_IMMO=F.CODE_ENSEMBLE_IMMO   

结果

Row date        CODE_ENSEMBLE_IMMO  FREQUENTATION_CENTRE     
1   2019-02-15  1                   zzz       

注意:您的F.JOUR 可以使用与上述示例不同的格式 - 因此请查看PARSE_DATE 函数以了解如何处理其他supported formats

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 2016-11-23
    • 2018-09-10
    • 2022-01-07
    • 2010-10-12
    相关资源
    最近更新 更多