def Do_Importacao(): id = getattr(request.forms, 'id') tipo = getattr(request.forms, 'tipo') nome = getattr(request.forms, 'nome') valor = getattr(request.forms, 'valor') arquivo = request.files.get('arquivo') fileName, ext = os.path.splitext(arquivo.filename) if tipo == 'C' and ext != '.csv': return 'Arquivo inválido <br><a href="#" onclick="window.history.go(-1)">Voltar</a>' if tipo == 'J' and ext != '.csv': return 'Arquivo inválido <br><a href="#" onclick="window.history.go(-1)">Voltar</a>' if arquivo != None: path = "/home/bstoll/mysite/arquivosUpld" #path = "C:\Users\bstoll\source\repos\LA-Intervencao\LA-Intervencao\LA-Intervencao.pyproj\arquivosUpld" path_save = "{path}/{file}".format(path=path, file=arquivo.filename) if os.path.isfile(path_save): os.remove(path_save) arquivo.save(path_save) valor = path_save obj = imp.ObterFonte(id) obj.tipo = tipo obj.nome = nome obj.valor = valor imp.SalvarFonte(obj) redirect('/importacao')
def Do_Tabelas_Sel(): formulario = request.forms id = formulario.get('id') lista = imp.ListarTabelasFonte(id) for tb in lista: tabela = tb['tabela'] if formulario.get(tabela) == None: imp.RemoverTabela(tabela) else: imp.ExecutarImportacao(id) redirect('/importacao')
def mineracao_dados_cluster(): seg.ChecarPerfil(seg.PERFIL_Analista) idTabela = request.params.get('idTabela') id = request.params.get('id') tabela = imp.ObterTabela(idTabela) tabDesc = dm.ObterTabelaDescr(id) #objModelo = { # 'n_clusters': qtd_clusters, # 'modeloDados': modeloDados, # 'clusters': clusters.tolist(), # 'labels' : labels.tolist() # } modelo = json.loads(tabDesc.modelo) n_clusters = modelo['n_clusters'] modeloDados = modelo['modeloDados'] clusters = modelo['clusters'] labels = modelo['labels'] display = modelo['display'] lista = [] for itemCluster in clusters: valores2 = [] for valor in itemCluster: valores2.append(int(round(valor, 3))) lista.append(valores2) grf = comp.grfBolha('Clusters', lista, labels, '') return dict(tabela=tabela, display=display, htmlGrf=grf.grf, jsGrf=grf.js)
def Association(idTabela, filtro, qtd_regras): tabela = imp.ObterTabela(idTabela) sql = dbTab.GerarSQL(idTabela, 'S') if tabela.sql_sem_hist != None and tabela.sql_sem_hist != '': if filtro == 'H': sql = sql + ' WHERE NOT (' + tabela.sql_sem_hist + ')' elif filtro == 'A': sql = sql + ' WHERE (' + tabela.sql_sem_hist + ')' lista = db.consultarSQL(sql) regras = desc.Association(lista, int(qtd_regras)) dp_regras = json.dumps(regras) session = db.getSession() tabDesc = session.query(db.TabelaDescricao).filter_by( id_tabela=idTabela).filter_by(id_alg=id_alg_rule_association).first() if tabDesc == None: tabDesc = db.TabelaDescricao(None, idTabela, id_alg_rule_association, dp_regras, datetime.now()) session.add(tabDesc) else: tabDesc.modelo = dp_regras tabDesc.dt_processo = datetime.now() session.commit() session.close() return tabDesc
def mineracao_dados_prever(): seg.ChecarPerfil(seg.PERFIL_Analista) idTabela = request.params.get('id') tabela = imp.ObterTabela(idTabela) tabPrev = dm.ObterTabelaPredicao(idTabela) tabPrevAlg = None colunaClasse, id_coluna = meta.ObterColunaClasse(idTabela) tabelaPrev = dm.ObterDadosPrevisao(idTabela) colunas = [] for col in tabelaPrev.columns: if col == "rowid": continue coluna = meta.ObterColunaPorTabNome(idTabela, col) colunas.append({'campo': coluna.nome, 'titulo': coluna.titulo}) grid = comp.gridSP('Modelo DB para previsão', tabelaPrev, colunas, '') for alg in tabPrev.Alg: if alg.selecionado: tabPrevAlg = alg return dict(idTabela=idTabela, tabela=tabela, tabPrev=tabPrev, tabPrevAlg=tabPrevAlg, colunaClasse=colunaClasse, grid=grid)
def SelTabelas(): seg.ChecarPerfil(seg.PERFIL_Analista) id = request.params.get('id') lista = imp.ListarTabelasFonte(id) return dict(lista=lista, id=id)
def do_transformacao(): seg.ChecarPerfil(seg.PERFIL_Analista) nome = getattr(request.forms, 'nome') sql = getattr(request.forms, 'sql') persistir = getattr(request.forms, 'pers') descricao = 'Gerado pela transformacao' nome = '__' + nome tabela = imp.ObterTabela('0') tabela.nome = nome tabela.descricao = descricao tabela.sql_origem = sql tabela.id_fonte_dados = fonte_dados_transformacao if persistir == 'N': tabela.sql_destino = sql else: tabela.sql_destino = None imp.SalvarTabela(tabela) if persistir == 'S': imp.CriarTabelaDoSql(sql, nome) imp.CriarIndices(nome) imp.GerarColunas(nome) else: imp.GerarColunasComSQL(nome, sql) tabela = imp.ObterTabelaPorNome(nome) redirect('/colunas?id=' + str(tabela.id))
def do_tabela_def(): id = getattr(request.forms, 'id') descricao = getattr(request.forms, 'descricao') sql_destino = getattr(request.forms, 'sql_destino') sql_sem_hist = getattr(request.forms, 'sql_sem_hist') pln = getattr(request.forms, 'pln') tabela = imp.ObterTabela(id) tabela.descricao = descricao tabela.sql_destino = sql_destino tabela.sql_sem_hist = sql_sem_hist tabela.pln = "s" if pln == 'on' else "n" imp.SalvarTabela(tabela) redirect('/importacao')
def ObterTotalRegistros(idTabela): tabela = imp.ObterTabela(idTabela) sql_table = tabela.nome if not (tabela.sql_destino == None or tabela.sql_destino == ''): sql_table = tabela.sql_destino sql = 'SELECT COUNT(*) AS qtd FROM ' + sql_table resultado = db.consultarSQL(sql) return resultado[0]['qtd']
def Obter(): seg.ChecarPerfil(seg.PERFIL_Analista) id = request.params.get('id') obj = imp.ObterFonte(id) return json.dumps({ 'id': obj.id, 'nome': obj.nome, 'tipo': obj.tipo, 'valor': obj.valor })
def edtTabela(): seg.ChecarPerfil(seg.PERFIL_Analista) id = request.params.get('id') tabela = imp.ObterTabela(id) if tabela.descricao == None: tabela.descricao = '' if tabela.sql_destino == None: tabela.sql_destino = '' return dict(tabela=tabela)
def pre_processamento(): seg.ChecarPerfil(seg.PERFIL_Analista) listaTabelas = imp.ListarTabelas() idTabela = request.params.get('idTabela') idColuna = request.params.get('idColuna') nomeColuna = '' nomeTabela = '' sql='' for tab in listaTabelas: tab.selecionado = False if idTabela == None: idTabela = 0 else: for tab in listaTabelas: if int(tab.id) == int(idTabela): tab.selecionado = True nomeTabela = tab.nome listaColunas = meta.ListarColunas(idTabela) for col in listaColunas: col.selecionado = False if idColuna == None: idColuna = 0 else: for col in listaColunas: if int(col.id) == int(idColuna): col.selecionado = True nomeColuna = col.nome sql = col.sql resultado = None if idColuna != 0 and idTabela != 0: resultado = pre.RetornarValoresColuna(idTabela, idColuna) grfPizza = comp.grfPizza('Valores Válidos', resultado, 'COL', 'qtd', 'Valores válidos para a coluna selecionada'); return dict(listaTabelas=listaTabelas, listaColunas=listaColunas, nomeTabela=nomeTabela, nomeColuna=nomeColuna, idTabela=idTabela, idColuna=idColuna, sql=sql, grfPizza=grfPizza.grf, scriptGrafico=grfPizza.js)
def RetornarValoresColuna(idTabela, idColuna): tabela = imp.ObterTabela(idTabela) coluna = meta.ObterColuna(idColuna) sql_table = tabela.nome if not (tabela.sql_destino == None or tabela.sql_destino == ''): sql_table = tabela.sql_destino sql = 'SELECT COUNT(*) AS qtd, ' + coluna.sql + ' as COL FROM "' + sql_table + '" GROUP BY COL' #resultado = db.consultarSQL(sql) resultado = db.consultarSQLDataFrame(sql) return resultado
def mineracao_dados_rule_assoc(): seg.ChecarPerfil(seg.PERFIL_Analista) idTabela = request.params.get('idTabela') id = request.params.get('id') tabela = imp.ObterTabela(idTabela) tabDesc = dm.ObterTabelaDescr(id) regras = json.loads(tabDesc.modelo) regrasOrdenadas = sorted(regras, key=itemgetter('lift'), reverse=True) objTree = comp.treeView(regrasOrdenadas, 'campos', 'lift', 'Regras') return dict(tabela=tabela, treeView=objTree.grf, jsTree=objTree.js)
def mineracao_dados_outlier(): seg.ChecarPerfil(seg.PERFIL_Analista) idTabela = request.params.get('idTabela') id = request.params.get('id') tabela = imp.ObterTabela(idTabela) tabDesc = dm.ObterTabelaDescr(id) modelo = json.loads(tabDesc.modelo) grfOutlier = comp.grfOutliers(modelo['lista'], modelo['campoD'], modelo['campoV']) return dict(tabela=tabela, htmlGrf=grfOutlier.grf, jsGrf=grfOutlier.js)
def ObterAlunosParaRecomendacoes(id_aluno): listaMensanges = [] nomeAluno = '' tx_acerto = 0 nomeColuna, id_colunaClasse = meta.ObterColunaClasse() colunaClasse = meta.ObterColuna(id_colunaClasse) tabela = imp.ObterTabela(colunaClasse.id_tabela) colunaIdAluno = meta.ObterColunaIdAluno(colunaClasse.id_tabela) listaAlunos = [] listaColunas = [] listaColunas.append(colunaIdAluno.id) listaColunas.append(colunaClasse.id) sql = dbTab.GerarSQL(tabela.id, 'O', listaColunas) dfAlunos = db.consultarSQLDataFrame(sql) session = db.getSession() for index, row in dfAlunos.iterrows(): usuario = session.query( db.Usuario).filter_by(login=row[colunaIdAluno.nome]).first() usuario.selecionado = False if id_aluno == usuario.id: nomeAluno = usuario.nome usuario.selecionado = True listaAlunos.append(usuario) session.close() algPredicao = ObterTabelaPredicao(tabela.id) for alg in algPredicao.Alg: if alg.selecionado: tx_acerto = alg.tx_acerto if id_aluno != 0: listaMensanges = ObterRecomendacoesPorAluno(id_aluno) return dict(listaAlunos=listaAlunos, listaMensanges=listaMensanges, id_aluno=id_aluno, nomeAluno=nomeAluno, tx_acerto=tx_acerto)
def Cluster(idTabela, filtro, qtd_clusters): tabela = imp.ObterTabela(idTabela) sql = dbTab.GerarSQL(idTabela, 'S') if tabela.sql_sem_hist != None and tabela.sql_sem_hist != '': if filtro == 'H': sql = sql + ' WHERE NOT (' + tabela.sql_sem_hist + ')' elif filtro == 'A': sql = sql + ' WHERE (' + tabela.sql_sem_hist + ')' lista = db.consultarSQLDataFrame(sql) modeloDados, listaCopy = ut.PrepararLista(lista) kmeans = desc.Cluster(listaCopy, int(qtd_clusters)) clusters = kmeans.cluster_centers_ labels = kmeans.labels_ display = list() for x in range(0, int(qtd_clusters)): display.append('Cluster_' + str(x)) objModelo = { 'n_clusters': qtd_clusters, 'modeloDados': modeloDados, 'clusters': clusters.tolist(), 'labels': labels.tolist(), 'display': display } md_clusters = json.dumps(objModelo) session = db.getSession() tabDesc = session.query(db.TabelaDescricao).filter_by( id_tabela=idTabela).filter_by(id_alg=id_alg_clusters).first() if tabDesc == None: tabDesc = db.TabelaDescricao(None, idTabela, id_alg_clusters, md_clusters, datetime.now()) session.add(tabDesc) else: tabDesc.modelo = md_clusters tabDesc.dt_processo = datetime.now() session.commit() session.close() return None
def def_visao(): seg.ChecarPerfil(seg.PERFIL_Analista) id_tabela = request.params.get('id_tabela') id = request.params.get('id') nome = '' modelo = '' tipo = { } tipo['1'] = '' tipo['2'] = '' tipo['3'] = '' tipo['4'] = '' tipo['5'] = '' tabela = imp.ObterTabela(id_tabela) listaColunas = meta.ListarColunas(id_tabela) for col in listaColunas: col.selecionado = False visao = None if id != '0': visao = vis.ObterVisao(id) nome = visao.nome dTipo = visao.tipo modelo = visao.modelo tipo[dTipo] = 'selected' objModelo = json.loads(modelo) for col in listaColunas: for mod in objModelo: if int(mod['id_coluna']) == col.id: col.selecionado = True else: tipo['1'] = 'checked' return dict(id=id, nome=nome, tipo=tipo, modelo=modelo, idTabela=id_tabela, nomeTabela=tabela.nome, listaColunas=listaColunas, visao=visao, js='<script>ReconstruirGrid();</script>')
def ListTabelas(): seg.ChecarPerfil(seg.PERFIL_Analista) id = request.params.get('id') lista = imp.ListarTabelas(id) campos = ({ 'campo': 'id', 'titulo': 'Id' }, { 'campo': 'comandoNome', 'titulo': 'Nome' }) grid = comp.grid('Lista de Tabelas', lista, campos) return dict(grid=grid)
def mineracao_dados(): seg.ChecarPerfil(seg.PERFIL_Analista) idTabela = request.params.get('id') tam_tst = 15 id_coluna = 0 colunaClasse = '' if idTabela == None: idTabela = 0 listaTabelas = imp.ListarTabelas() tabPred = None listaTabelaDesc = [] listaColunaT = [] listaColunaN = [] if int(idTabela) != 0: colunaClasse, id_coluna = meta.ObterColunaClasse(idTabela) tabPred = dm.ObterTabelaPredicao(idTabela) listaTabelaDesc = dm.ListarTabelaDescricao(idTabela) listaColunaT = meta.ListarColunasPorTipo(idTabela, 'T') listaColunaN = meta.ListarColunasPorTipo(idTabela, 'N') if tabPred != None: tam_tst = tabPred.reserva_treino for tab in listaTabelas: tab.selecionado = False if int(tab.id) == int(idTabela): tab.selecionado = True return dict(idTabela=idTabela, tam_tst=tam_tst, listaTabelas=listaTabelas, id_coluna=id_coluna, colunaClasse=colunaClasse, tabPred=tabPred, listaTabelaDesc=listaTabelaDesc, listaColunaT=listaColunaT, listaColunaN=listaColunaN)
def DefColunas(): seg.ChecarPerfil(seg.PERFIL_Analista) id = request.params.get('id') if id == None: id = 0 coluna = meta.ObterColuna(id) listaTabelas = imp.ListarTabelas() colunasFk = None if coluna != None: if coluna.val_aluno_risco == None: coluna.val_aluno_risco = '' if coluna.chave_estrangeira == True: colunasFk = meta.ListarColunas(coluna.id_tabela_fk) coluna.lstTipos = ( { 'id': 'T', 'nome': 'Texto', 'selecionado': False }, { 'id': 'N', 'nome': 'Número', 'selecionado': False }, { 'id': 'D', 'nome': 'Data (seq. temporal)', 'selecionado': False }, ) for tp in coluna.lstTipos: tp['selecionado'] = False if tp['id'] == coluna.tipo: tp['selecionado'] = True return dict(listaTabelas=listaTabelas, colunasFk=colunasFk, coluna=coluna)
def ListarRecomendacoes(idTabela): session = db.getSession() listaMensagens = session.query( db.Mensagem).filter_by(id_tabela=idTabela).all() listaRetorno = [] listaColunas = meta.ListarColunas(idTabela) for msg in listaMensagens: existeAluno = False edtRow = {} msgsAluno = [] for rowRet in listaRetorno: if rowRet['id_usuario_aluno'] == msg.id_usuario_aluno: existeAluno = True edtRow = rowRet msgsAluno = edtRow['MsgsAluno'] break if existeAluno == False: edtRow['id_usuario_aluno'] = msg.id_usuario_aluno usuario = session.query( db.Usuario).filter_by(id=msg.id_usuario_aluno).first() edtRow['nome'] = usuario.nome listaRetorno.append(edtRow) msgsAluno.append(msg) edtRow['MsgsAluno'] = msgsAluno session.close() tabPredicao = ObterTabelaPredicao(idTabela) tx_acerto = 0 for alg in tabPredicao.Alg: if alg.selecionado: tx_acerto = alg.tx_acerto return dict(tabela=imp.ObterTabela(idTabela), tx_acerto=tx_acerto, lista=listaRetorno)
def LstColunas(): seg.ChecarPerfil(seg.PERFIL_Analista) listaTabelas = imp.ListarTabelas() campos = ({ 'campo': 'id_coluna_cid', 'titulo': 'ID' }, { 'campo': 'comando', 'titulo': 'Nome' }, { 'campo': 'tipo', 'titulo': 'Tipo' }, { 'campo': 'titulo', 'titulo': 'Titulo' }, { 'campo': 'desabilitado', 'titulo': 'Desabilitado' }) idTabela = request.params.get('id') listaColunas = meta.ListarColunas(idTabela) for col in listaColunas: col.comando = '<a href="/defcoluna?id=' + str( col.id) + '">' + col.nome + '</a>' for tab in listaTabelas: tab.selecionado = False if idTabela == None: idTabela = 0 else: for tab in listaTabelas: if int(tab.id) == int(idTabela): tab.selecionado = True grid = comp.grid('Lista de Colunas', listaColunas, campos, 'dados atualizados em 26/01/2018') return dict(listaTabelas=listaTabelas, grid=grid)
def Outlier(idTabela, filtro, campoD, campoV): tabela = imp.ObterTabela(idTabela) sql = dbTab.GerarSQL(idTabela, 'S') if tabela.sql_sem_hist != None and tabela.sql_sem_hist != '': if filtro == 'H': sql = sql + ' WHERE NOT (' + tabela.sql_sem_hist + ')' elif filtro == 'A': sql = sql + ' WHERE (' + tabela.sql_sem_hist + ')' lista = db.consultarSQLDataFrame(sql) campoVal = meta.ObterColuna(campoV).nome campoDesc = meta.ObterColuna(campoD).nome existeOutlier, listaDf = desc.Outliers(lista, campoVal, campoDesc) modelo = { 'campoV': campoVal, 'campoD': campoDesc, 'existe': existeOutlier, 'lista': listaDf } md_outlier = json.dumps(modelo) session = db.getSession() tabDesc = session.query(db.TabelaDescricao).filter_by( id_tabela=idTabela).filter_by(id_alg=id_alg_outliers).first() if tabDesc == None: tabDesc = db.TabelaDescricao(None, idTabela, id_alg_outliers, md_outlier, datetime.now()) session.add(tabDesc) else: tabDesc.modelo = md_outlier tabDesc.dt_processo = datetime.now() session.commit() session.close() return "OK"
def Importacao(): seg.ChecarPerfil(seg.PERFIL_Analista) lista = imp.ListarFontes() campos = { 'campo': 'nome_edt', 'titulo': 'Nome' }, { 'campo': 'descr_tipo', 'titulo': 'Tipo' }, { 'campo': 'comando_tabelas', 'titulo': 'Tabelas' } grid = comp.grid('Lista de Fontes de Dados', lista, campos, 'dados atualizados em 26/01/2018') return dict(grid=grid)
def CarregarObjetos(self): self.lbLog.delete(0, END) self.lbColeta.delete(0, END) self.lbTransformacao.delete(0, END) self.lbPredRecom.delete(0, END) listaTabelas = imp.ListarTabelas() for tabela in listaTabelas: if tabela.id_fonte_dados != 99: self.lbColeta.insert(END, tabela.nome) for tabela in listaTabelas: if tabela.id_fonte_dados == 99: self.lbTransformacao.insert(END, tabela.nome) self.lbPredRecom.insert(END, 'Predição') self.lbPredRecom.insert(END, 'Recomendação') self.txtHoraVar.set('15:45')
def ExibirMatrizConfusao(idTabela, idModPredAlg): modeloPredAlg = ObterModeloPredicaoAlg(idModPredAlg) tabPred = ObterTabelaPredicao(idTabela) tabela = imp.ObterTabela(idTabela) colunaClasse, id_coluna = meta.ObterColunaClasse(idTabela) modeloBanco = json.loads(tabPred.modelo) valoresCls = modeloBanco[colunaClasse] for valor in valoresCls: print(valor) matriz_confusao = json.loads(modeloPredAlg.matriz_confusao) return dict(idTabela=idTabela, tabela=tabela.nome, colunaClasse=colunaClasse, dt_processo=tabPred.dt_processo, algoritmo=modeloPredAlg.nome, valoresCls=valoresCls, matriz_confusao=matriz_confusao)
def ExportarDados(id_tabela): tabela = imp.ObterTabela(id_tabela) #-- Rede Gazeta #path = "C:/Users/bstoll/source/repos/LA-Intervencao/LA-Intervencao/arquivosUpld" #-- pythonanywhere path = "/home/bstoll/mysite/arquivosUpld" #-- Casa #path = "C:/Users/Bruno Stoll/source/repos/LA-Intervencao/LA-Intervencao" pathFile = "{path}/{file}".format(path=path, file=tabela.nome + ".csv") listaColunas = meta.ListarColunas(id_tabela) ar_lst_cols = [] for col in listaColunas: ar_lst_cols.append(col.id) sql = dbTab.GerarSQL(id_tabela, 'O', ar_lst_cols) df = dbTab.db.consultarSQLDataFrame(sql) if os.path.isfile(pathFile): os.remove(pathFile) df.to_csv(pathFile, index=False)
def visao(): seg.ChecarPerfil(seg.PERFIL_Analista) id_tabela = request.params.get('id') if id_tabela == None or id_tabela == '': id_tabela = 0 listaTabelas = imp.ListarTabelas() for tab in listaTabelas: tab.selecionado = False if int(tab.id) == int(id_tabela): tab.selecionado = True lista = vis.ListarVisao(id_tabela) campos = ( {'campo': 'id', 'titulo': 'ID' }, {'campo': 'nomeCommando', 'titulo': 'Nome' },{'campo': 'visualizarCommando', 'titulo': 'Mostrar' }, {'campo': 'ds_tipo', 'titulo': 'Tipo'} ) grid = comp.grid('Lista de Visões', lista, campos) return dict(listaTabelas=listaTabelas, grid=grid)
def PreverValores(idTabela): tabela = imp.ObterTabela(idTabela) colunaClasse, id_coluna = meta.ObterColunaClasse(idTabela) coluna = meta.ObterColuna(id_coluna) nomeTabela = tabela.nome nomeColunaClasse = coluna.nome LimparDadosColunaClasse(nomeTabela, nomeColunaClasse) tabPredicao = ObterTabelaPredicao(tabela.id) algPredicao = None for alg in tabPredicao.Alg: if alg.selecionado: algPredicao = alg modeloDb = json.loads(tabPredicao.modelo) modeloDbColClasse = modeloDb[colunaClasse] df = ObterDadosPrevisao(idTabela) dfListaCopy = df.copy() rowids = df['rowid'] del dfListaCopy[colunaClasse] del dfListaCopy['rowid'] for index, row in dfListaCopy.iterrows(): rowPred = ut.VoltarModelo(dict(row), modeloDb) val_prev = algPredicao.clf.predict([rowPred]) for key, value in modeloDbColClasse.items(): if int(key) == int(val_prev): classe_prev = 'LA :: Prev :: ' + value rowid = rowids[index] AtualiarClasse(nomeTabela, nomeColunaClasse, classe_prev, rowid) break