sql >> Databáze >  >> RDS >> PostgreSQL

postgres generuje pole pomocí okna snímku

Je to pravděpodobně způsobeno tím, že dbplyr nemá definované překlady pro převod na.omit nebo str_count do postgresql (překlad pro paste je s největší pravděpodobností definováno).

str_count můžete nahradit a na.omit tím, že dříve zkontrolujete chybějící hodnoty.

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

A pokud paste je problém, který byste mohli nahradit postgresql vestavěným CONCAT funkce.

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

Protože CONCAT není funkce R, dbplyr ji předá jako zapsanou do postgresql, místo aby se ji snažil přeložit.




  1. Chyba syntaxe při emulaci uživatele vytvoření, pokud neexistuje

  2. Získejte délku hodnoty sloupce, nikoli maximální délku hodnoty

  3. Použití příznaku trasování 3226 k potlačení protokolování zálohování protokolu

  4. ActiveAndroid Před vyplnění tabulky pomocí migrace schématu