Title: | R Bindings for 'GlareDB' |
---|---|
Description: | R bindings for 'GlareDB', an analytical database based on 'Apache Arrow' and 'Apache DataFusion' that can connect to various data sources and execute queries. |
Authors: | Tatsuya Shima [aut, cre] |
Maintainer: | Tatsuya Shima <[email protected]> |
License: | AGPL-3 |
Version: | 0.0.4 |
Built: | 2024-11-17 05:56:40 UTC |
Source: | https://github.com/eitsupi/r-glaredb |
GlareDB table is a class that has a struct similar to arrow::Table innerly and
can be converted from/to other classes via nanoarrow::as_nanoarrow_array_stream()
.
as_glaredb_table(x, ...) ## Default S3 method: as_glaredb_table(x, ..., schema = NULL) ## S3 method for class 'nanoarrow_array_stream' as_glaredb_table(x, ...) ## S3 method for class 'RGlareDbExecutionOutput' as_glaredb_table(x, ...)
as_glaredb_table(x, ...) ## Default S3 method: as_glaredb_table(x, ..., schema = NULL) ## S3 method for class 'nanoarrow_array_stream' as_glaredb_table(x, ...) ## S3 method for class 'RGlareDbExecutionOutput' as_glaredb_table(x, ...)
x |
An object to be coerced to a GlareDB table. |
... |
Additional arguments passed to methods. |
schema |
An optional schema used to enforce conversion to a particular
type. Defaults to |
The default method of as_glaredb_table()
calls nanoarrow::as_nanoarrow_array_stream()
internally, and all arguments are passed to it.
con <- glaredb_connect() # Create a GlareDB table from a data frame with a specified schema dat <- data.frame(a = 1:3, b = letters[1:3]) |> as_glaredb_table( schema = nanoarrow::na_struct( list( a = nanoarrow::na_int64(), b = nanoarrow::na_large_string() ) ) ) # Run an SQL query against the connection, # and convert the result to a GlareDB table glaredb_sql("SELECT * FROM dat", con) |> as_glaredb_table() # Convert the GlareDB table to an R data frame dat |> as.data.frame() # Convert the GlareDB table to an arrow Table if (requireNamespace("arrow", quietly = TRUE)) { dat |> arrow::as_arrow_table() } # Convert the GlareDB table to a polars DataFrame if (requireNamespace("polars", quietly = TRUE)) { dat |> polars::as_polars_df() }
con <- glaredb_connect() # Create a GlareDB table from a data frame with a specified schema dat <- data.frame(a = 1:3, b = letters[1:3]) |> as_glaredb_table( schema = nanoarrow::na_struct( list( a = nanoarrow::na_int64(), b = nanoarrow::na_large_string() ) ) ) # Run an SQL query against the connection, # and convert the result to a GlareDB table glaredb_sql("SELECT * FROM dat", con) |> as_glaredb_table() # Convert the GlareDB table to an R data frame dat |> as.data.frame() # Convert the GlareDB table to an arrow Table if (requireNamespace("arrow", quietly = TRUE)) { dat |> arrow::as_arrow_table() } # Convert the GlareDB table to a polars DataFrame if (requireNamespace("polars", quietly = TRUE)) { dat |> polars::as_polars_df() }
Connect to a GlareDB database
glaredb_connect( data_dir_or_cloud_url = NULL, ..., spill_path = NULL, disable_tls = FALSE, cloud_addr = "https://console.glaredb.com", location = NULL, storage_options = NULL, env = parent.frame() )
glaredb_connect( data_dir_or_cloud_url = NULL, ..., spill_path = NULL, disable_tls = FALSE, cloud_addr = "https://console.glaredb.com", location = NULL, storage_options = NULL, env = parent.frame() )
data_dir_or_cloud_url |
A character of path to a local GlareDB database or
a cloud URL or |
... |
Ignored. |
spill_path |
TODO |
disable_tls |
|
cloud_addr |
A character of a GlareDB cloud URL. |
location |
TODO |
storage_options |
Named character vector of storage options or |
env |
The connected environment, an environment class or |
GlareDB connection object
# Create a connection of in-memory database con <- glaredb_connect() # The print result shows the connected environment con # The connected environment can be accessed by `$.env` con$.env # Create a table to the database and insert data glaredb_execute("CREATE TABLE my_table (a int)", con) glaredb_execute("INSERT INTO my_table VALUES (1), (2)", con) # Query the data and assign the result to a variable res <- glaredb_sql("SELECT * FROM my_table", con) # Since the result `res` exists in the connected environment, # it can be resolved by the object name in the query exists("res", envir = con$.env) glaredb_sql("SELECT * FROM res", con) |> as_glaredb_table()
# Create a connection of in-memory database con <- glaredb_connect() # The print result shows the connected environment con # The connected environment can be accessed by `$.env` con$.env # Create a table to the database and insert data glaredb_execute("CREATE TABLE my_table (a int)", con) glaredb_execute("INSERT INTO my_table VALUES (1), (2)", con) # Query the data and assign the result to a variable res <- glaredb_sql("SELECT * FROM my_table", con) # Since the result `res` exists in the connected environment, # it can be resolved by the object name in the query exists("res", envir = con$.env) glaredb_sql("SELECT * FROM res", con) |> as_glaredb_table()
Run a query against a GlareDB database
glaredb_sql(query, connection = NULL) glaredb_prql(query, connection = NULL) glaredb_execute(query, connection = NULL)
glaredb_sql(query, connection = NULL) glaredb_prql(query, connection = NULL) glaredb_execute(query, connection = NULL)
query |
A character of the query to run.
|
connection |
A GlareDB connection object or |
A GlareDB execusion output (Query plan).
For glaredb_execute()
, the value is returned invisibly.
# You can materialize the query result by `as_glaredb_table()` etc. glaredb_sql("SELECT 'hello from R' as hello") |> as_glaredb_table() glaredb_prql("from [ {a=5, b=false}, {a=6, b=true}, ]") |> as.data.frame() # `glaredb_execute()` is useful for manipulating the database glaredb_execute("CREATE TABLE my_table (a int)") glaredb_execute("INSERT INTO my_table VALUES (1), (2)") glaredb_sql("SELECT * FROM my_table") |> as_glaredb_table()
# You can materialize the query result by `as_glaredb_table()` etc. glaredb_sql("SELECT 'hello from R' as hello") |> as_glaredb_table() glaredb_prql("from [ {a=5, b=false}, {a=6, b=true}, ]") |> as.data.frame() # `glaredb_execute()` is useful for manipulating the database glaredb_execute("CREATE TABLE my_table (a int)") glaredb_execute("INSERT INTO my_table VALUES (1), (2)") glaredb_sql("SELECT * FROM my_table") |> as_glaredb_table()