首页 > 解决方案 > 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 都非常陌生。请帮忙谢谢

标签: google-bigquerygoogle-data-studio

解决方案


首先,我想对您的查询做一些考虑。您正在使用脚本来在查询中声明和创建循环。但是,由于您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将其保存为视图,如此所述。


推荐阅读