Class: Polars::SQLContext
- Inherits:
-
Object
- Object
- Polars::SQLContext
- Defined in:
- lib/polars/sql_context.rb
Overview
Run SQL queries against DataFrame/LazyFrame data.
Instance Method Summary collapse
-
#execute(query, eager: nil) ⇒ Object
Parse the given SQL query and execute it against the registered frame data.
-
#initialize(frames = nil, register_globals: false, eager: false, **named_frames) ⇒ SQLContext
constructor
Initialize a new
SQLContext. -
#register(name, frame) ⇒ SQLContext
Register a single frame as a table, using the given name.
-
#register_many(frames = nil, **named_frames) ⇒ SQLContext
Register multiple eager/lazy frames as tables, using the associated names.
-
#tables ⇒ Array
Return a list of the registered table names.
-
#unregister(names) ⇒ SQLContext
Unregister one or more eager/lazy frames by name.
Constructor Details
#initialize(frames = nil, register_globals: false, eager: false, **named_frames) ⇒ SQLContext
Initialize a new SQLContext.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/polars/sql_context.rb', line 8 def initialize(frames = nil, register_globals: false, eager: false, **named_frames) Utils.issue_unstable_warning( "`SQLContext` is considered **unstable**, although it is close to being considered stable." ) self._ctxt = RbSQLContext.new self._eager_execution = eager frames = (frames || {}).to_h if register_globals raise Todo end if frames.any? || named_frames.any? register_many(frames, **named_frames) end end |
Instance Method Details
#execute(query, eager: nil) ⇒ Object
Parse the given SQL query and execute it against the registered frame data.
96 97 98 99 |
# File 'lib/polars/sql_context.rb', line 96 def execute(query, eager: nil) res = Utils.wrap_ldf(_ctxt.execute(query)) eager || _eager_execution ? res.collect : res end |
#register(name, frame) ⇒ SQLContext
Register a single frame as a table, using the given name.
123 124 125 126 127 128 129 |
# File 'lib/polars/sql_context.rb', line 123 def register(name, frame) if frame.is_a?(DataFrame) frame = frame.lazy end _ctxt.register(name.to_s, frame._ldf) self end |
#register_many(frames = nil, **named_frames) ⇒ SQLContext
Register multiple eager/lazy frames as tables, using the associated names.
139 140 141 142 143 144 145 146 |
# File 'lib/polars/sql_context.rb', line 139 def register_many(frames = nil, **named_frames) frames = (frames || {}).to_h frames = frames.merge(named_frames) frames.each do |name, frame| register(name, frame) end self end |
#tables ⇒ Array
Return a list of the registered table names.
197 198 199 |
# File 'lib/polars/sql_context.rb', line 197 def tables _ctxt.get_tables.sort end |
#unregister(names) ⇒ SQLContext
Unregister one or more eager/lazy frames by name.
166 167 168 169 170 171 172 173 174 |
# File 'lib/polars/sql_context.rb', line 166 def unregister(names) if names.is_a?(::String) names = [names] end names.each do |nm| _ctxt.unregister(nm) end self end |