Class: Piglet::Relation::Split

Inherits:
Object
  • Object
show all
Includes:
Relation
Defined in:
lib/piglet/relation/split.rb

Overview

:nodoc:

Instance Attribute Summary

Attributes included from Relation

#sources

Instance Method Summary collapse

Methods included from Relation

#[], #alias, #cogroup, #cross, #distinct, #eql?, #field, #filter, #foreach, #group, #hash, #join, #limit, #method_missing, #nested_foreach, #next_field_alias, #order, #sample, #schema, #split, #stream, #union

Constructor Details

#initialize(relation, interpreter, expressions) ⇒ Split

Returns a new instance of Split.



8
9
10
11
# File 'lib/piglet/relation/split.rb', line 8

def initialize(relation, interpreter, expressions)
  @sources, @interpreter, @expressions = [relation], interpreter, expressions
  @shard_map = create_shards
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Piglet::Relation::Relation

Instance Method Details

#shardsObject



13
14
15
# File 'lib/piglet/relation/split.rb', line 13

def shards
  @shard_map.values_at(*@expressions)
end

#to_sObject



17
18
19
20
21
22
23
# File 'lib/piglet/relation/split.rb', line 17

def to_s
  split_strings = @expressions.map do |expression|
    "#{@shard_map[expression].alias} IF #{expression}"
  end
  
  "SPLIT #{@sources.first.alias} INTO #{split_strings.join(', ')}"
end