在时间戳上使用 SQL 中的 coalese 提取小时
Extracting hour by using coalese in SQL on a timestamp
我正在尝试更新查询以从时间戳中提取小时,但我一直收到错误。我得到的错误是由于我使用的 FROM 子句。
SELECT
analytics_platform_data_type
, activity_date_pt
, activity_timestamp_pt
, analytics_platform_timestamp_utc
, analytics_platform_timestamp_utc_iso
--This is the clause that is causing the problem (Begin)
, extract(hour from coalesce(activity_timestamp_pt)) as latd_hour_pt
--Clause above is the issue; Line above is line 9 (End)
, analytics_platform_ platform
, ad_channel_name
, publisher_name
, ip_address
, analytics_platform_unique_activity_id
, click_id
, latd_custom_fields
FROM table_date_range([AllData_AnalyticsMobileData_], timestamp('2018-09-
25'), timestamp('2018-09-27'))
where 1=1
and analytics_platform_data_type = 'CLICK'
and partner_name = 'ABC123'
如果我删除提取小时部分,查询工作正常。当我添加它时,出现错误:Encountered " "FROM" "from "" at line 9, column 16. Was expecting: ")" ...
我已经看到我在之前使用的上述查询中尝试使用的子句,但它是一个使用子查询的更复杂的查询。真的不确定是什么问题。 (使用 Google Big Query Legacy SQL)
您的查询混合了旧语法(table_date_range)和标准语法(提取)
如果出于某种原因您需要坚持使用 Legacy SQL - 使用 HOUR()
而不是 EXTRACT()
但强烈建议将内容迁移到标准 SQL - 您应该使用 wildcard functions
而不是 table_date_range
类似于
FROM `project.dataset.AllData_AnalyticsMobileData_*`
WHERE _TABLE_SUFFIX BETWEEN '2018-09-25' AND '2018-09-27'
在 https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql#table_decorators_and_wildcard_functions in Migrating to Standard SQL 文档中查看更多内容
我正在尝试更新查询以从时间戳中提取小时,但我一直收到错误。我得到的错误是由于我使用的 FROM 子句。
SELECT
analytics_platform_data_type
, activity_date_pt
, activity_timestamp_pt
, analytics_platform_timestamp_utc
, analytics_platform_timestamp_utc_iso
--This is the clause that is causing the problem (Begin)
, extract(hour from coalesce(activity_timestamp_pt)) as latd_hour_pt
--Clause above is the issue; Line above is line 9 (End)
, analytics_platform_ platform
, ad_channel_name
, publisher_name
, ip_address
, analytics_platform_unique_activity_id
, click_id
, latd_custom_fields
FROM table_date_range([AllData_AnalyticsMobileData_], timestamp('2018-09-
25'), timestamp('2018-09-27'))
where 1=1
and analytics_platform_data_type = 'CLICK'
and partner_name = 'ABC123'
如果我删除提取小时部分,查询工作正常。当我添加它时,出现错误:Encountered " "FROM" "from "" at line 9, column 16. Was expecting: ")" ...
我已经看到我在之前使用的上述查询中尝试使用的子句,但它是一个使用子查询的更复杂的查询。真的不确定是什么问题。 (使用 Google Big Query Legacy SQL)
您的查询混合了旧语法(table_date_range)和标准语法(提取)
如果出于某种原因您需要坚持使用 Legacy SQL - 使用 HOUR()
而不是 EXTRACT()
但强烈建议将内容迁移到标准 SQL - 您应该使用 wildcard functions
而不是 table_date_range
类似于
FROM `project.dataset.AllData_AnalyticsMobileData_*`
WHERE _TABLE_SUFFIX BETWEEN '2018-09-25' AND '2018-09-27'
在 https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql#table_decorators_and_wildcard_functions in Migrating to Standard SQL 文档中查看更多内容