您好,专家们-
反正是在impala中将整个表的null替换为零吗? 到目前为止,我只发现合并或大小写-何时,这使我可以逐列更改..但是我表中有210多个列,因此我在寻找更有效的方法。 >
选择粗线(table1.column1,0) 从table1
谢谢!
答案 0 :(得分:0)
如果一个人需要替换200列中的NA而不输入200次以上的def isValid(str):
if not str.regex_match("^[0-9]{3}-[AEIOU]{3}-[0-9]{3}-[AEIOU]{3}$"):
return false
return str[0..2] != str[8..10]
and str[4..6] != str[12..14]
and str[0..2] != "000"
and str[8..10] != "000"
,这并不能回答这个普遍问题。
但是我可以从您的个人资料中看到您可能使用R。我也遇到同样的问题:我需要用200列替换表中的NA。
我的解决方案是将implyr与R配合使用。
COALESCE(table1.column1,0)
您还可以根据需要# libraries
library(pacman)
p_load(implyr
,odbc
,tidyverse
)
# connect to database
con <- src_impala(drv = odbc::odbc(),
HOST="host.xxx.x",
PORT=12345,
...)
# connect to table
table1 <- tbl(con,table1)
# get columns with I want to replace NAs in, in my case it's numeric tables
numeric_columns_to_replace_NAs <- table1 %>%
select_if(is.numeric) %>%
colnames
# the command which replaces all NAs with 0's
query <- table1 %>%
mutate_at(.vars = vars(numeric_columns_to_replace_NAs),
.funs = funs(coalesce(.,0)))
# run command - this will print to the console
query
或compute()
(请参见docs)
如果您需要在蜂巢中进行查询,则可以通过以下方式提取代码:
collect()