在标准 SQL Bigquery 中导出数据:EXPORT DATA 语句无法引用查询中的元表
Export Data in Standard SQL Bigquery : EXPORT DATA statement cannot reference meta tables in the queries
我想在标准查询中使用 EXPORT DATA 将数据导出到 csv 并将其保存到 Google 存储。它将被保存为计划查询。然后,我根据昨天的日期将 table 后缀设置为动态。不幸的是,Bigquery 不允许使用 _TABLE_SUFFIX 并导致警告
"EXPORT DATA statement cannot reference meta tables in the queries."
这可能意味着我应该使用静态 table 名称。但是,在这种情况下,我只能使用 table 名称并根据昨天的日期更改名称。
你知道如何解决这个问题吗?谢谢。
EXPORT DATA OPTIONS(
uri=CONCAT('gs://my_data//table1_', CONCAT(FORMAT_DATE("%Y%m%d",CURRENT_DATE()-1),'*.csv')),
format='CSV',
overwrite=true,
header=true,
field_delimiter=',') AS
SELECT *
FROM `mybigquery.123456.ga_sessions_*`
WHERE
_TABLE_SUFFIX = FORMAT_DATE("%Y%m%d",CURRENT_DATE()-1)
我将查询分为 2 个作业。第一项工作是 运行 查询并将其保存到 table。第二项工作是将 table 导出到 GCS。所有这些都可以使用计划查询来完成。
第一份工作
SELECT *
FROM `mybigquery.123456.ga_sessions_*`
WHERE
_TABLE_SUFFIX = FORMAT_DATE("%Y%m%d",CURRENT_DATE()-1)
然后,安排它创建一个名为 table1 的新 table。
第二份工作
EXPORT DATA OPTIONS(
uri=CONCAT('gs://my_data//table1_', CONCAT(FORMAT_DATE("%Y%m%d",CURRENT_DATE()-1),'*.csv')),
format='CSV',
overwrite=true,
header=true,
field_delimiter=',') AS
SELECT *
FROM `mybigquery.123456.table1`
这也可以使用临时 table 解决,如下所示:
CREATE TEMP TABLE ga_temp AS
(SELECT hits.*
FROM
`project-id.1234567.ga_sessions_*`,
UNNEST(hits) AS hits);
EXPORT DATA OPTIONS(uri='gs://folder1-sftp/folder2/activities_online_base_2021-11-19_*.csv',
format='CSV',
overwrite=true,
header=False) AS
SELECT * from ga_temp
只是不要忘记设置一些时间限制,GA table 庞大且昂贵。
我想在标准查询中使用 EXPORT DATA 将数据导出到 csv 并将其保存到 Google 存储。它将被保存为计划查询。然后,我根据昨天的日期将 table 后缀设置为动态。不幸的是,Bigquery 不允许使用 _TABLE_SUFFIX 并导致警告
"EXPORT DATA statement cannot reference meta tables in the queries."
这可能意味着我应该使用静态 table 名称。但是,在这种情况下,我只能使用 table 名称并根据昨天的日期更改名称。 你知道如何解决这个问题吗?谢谢。
EXPORT DATA OPTIONS(
uri=CONCAT('gs://my_data//table1_', CONCAT(FORMAT_DATE("%Y%m%d",CURRENT_DATE()-1),'*.csv')),
format='CSV',
overwrite=true,
header=true,
field_delimiter=',') AS
SELECT *
FROM `mybigquery.123456.ga_sessions_*`
WHERE
_TABLE_SUFFIX = FORMAT_DATE("%Y%m%d",CURRENT_DATE()-1)
我将查询分为 2 个作业。第一项工作是 运行 查询并将其保存到 table。第二项工作是将 table 导出到 GCS。所有这些都可以使用计划查询来完成。
第一份工作
SELECT *
FROM `mybigquery.123456.ga_sessions_*`
WHERE
_TABLE_SUFFIX = FORMAT_DATE("%Y%m%d",CURRENT_DATE()-1)
然后,安排它创建一个名为 table1 的新 table。
第二份工作
EXPORT DATA OPTIONS(
uri=CONCAT('gs://my_data//table1_', CONCAT(FORMAT_DATE("%Y%m%d",CURRENT_DATE()-1),'*.csv')),
format='CSV',
overwrite=true,
header=true,
field_delimiter=',') AS
SELECT *
FROM `mybigquery.123456.table1`
这也可以使用临时 table 解决,如下所示:
CREATE TEMP TABLE ga_temp AS
(SELECT hits.*
FROM
`project-id.1234567.ga_sessions_*`,
UNNEST(hits) AS hits);
EXPORT DATA OPTIONS(uri='gs://folder1-sftp/folder2/activities_online_base_2021-11-19_*.csv',
format='CSV',
overwrite=true,
header=False) AS
SELECT * from ga_temp
只是不要忘记设置一些时间限制,GA table 庞大且昂贵。