Выберите один и тот же столбец несколько раз с разным порогом, а затем объедините результаты (в представлении Google Big Query View) - PullRequest
0 голосов
/ 20 июня 2020

У меня есть несколько пороговых значений в таблице X (.1, .2, .005). В таблице Y у меня есть оценка прогноза (например, 0,14). Я хочу создать представление в BigQuery, которое объединяет результаты запросов к таблице Y n раз (n = количество записей в таблице X). т.е. как объединение Dynami c. В Big Query представления не могут содержать объявления переменных или сценариев.
Если бы я знал, что есть только три значения, я бы просто сделал что-то вроде этого:

Select COLUMNS, .01 as threshold from Y where prediction > .01
union all 
Select COLUMNS, .02 as threshold from Y where prediction > .02
union all
Select COLUMNS, .005 as threshold from Y where prediction > .005

К сожалению, я должен быть динамический c, значения которого я использую в качестве пороговых значений и не знаю, сколько их (таким образом, таблица X). В этом тривиальном примере не очевидно, почему, но мне нужно создать эти три набора строк. Поскольку я также делаю преобразования на основе значения столбца и порога (и других переменных, не показанных), поэтому каждая строка становится уникальной по своим значениям в столбцах, которые здесь не показаны.

1 Ответ

1 голос
/ 20 июня 2020

Ниже приведено для BigQuery Standard SQL

#standardSQL
SELECT y.*, x.threshold
FROM `project.dataset.tableY` y
JOIN `project.dataset.tableX` x
ON y.prediction > x.threshold  

Вы можете протестировать, поиграть с использованием фиктивных данных, как в примере ниже

#standardSQL
WITH `project.dataset.tableX` AS (
  SELECT 0.01 AS threshold UNION ALL
  SELECT 0.02 UNION ALL
  SELECT 0.005
), `project.dataset.tableY` AS (
  SELECT 0.014 prediction UNION ALL
  SELECT 0.023 UNION ALL
  SELECT 0.0051
)
SELECT y.*, x.threshold
FROM `project.dataset.tableY` y
JOIN `project.dataset.tableX` x
ON y.prediction > x.threshold   

с выводом

Row prediction  threshold    
1   0.014       0.01     
2   0.014       0.005    
3   0.023       0.01     
4   0.023       0.02     
5   0.023       0.005    
6   0.0051      0.005    
...