diff --git a/README.md b/README.md index 9a00bd5..06ec247 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ From TidierDates.jl: Supported aggregate functions (as supported by the backend) with more to come - `mean`, `minimium`, `maximum`, `std`, `sum`, `cumsum`, `cor`, `cov`, `var` - `@summarize` supports any SQL aggregate function in addition to the list above. Simply write the function as written in SQL syntax and it will work. -- `agg_str` allows any SQL aggregate function not listed above to be used in `@mutate`. Simply write the function expression as written in SQL syntax as a string wrapped in `agg_str`, and subsequent windowing is handled by `@mutate`. +- `sql_agg` allows any SQL aggregate function not listed above to be used in `@mutate`. Simply write the function expression as written in SQL syntax as a string wrapped in `sql_agg`, and subsequent windowing is handled by `@mutate`. - `copy_to` (for DuckDB, MySQL, SQLite) DuckDB specifically enables copy_to to directly reading in `.parquet`, `.json`, `.csv`, and `.arrow` file, including https file paths. diff --git a/src/TidierDB.jl b/src/TidierDB.jl index b0fecaa..31c61d9 100644 --- a/src/TidierDB.jl +++ b/src/TidierDB.jl @@ -328,6 +328,7 @@ function connect(backend::Symbol; kwargs...) return SQLite.DB(db_path) elseif backend == :DuckDB || backend == :duckdb mem = DuckDB.open(":memory:") + set_sql_mode(:duckdb) return DuckDB.connect(mem) else throw(ArgumentError("Unsupported backend: $backend")) diff --git a/src/parsing_clickhouse.jl b/src/parsing_clickhouse.jl index 7b2e9f5..78b492e 100644 --- a/src/parsing_clickhouse.jl +++ b/src/parsing_clickhouse.jl @@ -82,9 +82,9 @@ function expr_to_sql_clickhouse(expr, sq; from_summarize::Bool) window_clause = construct_window_clause(sq) return "VAR_SAMP($(string(a))) $(window_clause)" end - elseif @capture(x, agg_str(str_)) + elseif @capture(x, sql_agg(str_)) if from_summarize - return error("agg_str is only needed with aggregate functions in @mutate") + return error("sql_agg is only needed with aggregate functions in @mutate") else window_clause = construct_window_clause(sq) return "$(str) $(window_clause)" diff --git a/src/parsing_duckdb.jl b/src/parsing_duckdb.jl index 009924b..ccbe698 100644 --- a/src/parsing_duckdb.jl +++ b/src/parsing_duckdb.jl @@ -82,9 +82,9 @@ function expr_to_sql_duckdb(expr, sq; from_summarize::Bool) window_clause = construct_window_clause(sq) return "VAR_SAMP($(string(a))) $(window_clause)" end - elseif @capture(x, agg_str(str_)) + elseif @capture(x, sql_agg(str_)) if from_summarize - return error("agg_str is only needed with aggregate functions in @mutate") + return error("sql_agg is only needed with aggregate functions in @mutate") else window_clause = construct_window_clause(sq) return "$(str) $(window_clause)" diff --git a/src/parsing_mssql.jl b/src/parsing_mssql.jl index 874db74..683b334 100644 --- a/src/parsing_mssql.jl +++ b/src/parsing_mssql.jl @@ -82,9 +82,9 @@ function expr_to_sql_mssql(expr, sq; from_summarize::Bool) window_clause = construct_window_clause(sq) return "VAR_SAMP($(string(a))) $(window_clause)" end - elseif @capture(x, agg_str(str_)) + elseif @capture(x, sql_agg(str_)) if from_summarize - return error("agg_str is only needed with aggregate functions in @mutate") + return error("sql_agg is only needed with aggregate functions in @mutate") else window_clause = construct_window_clause(sq) return "$(str) $(window_clause)" diff --git a/src/parsing_mysql.jl b/src/parsing_mysql.jl index e8042ac..92d2e97 100644 --- a/src/parsing_mysql.jl +++ b/src/parsing_mysql.jl @@ -82,9 +82,9 @@ function expr_to_sql_mysql(expr, sq; from_summarize::Bool) window_clause = construct_window_clause(sq) return "VAR_SAMP($(string(a))) $(window_clause)" end - elseif @capture(x, agg_str(str_)) + elseif @capture(x, sql_agg(str_)) if from_summarize - return error("agg_str is only needed with aggregate functions in @mutate") + return error("sql_agg is only needed with aggregate functions in @mutate") else window_clause = construct_window_clause(sq) return "$(str) $(window_clause)" diff --git a/src/parsing_postgres.jl b/src/parsing_postgres.jl index 1daeb74..4d876d7 100644 --- a/src/parsing_postgres.jl +++ b/src/parsing_postgres.jl @@ -82,9 +82,9 @@ function expr_to_sql_postgres(expr, sq; from_summarize::Bool) window_clause = construct_window_clause(sq) return "VAR_SAMP($(string(a))) $(window_clause)" end - elseif @capture(x, agg_str(str_)) + elseif @capture(x, sql_agg(str_)) if from_summarize - return error("agg_str is only needed with aggregate functions in @mutate") + return error("sql_agg is only needed with aggregate functions in @mutate") else window_clause = construct_window_clause(sq) return "$(str) $(window_clause)" diff --git a/src/parsing_sqlite.jl b/src/parsing_sqlite.jl index 43ab794..a806364 100644 --- a/src/parsing_sqlite.jl +++ b/src/parsing_sqlite.jl @@ -55,9 +55,9 @@ function expr_to_sql_lite(expr, sq; from_summarize::Bool) window_clause = construct_window_clause(sq, from_cumsum = true) return "SUM($(string(a))) $(window_clause)" end - elseif @capture(x, agg_str(str_)) + elseif @capture(x, sql_agg(str_)) if from_summarize - return error("agg_str is only needed with aggregate functions in @mutate") + return error("sql_agg is only needed with aggregate functions in @mutate") else window_clause = construct_window_clause(sq) return "$(str) $(window_clause)"