lib/abank/bigquery.rb in abank-0.2.0 vs lib/abank/bigquery.rb in abank-0.2.1
- old
+ new
@@ -10,11 +10,11 @@
class Bigquery
# @return [Google::Cloud::Bigquery] API bigquery
attr_reader :apibq
# @return [Roo::Excelx] folha calculo a processar
attr_reader :folha
- # @return [Hash<Symbol, Boolean>] opcoes trabalho com linhas
+ # @return [Hash] opcoes trabalho com linhas
attr_reader :linha
# @return [Integer] numero conta
attr_reader :conta
# @return [Array] row folha calculo em processamento
@@ -23,18 +23,20 @@
attr_reader :job
# @return (see sql_select)
attr_reader :sql
# @param [String] xls folha calculo para processar
- # @param [Hash<Symbol, Boolean>] ops opcoes trabalho com linhas
+ # @param [Hash] ops opcoes trabalho com linhas
# @option ops [Boolean] :s (false) apaga linha similar?
# @option ops [Boolean] :e (false) apaga linha igual?
# @option ops [Boolean] :m (false) apaga linhas existencia multipla?
# @option ops [Boolean] :i (false) insere linha nova?
+ # @option ops [Numeric] :n (0) numero dias correcao para data valor
# @return [Bigquery] acesso folhas calculo activobank
# & correspondente bigquery dataset
- def initialize(xls = '', ops = { s: false, e: false, m: false, i: false })
+ def initialize(xls = '', ops = { s: false, e: false, m: false,
+ i: false, n: 0 })
# usa env GOOGLE_APPLICATION_CREDENTIALS para obter credentials
# @see https://cloud.google.com/bigquery/docs/authentication/getting-started
@apibq = Google::Cloud::Bigquery.new
@folha = Roo::Spreadsheet.open(xls) if xls.size.positive?
@linha = ops
@@ -91,21 +93,27 @@
# @return [Integer] numero linhas inseridas
def sql_insert
return 1 unless linha[:i]
dml('insert hernanilr.ab.mv(dl,dv,ds,vl,nc,ano,mes,ct,tp) VALUES(' \
- "'#{row[0].strftime(DF)}','#{row[1].strftime(DF)}','#{row[2]}'" +
+ "'#{row[0].strftime(DF)}','#{data_valor.strftime(DF)}','#{row[2]}'" +
str_insert1)
end
+ # @return [Date] data valor corrigida
+ def data_valor
+ row[1] + linha[:n].to_i
+ end
+
# @return [String] campos extra da linha bigquery
def str_insert1
",#{row[3]},#{conta}" + str_insert2
end
# @return [String] campos calculados da linha bigquery
def str_insert2
- ",#{row[1].year},#{row[1].month},null,'#{row[3].positive? ? 'c' : 'd'}')"
+ ",#{data_valor.year},#{data_valor.month},null," \
+ "'#{row[3].positive? ? 'c' : 'd'}')"
end
# @return [Integer] numero linhas apagadas
def sql_delete
dml('delete ' + sql_where + " and ds='#{sql.first[:ds].strip}'")