Ir para conteúdo principal Pular para conteúdo complementar

Referências de campo descobertas

Um campo é considerado descoberto quando não está incluído em uma função de agregação.

Uma referência de campo descoberta é uma matriz, possivelmente contendo vários valores. Em caso positivo, o Qlik Sense o avaliará como NULL, sem saber qual deles é o valor desejado.

Sempre use uma função de agregação na sua expressão

Se você achar que sua expressão não é avaliada corretamente, há uma grande chance de ela não ter uma função de agregação.

Uma referência de campo em uma expressão é uma matriz de valores. Por exemplo:

Duas tabelas, uma mostrando que Max(Invoice Date) é um valor único e outra mostrando que Invoice Date é uma matriz de valores.

Duas tabelas, uma mostrando que Max(Invoice Date) é um valor único e outra mostrando que Invoice Date é uma matriz de valores.

Você deve delimitar o campo Data da Fatura em uma função de agregação para fazer com que ele se reduza a um único valor:

Se você não usar uma função de agregação na sua expressão, o Qlik Sense usará a função Only() por padrão. Se a referência de campo retornar vários valores, o Qlik Sense a interpretará como NULL.

Dividindo datas de faturas usando a função If()

A função If() é frequentemente usada para agregações condicionais. Ela retorna um valor dependendo de a condição fornecida na função ser avaliada como True ou False.

Dentro do aplicativo, na pasta Naked field references, você encontrará uma tabela com o título Using If() on Invoice dates.

  1. Selecione a tabela disponível com o título Using If() on Invoice dates.
    O painel de propriedades é aberto.
  2. Clique em Adicionar coluna e selecione Medida.
  3. Clique no símbolo Expressão.
    O editor de expressões é aberto.
  4. Insira o seguinte: If( [Invoice Date]>= Date(41323), 'After', 'Before' )
  5. Clique em Aplicar.

Tabela mostrando datas de faturas divididas por uma data de referência.

Tabela mostrando datas de faturas divididas por uma data de referência.

Essa expressão testa se Invoice Date é anterior à data de referência 18/02/2013 e retorna 'Before' em caso positivo. Se a data for posterior ou igual à data de referência 18/02/2013, 'After' será retornado. A data de referência é expressa como o número inteiro 41323.

Para obter mais informações, consulte if - função de gráfico e script

Evitando referências de campo descobertas

À primeira vista, esta expressão parece correta:

If([Invoice Date]>= Date(41323) 'After', 'Before')

Ela deve avaliar datas de faturas após a data de referência, retornar 'After' ou, caso contrário, retornar 'Before'. Porém, Invoice Date é uma referência de campo descoberta. Ela não possui uma função de agregação e, como tal, é uma matriz com vários valores e será avaliada como NULL. No exemplo anterior, havia apenas um Invoice Date por valor Date na nossa tabela e, portanto, a expressão foi corretamente calculada.

Vejamos como uma expressão semelhante é calculada com um valor dimensional diferente e como resolver o problema de referência de campo descoberta:

Evitando referências de campo descobertas em uma função If()

Usaremos uma expressão semelhante à anterior:

If([Invoice Date]>= Date(41323), Sum(Sales))

Dessa vez, a função soma as vendas após a data de referência.

Dentro do aplicativo, na pasta Naked field references, você encontrará uma tabela com o título Sum(Amount).

  1. Selecione a tabela Sum(Amount) disponível.
    O painel de propriedades é aberto.
  2. Clique em Adicionar coluna e selecione Medida.
  3. Clique no símbolo Expressão.
    O editor de expressões é aberto.
  4. Insira o seguinte: If( [Invoice Date]>= 41323, Sum(Sales) )
  5. Clique em Aplicar.

Tabela mostrando o ano, a soma das vendas de cada ano e os resultados da expressão usando a função If().

Tabela mostrando o ano, a soma das vendas de cada ano e os resultados da expressão

Nota de dicaMantenha o Rótulo intacto nas medidas para mostrar as diferenças entre cada expressão. Em colunas com valores monetários, alteramos o Formato numérico para Dinheiro e o Padrão de formato para $ #,##0;-$ #,##0.

Para cada ano, há uma matriz de datas de fatura após a data de referência. Como a nossa expressão não tem uma função de agregação, ela é avaliada como NULL. Uma expressão correta deve usar uma função de agregação, como Min() ou Max(), no primeiro parâmetro da função If():

If(Max([Invoice Date])>= Date(41323), Sum(Sales))

  1. Clique em Adicionar coluna e selecione Medida.
  2. Clique no símbolo Expressão.
    O editor de expressões é aberto.
  3. Insira o seguinte: If( [Invoice Date]>= Date(41323), Sum(Sales) )
  4. Clique em Aplicar.

Tabela mostrando o ano, a soma das vendas de cada ano e os resultados das diferentes expressões usando a função If().

Tabela mostrando o ano, a soma das vendas de cada ano e os resultados das diferentes expressões

Como alternativa, a função If() pode ser colocada dentro da função Sum():

Sum(If([Invoice Date]>= Date(41323), Sales) )

  1. Clique em Adicionar coluna e selecione Medida.
  2. Clique no símbolo Expressão.
    O editor de expressões é aberto.
  3. Insira o seguinte: Sum( If([Invoice Date]>= Date(41323), Sales ) )
  4. Clique em Aplicar.

Tabela mostrando o ano, a soma das vendas de cada ano e os resultados das diferentes expressões usando a função If().

Tabela mostrando o ano, a soma das vendas de cada ano e os resultados das diferentes expressões

Na penúltima expressão, a função If() foi avaliada uma vez por valor dimensional. Na última expressão, ela é avaliada uma vez por linha nos dados brutos. A diferença em como a função é avaliada faz com que os resultados sejam diferentes, mas ambos retornam uma resposta. A primeira expressão é simplesmente avaliada como NULL. A imagem acima mostra a diferença entre as expressões, usando 18/02/2013 como data de referência.

Esta página ajudou?

Se você encontrar algum problema com esta página ou seu conteúdo - um erro de digitação, uma etapa ausente ou um erro técnico - informe-nos como podemos melhorar!