redata 1.2.2 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: beb1e936a4f2b0ce83ef9c41d9ec3c4f69425f50
4
- data.tar.gz: b323d2d3268c53250b40b621dfed6b0138721220
3
+ metadata.gz: 364c1b4ae5b02af7e3299a2319e712b60013814c
4
+ data.tar.gz: dd1b500748255322c064f7fd406499bc5968812d
5
5
  SHA512:
6
- metadata.gz: 178a99c06a6d7587f9591e84748d98bf2cbea92406264c09be0ce432cab140bd10d089b7a7f5475dd07051882ff11e2199af7ebc6bad3622630a00917c494be2
7
- data.tar.gz: becb4560e1c6e5b069eb4d804f8941c9173a35b56293be22d0345652b05e29480f8c3e1fc1c9acf5172fef3ec5561cccbf47cb9b0c10f1e19e32df0bb3bf610b
6
+ metadata.gz: c562bc89b09bcba1e9c54a2255725d30653e0c1e90a65695d5b9fcc81eaa1047185ba66bc2df33b54698e5642e20fdf5bb9a6a9cf8e219a2c8a6719d7ba8ec62
7
+ data.tar.gz: 0da7d784be70751f2e225d8a484bc32a1b06bb99c3841ffec68502515e57b3c4c962f775d9674ac151941e3f33b5e5266b7aa2b4efd98dcbcd1cea3aeccbde0a
data/README.md CHANGED
@@ -19,6 +19,10 @@ Or install it yourself as:
19
19
 
20
20
  $ gem install redata
21
21
 
22
+ And then you should generate some config files by
23
+
24
+ $ bundle exec rails generate redata:config
25
+
22
26
  ## Usage
23
27
 
24
28
  ### Config
@@ -58,13 +62,13 @@ development:
58
62
  database: dev
59
63
  deploy: # target platform db(mysql) which export data to
60
64
  app: # category name, using database
61
- pro: # stage name(you can still declare under category absolutely)
65
+ pro: # stage name(you can still declare under category absolutely)
62
66
  username: root
63
67
  password: ''
64
68
  host: localhost
65
69
  database: app
66
70
  file: # another category, using local file
67
- local_dir: '~/data'
71
+ local_dir: '~/data'
68
72
  ```
69
73
 
70
74
  + config `config/relations.rb` for data object in redshift and exporting process to mysql
@@ -75,14 +79,14 @@ Redata::Task.schema.config do
75
79
  # Example of declaring a global table
76
80
  table 'table_name'
77
81
  # This declaration means
78
- # query file: red_query/sources/table_name.red.sql
82
+ # query file: query/sources/table_name.red.sql
79
83
  # redshift table: table_name
80
84
  # key used in command line: table_name
81
85
 
82
86
  # Example of declaring a global table with customizing options
83
87
  table 'new_table_name', :dir => 'dir', :file => 'query_file', :as => :alias
84
88
  # This declaration means
85
- # query file: red_query/sources/dir/query_file.red.sql
89
+ # query file: query/sources/dir/query_file.red.sql
86
90
  # redshift table: new_table_name
87
91
  # key used in command line: alias
88
92
 
@@ -94,13 +98,13 @@ Redata::Task.schema.config do
94
98
  category :test_category do
95
99
  table 'test_table'
96
100
  # This declaration means
97
- # query file: red_query/sources/test_category/test_table.red.sql
101
+ # query file: query/sources/test_category/test_table.red.sql
98
102
  # redshift table: test_category_test_table
99
103
  # key used in command line: test_category_test_table
100
104
 
101
105
  table 'test_table_oth', :dir => 'dir', :file => 'query_file_oth', :as => :alias_oth
102
106
  # This declaration means
103
- # query file: red_query/sources/dir/query_file_oth.red.sql
107
+ # query file: query/sources/dir/query_file_oth.red.sql
104
108
  # redshift table: test_category_test_table
105
109
  # key used in command line: test_category_alias_oth
106
110
 
@@ -179,7 +183,7 @@ Usage: `redata [-options] [action] [object key] {stage}`
179
183
  Use adjust when you just want to run a query file without declaring in `config/relations.rb`
180
184
  Usage: `adjust [-options] [database] [query file] {platform}`
181
185
  + database --> `redshift` or database declared in `config/red_access.yml{:deploy}`
182
- + query file --> query file which will be run in `red_query/adjust/`, **without extends `.red.sql`**
186
+ + query file --> query file which will be run in `query/adjust/`, **without extends `.red.sql`**
183
187
  + platform --> same to `redata`
184
188
  + options
185
189
  - -dir --> project directory, both absolute path and realtive path will be okay. default is current directory.
data/bin/adjust CHANGED
@@ -9,7 +9,7 @@ unless Redata::RED.params[0]
9
9
  end
10
10
 
11
11
  temp_config = OpenStruct.new
12
- temp_config.query_file = Redata::RED.root.join 'red_query', 'adjust', "#{Redata::RED.params[1]}.sql"
12
+ temp_config.query_file = Redata::RED.root.join 'query', 'adjust', "#{Redata::RED.params[1]}.sql"
13
13
  temp_config.tmp_file_dir = Redata::RED.root.join "tmp", "adj_#{Redata::RED.params[0]}_#{Redata::RED.params[1]}"
14
14
  temp_config.tmp_exec_file = Redata::RED.root.join "tmp", "adj_#{Redata::RED.params[0]}_#{Redata::RED.params[1]}", "exec.sql"
15
15
 
@@ -0,0 +1,16 @@
1
+ require 'rails/generators/base'
2
+
3
+ module Redata
4
+ class ConfigGenerator < Rails::Generators::Base
5
+ source_root File.expand_path('../../templates', __FILE__)
6
+ desc 'Redata Config'
7
+
8
+ def config_steps
9
+ copy_file 'source_query_example.red.sql', 'app/query/sources/sources_query_example.red.sql'
10
+ copy_file 'adjust_query_example.red.sql', 'app/query/adjust/adjust_query_example.red.sql'
11
+ copy_file 'redata.yml', 'config/redata.yml'
12
+ copy_file 'red_access.yml', 'config/red_access.yml'
13
+ copy_file 'relations.rb', 'config/relations.rb'
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,3 @@
1
+ -- you can use all syntax same as queries in sources
2
+
3
+ UPDATE [table] SET [attr] = [value] WHERE [key] = [kw];
@@ -0,0 +1,16 @@
1
+ # Access configuration of redshift and local database
2
+ #
3
+ development:
4
+ host: localhost
5
+ username: user
6
+ password: ''
7
+ database: dev
8
+ deploy: # target platform db(mysql) which export data to
9
+ app: # category name, using database
10
+ pro: # stage name(you can still declare under category absolutely)
11
+ username: root
12
+ password: ''
13
+ host: localhost
14
+ database: app
15
+ file: # another category, using local file
16
+ local_dir: '~/data'
@@ -0,0 +1,21 @@
1
+ # Basic configuration of redata
2
+ #
3
+ create_interval: # default date for create mode
4
+ start_time: "2016-04-04"
5
+ end_time: 2 # days ago
6
+ append_interval: # date fetching interval for append mode
7
+ start: 3 # days ago
8
+ end: 2 # days ago
9
+ timezone: "Asia/Tokyo"
10
+ keep_tmp: true # or false. whether keep temp query file in ./tmp after finished query
11
+ s3:
12
+ bucket: bucket_name
13
+ aws_access_key_id: key_id
14
+ aws_secret_access_key: key_secret
15
+ ssh: # this setting will be used in ssh mode when you access private database
16
+ HostName: gateway_host
17
+ IdentityFile: ~/.ssh/key.pem
18
+ User: username
19
+ slack_bot: # this setting will be used for slack notice push
20
+ token: bot_token
21
+ channel: slack_channel
@@ -0,0 +1,39 @@
1
+ Redata::Task.schema.config do
2
+ # Example of declaring a global table
3
+ table 'source_query_example'
4
+ # This declaration means
5
+ # query file: query/sources/source_query_example.red.sql
6
+ # redshift table: source_query_example
7
+ # key used in command line: source_query_example
8
+
9
+ # Example of declaring a global table with customizing options
10
+ # table 'new_table_name', :dir => 'dir', :file => 'query_file', :as => :alias
11
+ # This declaration means
12
+ # query file: red_query/sources/dir/query_file.red.sql
13
+ # redshift table: new_table_name
14
+ # key used in command line: alias
15
+
16
+ # view is same to table but will still be created in append_mode
17
+ # view 'view_name'
18
+ # view 'new_view_name', :dir => 'dir', :file => 'query_file_oth', :as => :alias_oth
19
+
20
+ # Example of declaring with category
21
+ # category :test_category do
22
+ # table 'test_table'
23
+ # This declaration means
24
+ # query file: red_query/sources/test_category/test_table.red.sql
25
+ # redshift table: test_category_test_table
26
+ # key used in command line: test_category_test_table
27
+
28
+ # table 'test_table_oth', :dir => 'dir', :file => 'query_file_oth', :as => :alias_oth
29
+ # This declaration means
30
+ # query file: red_query/sources/dir/query_file_oth.red.sql
31
+ # redshift table: test_category_test_table
32
+ # key used in command line: test_category_alias_oth
33
+
34
+ # view is same to table without appending update type
35
+ # view 'test_view'
36
+ # view 'test_view_oth', :dir => 'dir', :file => 'query_file_oth', :as => :alias_view_oth
37
+ # end
38
+
39
+ end
@@ -0,0 +1,28 @@
1
+ -- query file in data/sources/*.red.sql
2
+
3
+ #load 'sub_query_a' --> :a -- include a sub query as object a from _sub_query_a.red.sql in same folder
4
+ #load 'sub_query_b' --> :b
5
+
6
+
7
+ -- use can use if logic to control whether run part of a query
8
+ -- 'endif' could stop one or many continuous if logic above. (use if which is from second just like 'else if')
9
+ -- TIPS: we have not supported 'else if', 'else' syntax and nested if logic
10
+ [if var is 'value1']
11
+ SELECT a.col1, a.col2, b.col1, b.col2, b.col3
12
+ [if var is 'value1']
13
+ SELECT a.col3, b.col4
14
+ [endif]
15
+ FROM {a} -- use object a included from sub query file '_sub_query_a.sql'
16
+ JOIN {b} ON b.col1 = a.col1
17
+ -- For [start_time] and [end_time], there are 3 options.
18
+ -- use command params when set
19
+ -- in append mode, use [append_interval][start_time] or [append_interval][end_time] (See config/redata.yml).
20
+ -- in create mode, use [create_interval][start_time] or [create_interval][end_time] (See config/redata.yml).
21
+ WHERE a.col1 >= [start_time]
22
+ AND a.col1 < [end_time]
23
+ -- some params getting from command input such as `-param_from_command param_value`
24
+ AND a.col2 = [param_from_command]
25
+ -- current time in setted timezone will be used (About timezon, also see config/redata.yml)
26
+ AND b.col2 <= [current_time]
27
+ -- x days before today, x will be a integer
28
+ AND b.col3 >= [x days ago]
data/lib/redata/parser.rb CHANGED
@@ -143,7 +143,7 @@ module Redata
143
143
  RED.locals[key] = val
144
144
  end
145
145
  sub_file = in_file.parent.join "_#{sub}.red.sql"
146
- sub_file = RED.root.join 'red_query', 'shared', "_#{sub}.rea.sql" unless sub_file.exist?
146
+ sub_file = RED.root.join 'query', 'shared', "_#{sub}.rea.sql" unless sub_file.exist?
147
147
  sub_temp_tables = self.parse sub_file, out_file.dirname.join("#{name}.resql")
148
148
  sub_temp_tables.each do |n|
149
149
  temp_tables.push n unless temp_tables.include? n
@@ -18,7 +18,7 @@ module Redata
18
18
  end
19
19
 
20
20
  def query_file
21
- query_file = RED.root.join 'red_query', 'sources'
21
+ query_file = RED.root.join 'query', 'sources'
22
22
  query_file = query_file.join @dir if @dir
23
23
  query_file = query_file.join "#{@file}.red.sql"
24
24
  query_file
@@ -1,3 +1,3 @@
1
1
  module Redata
2
- VERSION = "1.2.2"
2
+ VERSION = "1.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redata
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - goshan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-22 00:00:00.000000000 Z
11
+ date: 2017-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -128,6 +128,12 @@ files:
128
128
  - bin/notice
129
129
  - bin/redata
130
130
  - bin/setup
131
+ - lib/generators/redata/config_generator.rb
132
+ - lib/generators/templates/adjust_query_example.red.sql
133
+ - lib/generators/templates/red_access.yml
134
+ - lib/generators/templates/redata.yml
135
+ - lib/generators/templates/relations.rb
136
+ - lib/generators/templates/source_query_example.red.sql
131
137
  - lib/redata.rb
132
138
  - lib/redata/bucket.rb
133
139
  - lib/redata/config.rb