簡體   English   中英

我們如何在 bigquery 中使用標准 SQL 更改列的數據類型?

[英]How can we change the datatype of a column using standard SQL in bigquery?

我知道這可能很愚蠢,但沒有一個舊案例適合我。 也不適用於“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]

下面是 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函數以了解如何處理其他支持的格式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM