sql—使用不同的阈值多次选择同一列,然后合并结果(在google大查询视图中)

slwdgvem  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(334)

我在表x中有几个阈值(.1,.2,.005)。在表y中,我有一个预测分数(例如.14)。我想在bigquery中创建一个视图,将查询表y的结果合并n次(n=表x中的条目数)。i、 就像一个充满活力的联盟。在大查询中,视图中不能有变量声明或脚本。
如果我知道只有三个价值观,我会这样做:

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

不幸的是,我需要动态地使用其中的值作为阈值,并且不知道有多少(因此是表x)。在这个简单的示例中,原因并不明显,但我确实需要创建这三组行。因为我也在基于列和阈值(以及其他未显示的变量)的值进行转换,所以每一行的值在这里未显示的列中都是唯一的。

ipakzgxi

ipakzgxi1#

下面是bigquery标准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

相关问题