Closed
Description
Currently, simple row_number()
queries (commonly used to filter/order by groups on remote tables) fail on Snowflake:
library(dplyr)
library(dbplyr)
mf <- lazy_frame(x = c(1:5), y = c(rep("A", 2), rep("A", 3)), con = simulate_snowflake())
mf %>%
mutate(rown = row_number())
#> <SQL>
#> SELECT `df`.*, ROW_NUMBER() OVER () AS `rown`
#> FROM `df`
mf %>%
filter(row_number() == 1)
#> <SQL>
#> SELECT `x`, `y`
#> FROM (
#> SELECT `df`.*, ROW_NUMBER() OVER () AS `col01`
#> FROM `df`
#> ) AS `q01`
#> WHERE (`col01` = 1.0)
Created on 2023-07-08 with reprex v2.0.2
On a live database:
> mf %>%
+ filter(row_number() == 1)
Error in `collect()`:
! Failed to collect lazy table.
Caused by error:
! nanodbc/nanodbc.cpp:1526: 00000: SQL compilation error:
Window function type [ROW_NUMBER] requires ORDER BY in window specification.
Metadata
Metadata
Assignees
Labels
No labels