4
respostas

Erro ao executar OLAP "COMPLETO"

Olá!

Após criar a Fato Completa, realizar todas as ligações com as tabelas organizacionais e criar o OLAP "Completo", consegui salvá-lo, Recompilar o projeto OLAP Sucos e até mesmo processar o cubo "Completo". No entanto, quando clico em "Executar", o Visual Studio retorna um erro.

O erro é o seguinte:

Errors in the OLAP storage engine: The attribute key cannot be found when processing: Table: 'Fato_x0020_Completa', Column: 'Cod_Organizacional', Value: '11'. The attribute is 'Organizacional'. Errors in the OLAP storage engine: The attribute key was converted to an unknown member because the attribute key was not found. Attribute Organizacional of Dimension: Organizacional from Database: OLAPSucos, Cube: COMPLETO, Measure Group: Fato Completa, Partition: Fato Completa, Record: 1.

Imagino que tenha algo a ver com o fato de o nome da coluna "Código Filho" na Fato Completa ser "Cod_Organizacional" e o nome da coluna "Código Filho" na Dimensão Organizacional ser "Cod_Organizacional", mas pude checar que nas tabelas do instrutor os nomes estão assim também.

Como posso resolver?

4 respostas

Oi Karina! Como vai?

Vou tentar te ajudar!

Você precisa acessar essa tabela, e verificar se existe algum valor nulo. Verifique também se esse valor "11" existe tanto na fonte como na fato completa.

Outra coisa que pode estar acontecendo é você ter escrito 'Cod_Organizacional' de algum jeito diferente em alguma das etapas.

Onde que você escreveu apenas 'Organizacional'?

Obrigada pela resposta! Mas ainda não consegui resolver.

Na tabela "Dim.Organizacional" existe o valor "11" no campo "Cod_Filho". O campo "Desc_Filho" da Dim.Organizacional é o que ligamos com o campo "Código do Filho (Cod_Organizacional) da Fato Completa.

Tirei alguns prints da tela para demonstrar: https://drive.google.com/drive/folders/1vs-3OMqcwamV7VjKbnM1YEifvP5KMuvx?usp=sharing

Eu grifei na imagem acima a coluna "Desc_Pai" da tabela Dim.Organizacional. Eu criei essa coluna por erro/distração e depois não consegui excluí-la sem causar problemas no conjunto do DW. Até agora ela não havia causado nenhum tipo de erro. Mas se esse for o caso, peço instruções sobre como excluí-la.

Sobre seu outro ponto, como eu posso verificar se existe o valor "11" na Fato Completa sem antes fazer seu deploy e execução?

  • Eu só escrevi "Organizacional" no momento de criação da dimensão temporária "Organizacional" para construção dos OLAPS. Refiz os passos dessa criação e tudo está correto, de acordo com o que o professor fez.

  • Também verifiquei minhas tabelas de fato em que existe uma coluna chamada "Cod_Organizacional" e o nome está escrito corretamente.

Se precisar de qualquer outra tela para entender melhor o caso, me avise. Espero que possa me ajudar porque simplesmente não tenho como seguir o curso sem resolver isso.

Obrigada!

Oi Karina!

Vou tentar te ajudar da melhor maneira possível.

Não sei se é exatamente esse o problema, mas acredito que tenha a ver sim com essa coluna. Não pela coluna em si, mas acredito que o cubo por conta de alguma configuração prévia não consegue processar os valores nulos.

Se quiser apenas acompanhar o curso, pode fazer o backup do projeto do professor na seguinte aula:

https://cursos.alura.com.br/course/business-intelligence-olap-sql-server/task/35420

Nesse caso não haverá o problema dessa coluna.

Só precisará fazer novamente as atividades das primeiras aulas desse curso.

Se quiser investigar mais a fundo o problema:

  • Para remover uma coluna, você precisa primeiro removar todas as conexões que aquela tabela tem, se não dará erro mesmo.

  • Como estamos muito a frente no projeto, talvez essa não seja a melhor opção nesse momento, pois te tomará muito tempo.

  • Existe também uma maneira de executar um comando SQL no SQL Server Management Studio que pode excluir um coluna de um banco de dados, entretanto ela foge um pouco do escopo do curso e não sei como isso ficaria no visual studio. De qualquer maneira, o código é o segiunte:

Para excluir uma coluna

ALTER TABLE nome_tabela DROP COLUMN nome_coluna;

Para evitar valores nulos

ALTER TABLE nome_tabela MODIFY nome_coluna tipo_dados NOT NULL;

Entretanto aqui a regra das conexões também vale.

Continuando

O problema é que coluna está vazia! Você pode fazer uma carga nessa coluna com um valor qualquer para cada cod filho, apenas para evitar valores nulos.

Outra Opção

Creio que tambem exista nas propriedades, acho no mesmo lugar onde alteramos a "name column", um tópico de processamento de erros, onde podemos definir as seguintes configurações:

NullKeyConvertedToUnknown: 'Ignore Error' NullKeyNotAllowed: 'Report and Continue'

Com essas configurações, o cubo deve processar os nulos sem problemas. Ele criará um alerta, mas creio que isso não impedirá o processamento de ocorrer.

Oi, Marina!

Muito obrigada pela atenção! Eu utilizei a última opção que você propôs e consegui "burlar" o problema!

Obrigada!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software