需要有关在Big Query中运行多个查询的帮助

时间:2019-07-10 14:52:58

标签: sql google-bigquery

我有一些查询想以顺序方式运行。是否可以在“大查询”中的一个预定查询下预定多个查询?谢谢

CONCEPT PICTURE tack.imgur.com/flUN4.jpg

3 个答案:

答案 0 :(得分:1)

如果您不需要所有中间表,仅对最终输出感兴趣,请考虑使用CTE。

NULL

您可以根据需要将所有这些链接在一起。

如果确实需要实现所有这些中间表,那么您将尝试使用ETL和编排工具(with first as ( select *, current_date() as todays_date from <table1> ), second as ( select current_date(), concat(field1,field2) as new_field, count(*) as ct from first group by 1,2 ) select * from second dbt等),或者需要编写自定义脚本来依次执行多个命令

答案 1 :(得分:0)

目前还不是,但是4月份Google Cloud Next宣布了一个BigQuery中的脚本支持Alpha程序。您可以遵循relevant feature request for updates。同时,您可以考虑使用Cloud Composer执行多个顺序查询,或者使用App Engine cron和一些代码来定期执行顺序执行。

答案 2 :(得分:0)

我不确定100%是否是您要的内容,但我有信心您不需要为此编排很多查询。使用INSERT...SELECT语法可能很简单,如下所示:

INSERT INTO
  YourDataset.AdServer_Refine
SELECT
  Placement_ExtID,
  COALESCE(m.New_Ids,a.Placement_ExtID) AS New_Ids,
  m.Labels,
  CONCAT(Date," - ",New_Ids) AS Concatenated,
  a.Placement_strategy,
  a.Campaign_Id,
  a.Campaign,
  a.Cost,
  a.Impressions,
  a.Clicks,
  a.C_Date AS Current_date,
  a.Date
FROM
  YourDataset.AdServer AS a
  LEFT JOIN
  YourDataset.Matching AS m
  USING(Placement_ExtID)
WHERE
  a.Date = CURRENT_DATE()

这将插入查询的SELECT部分输出的所有行(您可以通过运行SELECT轻松地测试输出)。

另一种选择是创建一个计划查询,该查询将从上面查询的SELECT部分​​输出到所需的表。

如果这没有达到您的期望,请澄清问题并发表评论,我很乐意尝试完善答案。