Build a diagram of a optree pipeline.

op_diagram(optree, ..., merge_tables = FALSE, show_table_columns = TRUE)

Arguments

optree

operation tree pipeline (or list of such).

...

force other argument to be by name.

merge_tables

logical, if TRUE merge all same table references into one node. rel_op nodes that declare a materialize_as name will be cross-linked.

show_table_columns

logical, if TRUE show table columns.

Value

character DiagrammeR::grViz() ready text.

Examples

d <- mk_td('d', columns = qc(AUC, R2)) optree <- d %.>% extend(., v %:=% ifelse(AUC>0.5, R2, 1.0)) %.>% quantile_node(.) %.>% natural_join(., d, jointype = "LEFT", by = "AUC") %.>% orderby(., "AUC") cat(format(optree))
#> mk_td("d", c( #> "AUC", #> "R2")) %.>% #> extend(., #> v := ifelse(AUC > 0.5, R2, 1)) %.>% #> non_sql_node(., quantile_node(.)) %.>% #> natural_join(., #> mk_td("d", c( #> "AUC", #> "R2")), #> jointype = "LEFT", by = c('AUC')) %.>% #> order_rows(., #> c('AUC'), #> reverse = c(), #> limit = NULL)
cat(op_diagram(optree))
#> #> digraph rquery_optree { #> graph [ layout = dot, rankdir = TB, overlap = prism, compound = true, nodesep = .5, ranksep = .25] #> edge [decorate = true, arrowhead = normal] #> node [style=filled, fillcolor=lightgrey] #> #> node_1 [ shape = 'folder' , fillcolor = 'chartreuse3' , label = 'mk_td(d, c(\l AUC,\l R2))\l'] #> #> node_2 [ shape = 'box' , fillcolor = 'khaki3' , label = 'extend(.,\l v := ifelse(AUC > 0.5, R2, 1))\l'] #> #> node_3 [ shape = 'box' , fillcolor = 'khaki3' , label = 'non_sql_node(., quantile_node(.))\l'] #> #> node_4 [ shape = 'folder' , fillcolor = 'chartreuse3' , label = 'mk_td(d, c(\l AUC,\l R2))\l'] #> #> node_5 [ shape = 'box' , fillcolor = 'khaki3' , label = 'natural_join(.1, .2, j= LEFT, by= AUC)\l'] #> #> node_6 [ shape = 'box' , fillcolor = 'khaki3' , label = 'order_rows(.,\l c(AUC),\l reverse = c(),\l limit = NULL)\l'] #> node_1 -> node_2 [ label = '.'] #> node_2 -> node_3 [ label = '.'] #> node_3 -> node_5 [ label = '.1'] #> node_4 -> node_5 [ label = '.2'] #> node_5 -> node_6 [ label = '.'] #> }
if(requireNamespace("DiagrammeR", quietly = TRUE)) { optree %.>% op_diagram(., merge_tables = TRUE) %.>% DiagrammeR::grViz(.) %.>% print(.) # # or to render to png # optree %.>% # op_diagram(., merge_tables = TRUE) %.>% # DiagrammeR::DiagrammeR(diagram = ., type = "grViz") %.>% # DiagrammeRsvg::export_svg(.) %.>% # charToRaw(.) %.>% # rsvg::rsvg_png(., file = "diagram1.png") }