PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

postgres genera array utilizzando la finestra diapositiva

Ciò è probabilmente dovuto al fatto che dbplyr non ha traduzioni definite per la conversione di na.omit o str_count in postgresql (una traduzione di paste è molto probabilmente definito).

Puoi sostituire str_count e na.omit controllando prima i valori mancanti.

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 è il problema che potresti sostituirlo con il CONCAT integrato di postgresql funzione.

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)) %>% 

Perché CONCAT non è una funzione R, dbplyr la passerà come scritta a postgresql anziché tentare di tradurla.