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 profAlunos(): seg.ChecarPerfil(seg.PERFIL_Professor) colunaIdAluno = meta.ObterColunaIdAluno() nomeColunaClasse, idColunaClasse = meta.ObterColunaClasse( colunaIdAluno.id_tabela) sql = dbTab.GerarSQL(colunaIdAluno.id_tabela, 'O', [colunaIdAluno.id, idColunaClasse]) df = dm.db.consultarSQLDataFrame(sql) lista = [] for index, row in df.iterrows(): login_aluno = row[colunaIdAluno.nome] usuario = usu.ObterUsuarioPorLogin(login_aluno) lista.append(usuario) campos = ({ 'campo': 'login', 'titulo': 'matricula' }, { 'campo': 'nome', 'titulo': 'Nome' }) grd = comp.grid('Lista de Alunos', lista, campos) return dict(grid=grd)
def ListarCampos(idTabela, edt = True, splColunas = []): listaCampos = meta.ListarColunas(idTabela) listaExibicao = dbTab.ListarExibicao(idTabela) campos = [ ] for col in listaCampos: if col.desabilitado == True: continue if len(splColunas) != 0: existeColunaFiltro = False for idCol in splColunas: if int(idCol) == int(col.id): existeColunaFiltro = True if existeColunaFiltro == False: continue if col.chave_estrangeira == False or edt == False: c_campo = {'campo': col.nome, 'titulo': col.titulo } else: c_campo = {'campo': col.nome, 'titulo': '<a href="transformacao_sel?idTabela=' + str(idTabela) + '&idColuna=' + str(col.id) + '">' + col.titulo + '</a>' } campos.append(c_campo) conta_tb = 0 for colExib in listaExibicao: col = meta.ObterColuna(colExib.id_coluna_fk) if col.desabilitado == True: continue if len(splColunas) != 0: existeColunaFiltro = False for idCol in splColunas: if int(idCol) == int(col.id): existeColunaFiltro = True if existeColunaFiltro == False: continue conta_tb = conta_tb + 1 if edt == True: c_campo = {'campo': col.nome, 'titulo': '<a href="#" style="color: red;">' + col.titulo + '</a>' } else: c_campo = {'campo': col.nome, 'titulo': col.titulo } campos.append(c_campo) return campos
def visao_exibir(): seg.ChecarPerfil(seg.PERFIL_Analista) idVisao = request.params.get('id') visao = vis.ObterVisao(idVisao) objGrf = dbTab.GerarVisao(idVisao) return dict(idTabela=visao.id_tabela, html=objGrf.grf, js=objGrf.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 ObterColunaClasse(idTabela): session = db.getSession() obj = session.query(db.Coluna).filter_by(id_tabela=idTabela).filter_by(classe=True).first() session.close() if obj != None: return obj.nome, obj.id else: listaExibicao = dbTab.ListarExibicao(idTabela) for colExib in listaExibicao: col = meta.ObterColuna(colExib.id_coluna_fk) if col.classe: return col.nome, col.id return '', None
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 CalcularPreditivo(idTabela, id_coluna, tam_tst): sql = dbTab.GerarSQL(idTabela, 'S') lista = db.consultarSQLDataFrame(sql) del lista['rowid'] colunaClasse = meta.ObterColuna(id_coluna) modeloDados, listaCopy = ut.PrepararLista(lista) listaModeloPred = None jsModeloDados = json.dumps(modeloDados, default=iDefault) if colunaClasse.tipo == 'N': listaCopy[colunaClasse.nome] = ut.TransformarNumeros( lista[colunaClasse.nome].values()) listaModeloPred = pred.ModeloReg(listaCopy, colunaClasse.nome, tam_tst) else: listaModeloPred, clfTree = pred.ModeloClf(listaCopy, colunaClasse.nome, tam_tst) lstPesos = pred.ObterPesos(lista, clfTree, colunaClasse.nome, colunaClasse.val_aluno_risco) strPesos = json.dumps(lstPesos) maiorTxAcerto = 0 id_alg_sel = 0 for modelo in listaModeloPred: txAcerto = modelo['TxAcerto'] if maiorTxAcerto < txAcerto: id_alg_sel = modelo['id_alg'] maiorTxAcerto = txAcerto tabPred = db.TabelaPredicao(0, idTabela, jsModeloDados, None, tam_tst, strPesos, id_alg_sel) tabPred = SalvarTabelaPredicao(tabPred) SalvarTabelaPredicaoAlg(tabPred.id, listaModeloPred, lstPesos) #modelo2, listaCopy2 = ut.PrepararListaComModelo(modeloDados, lista) ExportarDados(idTabela) return listaModeloPred
def viewdashboar(): seg.ChecarPerfil(seg.PERFIL_Analista) id = request.params.get('id') painel = pnl.ObterPainel(id) if painel.modelo.startswith('http') == False: objModelo = json.loads(painel.modelo) if len(objModelo) == 0: redirect('/dashboard') ultObj = objModelo[len(objModelo) - 1] html = '' js = '' ultLinha = int(ultObj['idLinha']) for linha in range(1, ultLinha + 1): htmlLinha = '<div id="row' + str(linha) + '" class="row">' for i in range(0, len(objModelo)): corrObjModelo = objModelo[i] if corrObjModelo['idLinha'] == linha: id_visao = corrObjModelo['id_visao'] objGrf = comp.defGrafico('', '') if id_visao != 0: objGrf = dbTab.GerarVisao(id_visao) htmlCell = '<div class="col-lg-' + corrObjModelo[ 'opcaoColuna'] + '">' + objGrf.grf + '</div>' htmlLinha = htmlLinha + htmlCell js = js + objGrf.js htmlLinha = htmlLinha + '</div><br>' html = html + htmlLinha else: html = '<div id="rptEmbed"></div>' js = '<script type="text/javascript">initViz("' + painel.modelo + '", "rptEmbed");</script>' return dict(titulo=painel.nome, html=html, js=js)
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 painel_aluno_vw(): seg.ChecarPerfil(seg.PERFIL_Estudante) id = request.params.get('id') painel = pnl.ObterPainel(id) # somente dados dos alunos if painel.tipo != 'A': redirect('/homeEstudante') objModelo = json.loads(painel.modelo) ultObj = objModelo[len(objModelo) - 1] html = '' js = '' ultLinha = ultObj['idLinha'] for linha in range(1, ultLinha + 1): htmlLinha = '<div id="row' + str(linha) + '" class="row">' for i in range(0, len(objModelo)): corrObjModelo = objModelo[i] if corrObjModelo['idLinha'] == linha: id_visao = corrObjModelo['id_visao'] objGrf = comp.defGrafico('', '') if id_visao != 0: objGrf = dbTab.GerarVisao(id_visao) htmlCell = '<div class="col-lg-' + corrObjModelo[ 'opcaoColuna'] + '">' + objGrf.grf + '</div>' htmlLinha = htmlLinha + htmlCell js = js + objGrf.js htmlLinha = htmlLinha + '</div><br>' html = html + htmlLinha return dict(titulo=painel.nome, html=html, js=js)
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 GerarDfVisaoPln(id_tabela, colunasDimensoes, colunasMedidas, filtro=''): # montar itens da visão listaColunas = [] listaTodasColunas = [] listaColunasExibGrd = [] defColunasAgrp = { } campoCateg = None filtroClasse = 'O' for coluna in colunasDimensoes: listaColunas.append(coluna.id) nomeCampo = coluna.nome if campoCateg == '': campoCateg = coluna.nome else: campoSerie = coluna.nome defColunasAgrp[coluna.id] = '' listaTodasColunas.append(nomeCampo) listaColunasExibGrd.append( {'campo': coluna.nome, 'titulo': coluna.titulo } ) for coluna in colunasMedidas: listaColunas.append(coluna.id) nomeCampo = coluna.nome if coluna.tipo == 'N': defColunasAgrp[coluna.id] = 'Sum' listaTodasColunas.append(nomeCampo) listaColunasExibGrd.append( {'campo': coluna.nome, 'titulo': coluna.titulo } ) sql = dbTab.GerarSQL(id_tabela, filtroClasse, listaColunas, True, defColunasAgrp, filtro) df = db.consultarSQLDataFrame(sql) for col in df.columns: if col == 'final_result': df[col][df[col] == 'LA :: Prev :: Falha'] = 'Falha' df[col][df[col] == 'LA :: Prev :: Sucesso'] = 'Sucesso' return df
def explorar_dados(): seg.ChecarPerfil(seg.PERFIL_Analista) idTabela = request.params.get('id') idColunas = request.params.get('idColunas') tipo = request.params.get('tipo') listaTabelas = imp.ListarTabelas() listaColunas = [] grid = '' if tipo == None: tipo = 'D' if idTabela == None: idTabela = 0 idColunas = '' tipo = 'D' else: for col in meta.ListarColunas(idTabela): listaColunas.append(col) listaExibicao = dbTab.ListarExibicao(idTabela) for colExib in listaExibicao: col_lookup = meta.ObterColuna(colExib.id_coluna_fk) listaColunas.append(col_lookup) for col in listaColunas: col.selecionado = False if idColunas == None or idColunas == '': idColunas = '' else: splColunas = idColunas.split(',') for col in listaColunas: for idCol in splColunas: if int(idCol) == int(col.id): col.selecionado = True if len(splColunas) != 0: campos = meta.ListarCampos(idTabela, False, splColunas) if tipo == 'D': resultado = dbTab.ListarDados(idTabela, splColunas) grid = comp.grid('Registros', resultado, campos, '') elif tipo == 'I': resultado = dbTab.InformDados(idTabela, splColunas) #grid = comp.grid('Registros', resultado, campos, '') for tab in listaTabelas: tab.selecionado = False if int(tab.id) == int(idTabela): tab.selecionado = True return dict(idTabela=idTabela, idColunas=idColunas, tipo=tipo, listaTabelas=listaTabelas, listaColunas=listaColunas, grid=grid)
def GerarSQLTop10(idTabela): return dbTab.GerarSQL(idTabela) + ' LIMIT 10'
def ObterDadosPrevisao(idTabela): sql = dbTab.GerarSQL(idTabela, 'O') return db.consultarSQLDataFrame(sql)