- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 BigQuery 脚本,我编写了一个简单的 WHILE 循环,该循环遍历每日 Google Analytics 表格并对访问进行汇总,现在我想将这些结果写到一个表格中。
我已经创建了表,但无法从我的 SQL 查询中捕获 visits
的值来填充表。 Date
工作正常,因为它是在 SQL 之外定义的。我试图用一个新变量DECLARE
visits
的值,但这同样不起作用,因为它在语句之外是未知的。
SET vis = visits;
如何将结果正确写入表格?
DECLARE d DATE DEFAULT DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY);
DECLARE pfix STRING DEFAULT REGEXP_REPLACE(CAST(d AS STRING),"-","");
DECLARE vis INT64;
CREATE OR REPLACE TABLE test.looped_results (Date DATE, Visits INT64);
WHILE d > '2019-10-01' DO
SELECT d, SUM(totals.visits) AS visits
FROM `project.dataset.ga_sessions_*`
WHERE _table_suffix = pfix
GROUP BY Date;
SET d = DATE_SUB(d, INTERVAL 1 DAY);
SET vis = visits;
INSERT INTO test.looped_results VALUES (d, visits);
END WHILE;
更新:我还尝试了另一种解决方案,将访问分配给它自己的变量,但这会产生相同的错误:
WHILE d > '2019-10-01' DO
SET vis_count = (SELECT SUM(totals.visits) AS visits
FROM `mindful-agency-136314.43786551.ga_sessions_*`
WHERE _table_suffix = pfix);
INSERT INTO test.looped_results VALUES (d, vis_count);
SET d = DATE_SUB(d, INTERVAL 1 DAY);
END WHILE;
结果:
在我的结果中,我看到创建的行数正确,日期正确,但每行的 visits
值是最近一天的值。
最佳答案
我还会将 INSERT INTO
移到 WHILE
循环之外,方法是将结果收集到 result
变量中(以及其他一些小的更改)作为在下面的例子中
DECLARE d DATE DEFAULT DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY);
DECLARE pfix STRING;
DECLARE vis_count INT64;
DECLARE result ARRAY<STRUCT<vis_date DATE, vis_count INT64>> DEFAULT [];
CREATE OR REPLACE TABLE test.looped_results (Date DATE, Visits INT64);
WHILE d > '2019-10-01' DO
SET pfix = REGEXP_REPLACE(CAST(d AS STRING),"-","");
SET vis_count = (SELECT SUM(totals.visits) AS visits
FROM `project.dataset.ga_sessions_*`
WHERE _table_suffix = pfix);
SET result = ARRAY_CONCAT(result, [STRUCT(d, vis_count)]);
SET d = DATE_SUB(d, INTERVAL 1 DAY);
END WHILE;
INSERT INTO test.looped_results SELECT * FROM UNNEST(result);
注意:我希望您的示例是用于脚本学习目的,而不是用于生产,因为我们应该尽可能坚持使用基于集合的处理,这在您的情况下很容易完成
关于google-bigquery - BQ 脚本 : Writing results of a loop to a table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58267001/
我正在尝试从 Linux 命令行为 BQ 表目标运行 SQL。此 SQL 脚本将用于多个日期、客户端和 BQ 表目标,因此这需要在我的 BQ API 命令行调用中使用参数(标志 --parameter
是否可以选择每个组中版本最高的记录并将其作为物化 View 存储在bigquery中? 源表 version name value 1 a 100 1 b 200
我们的想法是使用 bq 工具向 R session 提供存储在 BigQuery 系统中的 csv 格式数据。 bq 工具的输出显示数据以及不需要的消息,例如作业状态和更新的警告消息。 是否有任何标志
我有一些高度可分区的数据,我想将其存储在 BigQuery 中,其中每个分区都有自己的表。我的问题是 BQ 是否支持我需要的 table 数量。 使用我的数据集,我每天会创建大约 2,000 个新表。
我正在使用 BQ CLI ( https://cloud.google.com/bigquery/bq-command-line-tool )。 我没有找到如何删除DAY分区数据。 例如,我有一个 D
我正在尝试在 BigQuery 中查询分区的总数并将结果存储在 mysql 表中。我这样做是为了监控目的。 #!/bin/sh query1="bq query --format=csv 'SELEC
我有一个 Python 脚本(如下所示)运行“query.txt”中的查询并将其上传到 google big query。该脚本必须每 5 分钟运行一次。第一次它做对了,但是第二次,它抛出错误“表已经
也许我弄错了:有没有办法为 tabledata.insertAll 命令自动创建目标表?如果是,请指出正确的方向。 如果不是 - 创建所需表格的最佳方法是什么?在启动时检查现有表并通过从 GCS 加载
更新 (2019-02-07):issue现已修复,因此如果您仍然遇到此问题,请尝试 gcloud components update。 在过去几个月的某个时候,我的 bq 工具停止工作了。即使是一个
我们正在为 bq.py 编写包装器并且在处理大于 100k 行的结果集时遇到了一些问题。似乎在过去这工作得很好(我们遇到了与 Google BigQuery Incomplete Query Repl
我正在使用适用于 Excel 的 BigQuery 连接器并收到以下错误消息: “请求失败:错误。您的查询完成时间过长。放弃..” 在浏览器工具中运行查询时,它会在 4 秒内返回。查询返回 ~ 70K
有没有办法在给定的时间范围内使用 bq 命令行工具列出所有作业 ID?我需要做的是遍历所有 Id 并查找是否有任何错误。 我使用 Web 界面来了解作业 ID,然后使用以下命令: bq show -j
我正在使用 Python 客户端库在 BigQuery 表中加载数据。我需要更新这些表中的一些已更改的行。但我不知道如何正确更新它们?我想要一些类似的 UPSERT 函数 - 仅当行不存在时才插入行,
我也尝试使用 bq 命令行自动生成新的每日表格 bq query \ --destination_table= \ --allow_large_results \ --noflatten_
在下表中只有两列(ts 和 transaction_id)和 3 行。我刚刚尝试根据时间戳列创建分区表,但收到错误消息。 create table myfirstdataset.partition_t
在下表中只有两列(ts 和 transaction_id)和 3 行。我刚刚尝试根据时间戳列创建分区表,但收到错误消息。 create table myfirstdataset.partition_t
我有一个查询,它生成要插入到表中的行。查询引用不同项目中的表。项目名称包括连字符(例如 abc-xyz)。当我尝试使用 bq 命令并使用 ` 将项目名称括起来时,我会收到错误,如果不这样做,我会收到错
在考虑使用 bigquery 时,我一直在测试 bq 模块。我有一个项目设置和 api 的授权。当我运行 bq shell 时,我会使用正确的项目名称正确地进入 shell,但是,当我尝试运行 mk
最近我开始在我的公司使用 BigQuery。我们使用 AWS Redshift 数据库,所以我使用 卸载到 S3管道 如 字段分隔符 ,在我用 gsutil 发送到 GCS 之后。 所以我开始加载到
google docs假设使用服务帐户的 JSON key 的路径导出环境变量 GOOGLE_APPLICATION_CREDENTIALS,gcloud 将使用它。我无法让它工作。 我的命令是: G
我是一名优秀的程序员,十分优秀!