data.table
s are looked for by name in the tables
argument and in the execution environment.
Internal execution interface.
ex_data_table_step(
optree,
...,
tables = list(),
source_usage = NULL,
source_limit = NULL,
env = parent.frame()
)
relop operations tree.
not used, force later arguments to bind by name.
named list map from table names used in nodes to data.tables and data.frames.
list mapping source table names to vectors of columns used.
if not null limit all table sources to no more than this many rows (used for debugging).
environment to work in.
resulting data.table (intermediate tables can somtimes be mutated as is practice with data.table).
ex_data_table_step.relop_drop_columns
: implement drop columns
ex_data_table_step.relop_extend
: implement extend/assign operator
ex_data_table_step.relop_natural_join
: implement natural join
ex_data_table_step.relop_non_sql
: direct function (non-sql) operator (not implemented for data.table
)
ex_data_table_step.relop_null_replace
: implement NA/NULL replacement
ex_data_table_step.relop_orderby
: implement row ordering
ex_data_table_step.relop_project
: implement row ordering
ex_data_table_step.relop_rename_columns
: implement column renaming
ex_data_table_step.relop_select_columns
: implement select columns
ex_data_table_step.relop_select_rows
: implement select rows
ex_data_table_step.relop_sql
: direct sql operator (not implemented for data.table
)
ex_data_table_step.relop_table_source
: implement data source
ex_data_table_step.relop_theta_join
: implement theta join (not implemented for data.table
)
ex_data_table_step.relop_unionall
: implement row binding
a <- data.table::data.table(x = c(1, 2) , y = c(20, 30), z = c(300, 400))
optree <- local_td(a) %.>%
select_columns(., c("x", "y")) %.>%
select_rows_nse(., x<2 & y<30)
cat(format(optree))
#> mk_td("a", c(
#> "x",
#> "y",
#> "z")) %.>%
#> select_columns(.,
#> c('x', 'y')) %.>%
#> select_rows(.,
#> x < 2 & y < 30)
ex_data_table_step(optree)
#> x y
#> 1: 1 20
# other ways to execute the pipeline include
ex_data_table(optree)
#> x y
#> 1 1 20
data.frame(x = 0, y = 4, z = 400) %.>% optree
#> x y
#> 1 0 4