黑斑羚 - 将整个表的 NULL 替换为零

  • 本文关键字:NULL 替换 null impala
  • 更新时间 :
  • 英文 :


嗨,专家们 -

无论如何可以将黑斑羚中整个表的 null 替换为零吗?到目前为止,我只找到了合并或案例 - 何时,这允许我逐列更改。.但我的表中有超过 210 + 列,所以如果可能的话,我正在寻找更有效的东西。.

选择合并(表1.列1,0(从表1

提前感谢!

这并不能回答一般问题,如果需要替换 200 列中的 NA 而不键入 200+ 次COALESCE(table1.column1,0)

但我可以从您的个人资料中看到您可能使用 R。我也是,我有同样的问题:我需要用 200 列替换表中的 NA。

我的解决方案是将暗示与 R 一起使用。

# 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()collect()结果(请参阅文档(

如果需要 hive 中的查询,可以通过以下方式提取代码:

# some object with the class "tbl_impala"
query_object <- query %>% 
              collapse() %>% 
              .[2]
# actual query which can be passed to hive via R. 
sql_query <- query_object[[1]]$x %>% 
           as.character()
# create new table
new_query <- paste0("CREATE TABLE table2 AS ",sql_query) %>% 
           str_replace_all(pattern = "'",replacement = '"') # this cleans up the code so it works
# if you want text without characters like n in there.
cat(sql_query)

相关内容

  • 没有找到相关文章

最新更新