Сравнение каждой строки в таблице с основной строкой - PullRequest
0 голосов
/ 05 мая 2020

У меня есть таблица Redshift с одним столбцом VARCHAR с именем «Test» и несколькими столбцами с плавающей запятой. Столбец «Тест» имеет уникальные значения, одно из них - «Контроль», другие не заданы жестко.

В таблицах ~ 10 строк (не c) и ~ 10 столбцов.

Мне нужно создать отчет Looker, который покажет исходные данные и разницу между соответствующими столбцами с плавающей запятой в «Контрольном» и других тестах. Пример ввода:

    Test | Metric_1 | Metric_2
  ---------------------------- 
  Control|    10     | 100
  A      |    12     | 120
  B      |    8      | 80

Желаемый отчет:

         | Control | A  | A-Control | B | B-Control
         |---------|----|-----------|---|-----------
Metric_1 | 10      | 12 |    2      | 8 | -2
Metric_2 | 100     | 120|    20     | 80| -20

Чтобы вычислить разницу для каждой строки с «Контрольным», я попробовал:

SELECT T.test, 
T.metric_1 - Control.metric_1 AS DIFF1,
T.metric_2 - Control.metric_2 AS DIFF2,
...
FROM T, (SELECT * FROM T WHERE test='Control') AS Control

I может выполнять часть работы в Looker (он может транспонировать), часть в SQL, но все еще не может понять, как построить этот отчет.

1 Ответ

0 голосов
/ 20 мая 2020

Вы можете транспонировать тестовое измерение, чтобы построить его часть:

         | Control | A  | B |
         |---------|----|---|
Metric_1 | 10      | 12 | 8 |
Metric_2 | 100     | 120| 80|

Затем обработайте эти результаты с помощью табличных вычислений. Вы можете использовать функции pivot_where () или pivot_index (). Например, pivot_where (test = 'A', metri c) - pivot_where (test = 'Control', metri c)

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