首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于BigQuery中先前值的调整表

基于BigQuery中先前值的调整表
EN

Stack Overflow用户
提问于 2018-04-24 18:56:09
回答 1查看 393关注 0票数 0

我有一张桌子,看上去如下:

ID,日期,x,x,国旗

1/1/16\x{e76f}2

1/16\x{e76f}\x{e76f}0

1/1/16\x{e76f}0

1/1/16\x{e 010}0

2/1/16\x{e76f}1

2/1/16\x{e76f}2

1/1/16\x{e76f}2

2-3/1/16

3/1/16\x{e76f}2

我正试图使它在上个月的X=2中填充这个标志。因此,它应该是这样的:

ID,日期,x,x,国旗

1/1/16\x{e76f}2

1/16\x{e76f}\x{e76f}0

1/1/16\x{e76f}0

1/1/16\x{e76f}2

2/1/16\x{e76f}1

2/1/16\x{e76f}2

1/1/16\x{e76f}2

2-3/1/16

3/1/16\x{e76f}2

我在SQL中使用这个:

代码语言:javascript
复制
  `select ID, date, X, flag into Work_Table from t

(
    Select  ID, date, X, flag,
            Lag(X) Over (Partition By ID Order By date Asc) As Prev into Flag_table
    From    Work_Table
) 

Update  [dbo].[Flag_table]
Set flag = 1
where prev = '2' 


UPDATE   t
Set t.flag = [dbo].[Flag_table].flag FROM T 
JOIN [dbo].[Flag_table]
 ON t.ID= [dbo].[Flag_table].ID where T.date = [dbo].[Flag_table].date`

但是,我不能在Bigquery中这样做。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-24 19:13:12

下面是用于BigQuery标准SQL的

代码语言:javascript
复制
#standardSQL
SELECT id, dt, x, 
  IF(LAG(x = 2) OVER(PARTITION BY id ORDER BY dt), 1, 0) flag
FROM `project.dataset.work_table`

您可以使用问题中的虚拟数据测试/播放它,如下所示

代码语言:javascript
复制
#standardSQL
WITH `project.dataset.work_table` AS (
  SELECT 1 id, '1/1/16' dt, 2 x, 0 flag UNION ALL
  SELECT 2, '1/1/16', 0, 0 UNION ALL
  SELECT 3, '1/1/16', 0, 0 UNION ALL
  SELECT 1, '2/1/16', 0, 0 UNION ALL
  SELECT 2, '2/1/16', 1, 0 UNION ALL
  SELECT 3, '2/1/16', 2, 0 UNION ALL
  SELECT 1, '3/1/16', 2, 0 UNION ALL
  SELECT 2, '3/1/16', 1, 0 UNION ALL
  SELECT 3, '3/1/16', 2, 0 
)
SELECT id, dt, x, 
  IF(LAG(x = 2) OVER(PARTITION BY id ORDER BY dt), 1, 0) flag
FROM `project.dataset.work_table`
ORDER BY dt, id

结果如

代码语言:javascript
复制
Row id  dt      x   flag     
1   1   1/1/16  2   0    
2   2   1/1/16  0   0    
3   3   1/1/16  0   0    
4   1   2/1/16  0   1    
5   2   2/1/16  1   0    
6   3   2/1/16  2   0    
7   1   3/1/16  2   0    
8   2   3/1/16  1   0    
9   3   3/1/16  2   1    
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50008999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档