google-bigquery - google datastudio 中关于使用自定义查询的错误
问题描述
我正在使用一个简单的 sql 语句块在大查询中执行并返回一组结果,这在大查询中工作正常并获得结果,我需要将此数据导出到数据工作室,所以在数据工作室中我使用 bigquery作为连接器并选择项目和自定义查询,并在其中粘贴以下内容:
Declare metricType String;
SET metricType="compute.googleapis.com/instance/cpu/utilization";
BEGIN
IF (metricType="compute.googleapis.com/instance/cpu/usage_time")
THEN
SELECT m.value as InstanceName,metric.type as metricType,point.value.double_value as usagetime,point.interval.start_time as StartTime,point.interval.end_time as EndTime,h.value as instance_id FROM `myproject.metric_export.sd_metrics_export_fin`, unnest(resource.labels) as h,unnest(metric.labels) as m where metric.type='compute.googleapis.com/instance/cpu/usage_time' and h.key="project_id";
ELSE IF (metricType="compute.googleapis.com/instance/cpu/utilization")
THEN
SELECT m.value as InstanceName,metric.type as metricType,point.value.double_value as utilizationrate,point.interval.start_time as
StartTime,point.interval.end_time as EndTime,h.value as instance_id FROM `myproject-.metric_export.sd_metrics_export_fin`,unnest(resource.labels) as h,unnest(metric.labels) as m where metric.type='compute.googleapis.com/instance/cpu/utilization' and h.key="project_id";
END IF;
END IF;
END;
但点击“添加”按钮后,我收到以下错误:
我不确定这个错误是关于什么的?我没有使用任何存储过程,我只是将其粘贴为自定义查询。
此外,如果我尝试将 BigQuery 的结果保存到 Bigquery 控制台结果窗格中的视图中,则会出现错误,
Syntax error: Unexpected keyword DECLARE at [1:1]
我对 datastudio 和 bigquery 都非常陌生。请帮忙谢谢
解决方案
首先,我想对您的查询做一些考虑。您正在使用脚本来在查询中声明和创建循环。但是,由于您metricsType
在查询的开头声明并设置了,它永远不会进入第一个IF
。发生这种情况是因为该值已设置并且它没有循环任何内容。
我建议您CASE WHEN
改用,如下所示:
SELECT m.value as InstanceName,metric.type as metricType,
CASE WHEN metric.type = @parameter THEN point.value.double_value ELSE 0 END AS usagetime,
CASE WHEN metric.type = @parameter THEN point.value.double_value ELSE 0 END AS utilizationrate,
point.interval.start_time as StartTime,point.interval.end_time as EndTime,h.value as instance_id
FROM `myproject.metric_export.sd_metrics_export_fin`, unnest(resource.labels) as h,unnest(metric.labels) as m
WHERE metric.type=@parameter and h.key="project_id";
请注意,我使用的是参数化查询的概念。此外,由于这个原因,此查询在控制台中不起作用。此外,请注意,当您将 设置为@parameter
时"compute.googleapis.com/instance/cpu/utilization"
,它将有一个带有 的非空列usagetime
和一个名为的空utilizationrate
列。
其次,为了在 DataStudio 中添加新的数据源,您可以按照文档中的本教程进行操作。之后,选择New Report,点击BigQuery Connector > Custom Query > Write your Project id,您需要点击ADD PARAMETER(在查询编辑器下方)。在上面的查询中,我会添加:
- 名称: 参数
- 显示名称: 参数
- 数据类型: 文本
- 默认值:留空
- 选中允许在报告中修改“参数”复选框。这意味着您将能够将此参数用作过滤器并在报告中修改其值。
按照上述所有步骤,数据源将被顺利添加。
最后,我必须指出,如果您的查询在控制台中运行,您可以通过单击Save view将其保存为视图,如此处所述。
推荐阅读
- javascript - JQuery在浏览器刷新时刷新ajax数据
- javascript - 服务器端处理表分页 - 数据表或任何其他?
- r - 在 r shiny 中创建新变量 = 现有变量 + 用户输入
- vb.net - 如何通过vb.net代码解析数据链接webform。
- java - 尝试将 Java 应用程序连接到 Redshift 数据库时服务器关闭连接
- react-native - 如何在从数据库中获取数据数组时保持显示按钮等组件
- perl - perl 主程序永远等待
- java - 如何从 System.out.println() 中删除尾随空格;爪哇
- javascript - javascript在数组中的对象之间保留某些属性
- angular - 多个 Observable 订阅者