gd_bam 0.1.19 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/bam +7 -1
- data/lib/bam/version.rb +1 -1
- data/lib/base/sink.rb +4 -0
- data/lib/commands/sf_commands.rb +5 -1
- data/lib/generators/etl.rb +26 -1
- data/lib/nodes/clover_gen.rb +33 -33
- metadata +2 -2
data/bin/bam
CHANGED
@@ -191,6 +191,11 @@ command :debug do |c|
|
|
191
191
|
flows = project[:flows].find_all do |flow|
|
192
192
|
GoodData::Bam::Flow.find_graphs(flow).map {|s| GoodData::Bam::Step.get_graph_path(s).basename}.any? {|name| name == debug_path}
|
193
193
|
end
|
194
|
+
|
195
|
+
if flows.empty?
|
196
|
+
fail "Graph \"#{debug_path}\" is not used in any flow."
|
197
|
+
end
|
198
|
+
|
194
199
|
index = if flows.count > 1
|
195
200
|
m = HighLine::Menu.new
|
196
201
|
m.choose do |menu|
|
@@ -248,8 +253,9 @@ command :project do |c|
|
|
248
253
|
|
249
254
|
c.action do |global_options,options,args|
|
250
255
|
fail "You need to specify token to create a project" if options[:token].nil?
|
251
|
-
|
256
|
+
binding.pry
|
252
257
|
GoodData::Bam::Commands::connect_to_gd()
|
258
|
+
binding.pry
|
253
259
|
pid = case options[:blueprint]
|
254
260
|
when "goodsales"
|
255
261
|
"nt935rwzls50zfqwy6dh62tabu8h0ocy"
|
data/lib/bam/version.rb
CHANGED
data/lib/base/sink.rb
CHANGED
data/lib/commands/sf_commands.rb
CHANGED
@@ -14,7 +14,11 @@ module GoodData
|
|
14
14
|
u = sf_client.describe(sf_object)
|
15
15
|
sf_fields = u[:describeSObjectResponse][:result][:fields].map {|field| field[:name]}
|
16
16
|
fields_to_validate = tap[:fields].map {|field| field[:name]}
|
17
|
-
memo
|
17
|
+
if memo.has_key?(sf_object)
|
18
|
+
memo[sf_object] = memo[sf_object].concat(fields_to_validate - sf_fields)
|
19
|
+
else
|
20
|
+
memo[sf_object] = (fields_to_validate - sf_fields)
|
21
|
+
end
|
18
22
|
memo
|
19
23
|
end
|
20
24
|
end
|
data/lib/generators/etl.rb
CHANGED
@@ -109,11 +109,36 @@ module GoodData
|
|
109
109
|
Helpers::csv_metadata(builder, state[:metadata][input_name])
|
110
110
|
end
|
111
111
|
end
|
112
|
+
|
112
113
|
builder.Phase(:number => 0) do
|
113
114
|
gd_dataset = sink[:gd_name] || sink[:id]
|
114
115
|
to_svinstvo = GoodData::CloverGenerator::build_gd_dataset_loader_json(sink)
|
115
116
|
Core::build_node2(builder, Nodes.reader2({:name => "CSV Loader", :id => "loader", :fileURL => "${PROJECT}/data/#{input_name}.csv"}))
|
116
|
-
Core::build_node2(builder, Nodes.edge2({:toNode => "gd_load:0", :fromNode => "
|
117
|
+
Core::build_node2(builder, Nodes.edge2({:toNode => "gd_load:0", :fromNode => "reformat:0", :metadata => "load_metadata"}))
|
118
|
+
|
119
|
+
transform = <<HEREDOC
|
120
|
+
function string gd_date_compliance(string a_date) {
|
121
|
+
if (a_date != null && a_date != "" && left(a_date, 4) < "1950") {
|
122
|
+
return '1950-01-01';
|
123
|
+
}
|
124
|
+
if (a_date != null && a_date != "" && left(a_date, 4) > "2049") {
|
125
|
+
return '2049-01-01';
|
126
|
+
}
|
127
|
+
return a_date;
|
128
|
+
}
|
129
|
+
|
130
|
+
function integer transform() {
|
131
|
+
$out.0.* = $in.0.*;
|
132
|
+
#{Sink.get_date_fields(sink).map do |f|
|
133
|
+
"$out.0.#{f[:meta]} = gd_date_compliance($in.0.#{f[:meta]});"
|
134
|
+
end.join("\n")}
|
135
|
+
|
136
|
+
return ALL;
|
137
|
+
}
|
138
|
+
HEREDOC
|
139
|
+
|
140
|
+
Core::build_node2(builder, Nodes.reformat2({:name => "Reformat", :id => "reformat", :transformation => transform}))
|
141
|
+
Core::build_node2(builder, Nodes.edge2({:toNode => "reformat:0", :fromNode => "loader:0", :metadata => "load_metadata"}))
|
117
142
|
Core::build_node2(builder, Nodes.gd_loader2({:name => "GD Loader", :id => "gd_load", :dataset => "dataset.#{gd_dataset}", :datasetFieldMappings => to_svinstvo.to_json}))
|
118
143
|
end
|
119
144
|
end
|
data/lib/nodes/clover_gen.rb
CHANGED
@@ -345,39 +345,39 @@ module GoodData
|
|
345
345
|
|
346
346
|
|
347
347
|
|
348
|
-
def self.create_es_uploading_graph(file, options={})
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
end
|
348
|
+
# def self.create_es_uploading_graph(file, options={})
|
349
|
+
# metadata = options[:metadata]
|
350
|
+
# dataset_infos = [options[:datasets]]
|
351
|
+
# input_file = options[:input_file]
|
352
|
+
#
|
353
|
+
# File.open(file, "w") do |file|
|
354
|
+
# builder = Builder::XmlMarkup.new(:target=>file, :indent=>2)
|
355
|
+
# builder.instruct! :xml, :version=>"1.0", :encoding=>"UTF-8"
|
356
|
+
# builder.Graph({
|
357
|
+
# :name => "GoodData Uploader"
|
358
|
+
# }) do
|
359
|
+
# builder.Global do
|
360
|
+
# property_file(builder, {:id => "workspace_params", :fileURL => "workspace.prm"})
|
361
|
+
# dataset_infos.each do |dataset_info|
|
362
|
+
# dataset = dataset_info[:id]
|
363
|
+
# builder.Metadata({:id => "#{dataset}_load"}) do |builder|
|
364
|
+
# csv_metadata(builder, metadata)
|
365
|
+
# end
|
366
|
+
# end
|
367
|
+
# end
|
368
|
+
# builder.Phase(:number => 0) do
|
369
|
+
# dataset_infos.each do |dataset_info|
|
370
|
+
# dataset = dataset_info[:id]
|
371
|
+
# gd_dataset = dataset_info[:gd_name] || dataset_info[:id]
|
372
|
+
# to_svinstvo = build_gd_dataset_loader_json(dataset_info)
|
373
|
+
# build_node2(builder, GoodData::CloverGenerator::Nodes.reader2({:name => "#{dataset} CSV Loader", :id => "#{dataset}_loader", :fileURL => "${PROJECT}/data/#{dataset}.csv"}))
|
374
|
+
# build_node2(builder, GoodData::CloverGenerator::Nodes.edge2({:toNode => "#{dataset}_load:0", :fromNode => "#{dataset}_loader:0", :metadata => "#{dataset}_load", :id => get_id()}))
|
375
|
+
# build_node2(builder, GoodData::CloverGenerator::Nodes.gd_loader2({:name => "#{dataset} Loader", :id => "#{dataset}_load", :dataset => "dataset.#{gd_dataset}", :datasetFieldMappings => to_svinstvo.to_json}))
|
376
|
+
# end
|
377
|
+
# end
|
378
|
+
# end
|
379
|
+
# end
|
380
|
+
# end
|
381
381
|
|
382
382
|
def self.create_metadata(mod)
|
383
383
|
module_name = mod.object
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gd_bam
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.20
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-08-
|
12
|
+
date: 2013-08-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|