Google data studio для предоставления отчетов и информационной панели в зависимости от организации - PullRequest
0 голосов
/ 14 июня 2019

Мы - компания, основанная на SaaS. Мы изучаем возможность использования студии данных Google для предоставления отчетов и информационной панели нашим пользователям (принадлежащим организациям). У нас есть наши данные в BigQuery. Наша задача - нам нужно показать отчет о нашем веб-приложении в соответствии с идентификатором зарегистрированного пользователя. Итак, нужно иметь фильтр. Мы не можем создать отчет и встроить ссылку, так как мы не можем применить предварительный фильтр (зарегистрированный в органе пользователя) в этом случае, и он должен применяться динамически. Итак, другой вариант, кажется, написание собственного пользовательского соединителя данных. На высоком уровне я понимаю, что мне нужно создать соединитель данных, связать его с biqquery, Id шаблона отчета и params (в нашем случае org Id). Но не в состоянии действительно выполнить это. Любое направление или пример действительно помогут.

Спасибо.

1 Ответ

0 голосов
/ 14 июня 2019

Нам нужно показать отчет в нашем веб-приложении согласно зарегистрированному идентификатору организации ...
Любое направление или пример действительно помогут.

Ниже упрощенный пример для BigQuery Standard SQL

Предположим, у вас есть таблица отчетов, как показано ниже - поле метрик имитирует ваши фактические поля отчета, а org_id должен определить, для какого пользователя включить эту строку вreport

`project.dataset.table` AS (
  SELECT 1 metrics, 1 org_id UNION ALL
  SELECT 2, 2 UNION ALL
  SELECT 3, 3
)

Имея выше, вы хотите иметь возможность выполнять запрос ниже, но возвращать только строки, назначенные зарегистрированному пользователю (с определенным идентификатором org_id)

SELECT metrics
FROM `project.dataset.table`

Для этого вам нужноиметь мета-таблицу, в которой будет размещено отображение между org_id и соответствующей учетной записью пользователя, используемой в GCP как

`project.dataset.users` AS (
  SELECT 1 org_id, 'user1@gmail.com' user UNION ALL
  SELECT 2, 'user2@gmail.com' UNION ALL
  SELECT 3, 'user3@gmail.com' 
)

Итак, теперь вы можете запустить запрос ниже вместо оригинального

#standardSQL
SELECT t.* EXCEPT(org_id)
FROM `project.dataset.table` t
JOIN `project.dataset.users` USING(org_id)
WHERE LOWER(user) = LOWER(SESSION_USER())   

Как вы можетеожидайте, что результат этого запроса будет зависеть от того, какой пользователь запускает его

Например, для user2@gmail.com - вывод будет

Row metrics  
1   2       

while, для user4@gmail.com -вывод

Row metrics  
Query returned zero records.   

Для простоты я опускаю template_id - но вы можете легко добавить его в изображение

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