我在# random sampling of one location
ori <- data.frame(spsample(x = grid, n= 1, type = 'random'))
# select randomly 20 distances between 0 and 2
n.point <- 20
h <- rnorm(n.point, 1:2)
# empty dataframe
dxy <- data.frame(matrix(nrow=n.point, ncol=2))
# take a random angle from the randomly selected location and make a dataframe of the new distances from the original sampling points, in a random direction
angle <- runif(n = n.point,min=0,max=2*pi)
dxy[,1]= h*sin(angle)
dxy[,2]= h*cos(angle)
cluster <- data.frame(x=rep(NA, 20), y=rep(NA, 20))
cluster$x <- ori$coords.x1 + dxy$X1
cluster$y <- ori$coords.x2 + dxy$X2
# make a spatial object and plot
coordinates(cluster)<- ~ x+y
plot(grid)
plot(cluster, add=T, col='green')
plot(random.pt, add=T, col= 'red')
plot(regular.pt, add=T, col= 'blue')
中有两个表表A 和表B 。
表A有两列-名称(字符串)和值(浮点数)。 “名称”列可以包含空值。
表B具有3列-起始值(浮点数),结束值(浮点数)和名称(字符串)。这三列将不留任何空白。
我的目标是为名称为空的行更新表A。逻辑基本上是确定 name 为空的值,然后在表B中找到对应的行,其中
Bigquery
这样,我必须在单个查询中更新表A中的所有行。我该如何实现?
注意:表A中的两行都不会相同。
答案 0 :(得分:1)
UPDATE `project.dataset.tableA` a
SET a.name = b.name
FROM `project.dataset.tableB` b
WHERE a.name IS NULL
AND value BETWEEN start_value AND end_value
答案 1 :(得分:0)
在这里,您的代码对我而言是完美的:
UPDATE `project.dataset.tableA` a
SET a.name = (
SELECT b.name
FROM `project.dataset.tableB` b
WHERE value BETWEEN start_value AND end_value)
WHERE a.name IS NULL