PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

postgres gera array usando janela de slide


Isso é provavelmente devido ao dbplyr não ter traduções definidas para converter na.omit ou str_count em postgresql (uma tradução para paste é provavelmente definido).

Você pode substituir str_count e na.omit verificando anteriormente os valores ausentes.
st2tm %>% 
  mutate(
    p1 = lag(pid),
    p2 = lead(pid)
  ) %>% 
  filter(!is.na(p1),
         !is.na(p2)) %>%
  mutate(g = paste(p1, ",", pid, ",", p2)) %>% 
  select(-c(p1, p2)) %>% 

E se paste é o problema que você pode substituí-lo pelo CONCAT embutido do postgresql função.
st2tm %>% 
  mutate(
    p1 = lag(pid),
    p2 = lead(pid)
  ) %>% 
  filter(!is.na(p1),
         !is.na(p2)) %>%
  mutate(g = CONCAT(p1, ",", pid, ",", p2)) %>% 
  select(-c(p1, p2)) %>% 

Porque CONCAT não for uma função R, o dbplyr irá passá-la como escrita para o postgresql ao invés de tentar traduzi-la.