ошибка в Google DataStudio при использовании пользовательского запроса - PullRequest
0 голосов
/ 12 июля 2020

Я использую простой sql блок операторов для выполнения и возврата набора результатов в большом запросе. Он отлично работает в большом запросе и получает результаты, мне нужно экспортировать эти данные в студию данных, поэтому в data studio я использую 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. Пожалуйста, помогите, спасибо

1 Ответ

1 голос
/ 13 июля 2020

Во-первых, я хотел бы высказать некоторые соображения по поводу вашего запроса. Вы используете Scripting , чтобы объявить и создать al oop в своем запросе. Однако, поскольку вы объявляете и устанавливаете 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 и null столбец с именем utilizationrate.

Во-вторых, чтобы добавить новый источник данных в DataStudio, вы можете следовать этому руководству из документации . После выбора Новый отчет нажмите Коннектор BigQuery > Пользовательский запрос > Напишите свой идентификатор проекта , вам нужно нажать ДОБАВИТЬ ПАРАМЕТР (под редактором запросов). В запросе выше я бы добавил:

  • Имя: параметр
  • Отображаемое имя: параметр
  • Тип данных: текст
  • Значение по умолчанию: оставьте поле пустым
  • Установите флажок Разрешить изменять "параметр" в отчетах . Это означает, что вы сможете использовать этот параметр в качестве фильтра и изменять его значение в отчетах.

После всех вышеперечисленных шагов источник данных будет добавлен плавно.

Наконец, я должен указать, что если ваш запрос был запущен в консоли, вы можете сохранить его как представление, щелкнув Сохранить представление , например, как описано здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...