abank 0.1.2 → 0.1.3
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +3 -3
- data/lib/abank.rb +10 -4
- data/lib/abank/bigquery.rb +20 -6
- data/lib/abank/folhacalculo.rb +10 -8
- data/lib/abank/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dfafd89334ba22494cd76823700f9d375a0fcab669d72a0cb121a3426a443559
|
4
|
+
data.tar.gz: 84542147e657fc2efe63a4bf19b647503744304225e9743361ebe8ebb28a373b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30d86a66d727250e1f63d46b1b440d7cac058eca820a261bb478943c6cb99d2144fd35a002a12430977f36568f72b66ef1685e6e822ef74529f8934ded77014a
|
7
|
+
data.tar.gz: 1beb1e721d5079d98759251beb6a6900a99090d10e698d066e2b651abec65ae4efc68360b0e7396c753beb90edfa4c6cb2d9204dfe9ccf3df055c6c4638651e7
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -20,10 +20,10 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
$ abank mostra # mostra dados
|
24
|
-
$ abank load # carrega dados
|
23
|
+
$ abank mostra # mostra dados da folha calculo
|
24
|
+
$ abank load # carrega dados da folha calculo no bigquery
|
25
25
|
$ abank classifica # classifica arquivo no bigquery
|
26
|
-
$ abank
|
26
|
+
$ abank help [COMANDO] # ajuda aos comandos
|
27
27
|
|
28
28
|
## Development
|
29
29
|
|
data/lib/abank.rb
CHANGED
@@ -12,19 +12,25 @@ module Abank
|
|
12
12
|
|
13
13
|
# CLI para carregar folhas calculo comuns no bigquery
|
14
14
|
class CLI < Thor
|
15
|
-
desc 'load', 'carrega dados
|
15
|
+
desc 'load', 'carrega dados da folha calculo no bigquery'
|
16
16
|
option :d, banner: 'DIR', default: "/home/#{ID}/Downloads",
|
17
17
|
desc: 'Onde procurar folhas calculo'
|
18
18
|
option :x, banner: 'EXT', default: '.xlsx',
|
19
19
|
desc: 'Extensao das folhas calculo'
|
20
|
+
option :s, type: :boolean, default: false,
|
21
|
+
desc: 'apaga linhas similares no bigquery'
|
22
|
+
option :e, type: :boolean, default: false,
|
23
|
+
desc: 'apaga linhas existentes no bigquery'
|
20
24
|
# processa xlsx
|
21
25
|
def load
|
26
|
+
# opcoes apagar linhas
|
27
|
+
d = options.select { |_, v| [true, false].include?(v) }
|
22
28
|
Dir.glob("#{options[:d]}/*#{options[:x]}").sort.each do |f|
|
23
|
-
Bigquery.new(f).processa
|
29
|
+
Bigquery.new(f, d).processa
|
24
30
|
end
|
25
31
|
end
|
26
32
|
|
27
|
-
desc 'mostra', 'mostra dados
|
33
|
+
desc 'mostra', 'mostra dados da folha calculo'
|
28
34
|
option :d, banner: 'DIR', default: "/home/#{ID}/Downloads",
|
29
35
|
desc: 'Onde procurar folhas calculo'
|
30
36
|
option :x, banner: 'EXT', default: '.xlsx',
|
@@ -39,7 +45,7 @@ module Abank
|
|
39
45
|
desc 'classifica', 'classifica arquivo no bigquery'
|
40
46
|
# classifica bigquery
|
41
47
|
def classifica
|
42
|
-
Bigquery.new
|
48
|
+
Bigquery.new.sql_update
|
43
49
|
end
|
44
50
|
|
45
51
|
default_task :mostra
|
data/lib/abank/bigquery.rb
CHANGED
@@ -20,14 +20,20 @@ module Abank
|
|
20
20
|
attr_reader :sql
|
21
21
|
# @return [Integer] numero conta
|
22
22
|
attr_reader :num
|
23
|
+
# @return [Hash<String, Boolean>] opcoes apagar linhas
|
24
|
+
attr_reader :apaga
|
23
25
|
|
24
26
|
# permite processa folhas calculo comuns no bigquery
|
25
27
|
#
|
26
28
|
# @param [String] xls folha calculo para processar
|
29
|
+
# @param [Hash<String, Boolean>] apaga opcoes apagar linhas
|
30
|
+
# @option apaga [Boolean] s apaga linhas similares sim/nao?
|
31
|
+
# @option apaga [Boolean] e apaga linhas existentes sim/nao?
|
27
32
|
# @return [Bigquery] acesso folha calculo & bigquery
|
28
|
-
def initialize(xls)
|
33
|
+
def initialize(xls = '', apaga = {})
|
29
34
|
@book = Roo::Spreadsheet.open(xls) if xls.size.positive?
|
30
35
|
@num = xls.match?(/card/i) ? 2 : 1
|
36
|
+
@apaga = apaga
|
31
37
|
# usa env GOOGLE_APPLICATION_CREDENTIALS para obter credentials
|
32
38
|
# @see https://cloud.google.com/bigquery/docs/authentication/getting-started
|
33
39
|
@api = Google::Cloud::Bigquery.new
|
@@ -56,12 +62,15 @@ module Abank
|
|
56
62
|
#
|
57
63
|
# @return [Array<Hash>] resultado sql
|
58
64
|
def sql_select
|
59
|
-
s = "select * from ab.mv where nc=#{num}" \
|
60
|
-
" and dl='#{row[0].strftime(DF)}'" \
|
61
|
-
" and vl=#{row[3]}"
|
62
|
-
|
63
65
|
# se array.count > 1 => nao fazer nada
|
64
|
-
@sql = job_bigquery?(
|
66
|
+
@sql = job_bigquery?('select * ' + sql_where) ? [{}, {}] : job.data
|
67
|
+
end
|
68
|
+
|
69
|
+
# @return [String] parte sql para processamento linhas similares
|
70
|
+
def sql_where
|
71
|
+
"from ab.mv where nc=#{num}" \
|
72
|
+
" and dl='#{row[0].strftime(DF)}'" \
|
73
|
+
" and vl=#{row[3]}"
|
65
74
|
end
|
66
75
|
|
67
76
|
# classifica linhas
|
@@ -84,5 +93,10 @@ module Abank
|
|
84
93
|
def sql_insert_calculado
|
85
94
|
",#{row[1].year},#{row[1].month},null,'#{row[3].positive? ? 'c' : 'd'}')"
|
86
95
|
end
|
96
|
+
|
97
|
+
# @return [Integer] numero linhas apagadas
|
98
|
+
def sql_delete
|
99
|
+
dml('delete ' + sql_where + " and ds='#{sql.first[:ds].strip}'")
|
100
|
+
end
|
87
101
|
end
|
88
102
|
end
|
data/lib/abank/folhacalculo.rb
CHANGED
@@ -9,7 +9,7 @@ module Abank
|
|
9
9
|
# prepara linha folha calculo para processamento
|
10
10
|
#
|
11
11
|
# @param [Hash] has da linha em processamento
|
12
|
-
def
|
12
|
+
def corrige_hash(has)
|
13
13
|
@row = has.values
|
14
14
|
@row[2] = row[2].strip
|
15
15
|
@row[3] = -1 * row[3] if num > 1
|
@@ -38,23 +38,23 @@ module Abank
|
|
38
38
|
|
39
39
|
# processa linha folha calculo para arquivo
|
40
40
|
#
|
41
|
-
# @param (see
|
41
|
+
# @param (see corrige_hash)
|
42
42
|
# @return [String] linha folha calculo processada
|
43
43
|
def processa_row(has)
|
44
|
-
|
44
|
+
corrige_hash(has)
|
45
45
|
sql_select
|
46
46
|
if rnaoexiste? then row_str + (sql_insert == 1 ? ' NOVA' : ' ERRO')
|
47
|
-
elsif rexiste? then row_existente
|
48
47
|
elsif rsimila? then row_similar
|
48
|
+
elsif rexiste? then row_existente
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
52
|
# obtem linha folha calculo para apresentacao
|
53
53
|
#
|
54
|
-
# @param (see
|
54
|
+
# @param (see corrige_hash)
|
55
55
|
# @return (see row_str)
|
56
56
|
def show_row(has)
|
57
|
-
|
57
|
+
corrige_hash(has)
|
58
58
|
row_str
|
59
59
|
end
|
60
60
|
|
@@ -66,12 +66,14 @@ module Abank
|
|
66
66
|
|
67
67
|
# @return [String] linha folha calculo similar
|
68
68
|
def row_similar
|
69
|
-
|
69
|
+
d = apaga['s'] ? sql_delete : 0
|
70
|
+
row_str + " SIMILAR#{d.zero? ? ' ' : ' APAGADA '}#{sql.first[:ds].strip}"
|
70
71
|
end
|
71
72
|
|
72
73
|
# @return [String] linha folha calculo existente
|
73
74
|
def row_existente
|
74
|
-
|
75
|
+
d = apaga['e'] ? sql_delete : 0
|
76
|
+
row_str + " EXISTENTE#{d.zero? ? '' : ' APAGADA'}"
|
75
77
|
end
|
76
78
|
|
77
79
|
# @return [Boolean] linha folha calculo nao existe no bigquery?
|
data/lib/abank/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abank
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hernâni Rodrigues Vaz
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-04-
|
11
|
+
date: 2020-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|