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

Campos derivados

Se você tiver um grupo de campos relacionados ou campos que carregam informações que podem ser divididas em partes menores, que são relevantes quando se está criando dimensões e medidas, você pode criar definições de campo que podem ser usadas para gerar campos derivados. Um exemplo é um campo de data, da qual se pode derivar vários atributos, como ano, mês, número da semana ou nome do dia. Todos esses atributos podem ser calculados em uma expressão de dimensão usando funções de data Qlik Sense, mas uma alternativa é criar uma definição de calendário que seja comum para todos os campos do tipo data. As definições de campo são armazenadas no script de carga de dados.

Nota informativaDefinições de campo de calendário padrão para o Qlik Sense estão incluídas em autoCalendar para campos de data carregados com o uso do Gerenciador de dados.Para obter mais informações, consulte Derivando campos de data automaticamente usando calendário automático e Adicionando dados ao aplicativo a partir de conexões e novos arquivos.

Declarar as definições de campo do calendário

Você usa o comando Declare para criar uma definição dos campos derivados. É nesse momento que você define os diferentes atributos do campo, nesse caso, atributos relacionados a dados. Cada campo é descrito como <expression> As field_name tagged tag. A configuração de uma ou mais tags é opcional, mas pode afetar a ordem de classificação do campo derivado. Use $1 para referenciar o campo de dados a partir do qual os campos derivados devem ser gerados.

Nota de advertência A menos que você esteja criando seu próprio calendário automático ou trabalhando com o [autoCalendar] autoconfigurado criado pelo Gerenciador de dados, não use o autoCalendar como nome para definições de campos de calendário. Este nome é reservado para modelos de calendário gerados automaticamente. Consulte Derivando campos de data automaticamente usando calendário automático.
Calendar: DECLARE FIELD DEFINITION TAGGED '$date' Parameters first_month_of_year = 1 Fields Year($1) As Year Tagged ('$numeric'), Month($1) as Month Tagged ('$numeric'), Date($1) as Date Tagged ('$date'), Week($1) as Week Tagged ('$numeric'), Weekday($1) as Weekday Tagged ('$numeric'), DayNumberOfYear($1, first_month_of_year) as DayNumberOfYear Tagged ('$numeric');
 

Para obter mais informações, consulte Declare.

Mapear campos de dados para o calendário com Derive

A próxima etapa é usar o comando Derive para mapear campos de dados existentes para o calendário. Isso criará os campos derivados. Você pode fazer isso de três maneiras alternativas no script de carga de dados:

  • Mapear campos específicos por nome do campo.

    DERIVE FIELDS FROM FIELDS OrderDate,ShippingDate USING Calendar;
  • Mapear todos os campos com uma ou mais tags específicas de campo.

    DERIVE FIELDS FROM EXPLICIT TAGS ('$date') USING Calendar;
  • Mapear todos os campos marcados com uma ou mais tags da definição de campo ($date no exemplo acima).

    DERIVE FIELDS FROM IMPLICIT TAG USING Calendar;

Nesse caso, você pode usar qualquer um dos três exemplos citados aqui.

Para obter mais informações, consulte Derive.

Derivando campos de data automaticamente usando calendário automático

Se você usar o Gerenciador de dados para criar seu aplicativo e carregar dados, um calendário nomeado [autocalendar] será automaticamente inserido no script de carregamento para fornecer definições de calendário padrão. Eles ficam visíveis na lógica de negócios do aplicativo.

Para aplicativos criados usando scripts que contêm campos de data, você pode inserir este código [autocalendar], mostrado abaixo, em seu script em uma seção depois de carregar todos os campos de data aplicáveis. Isso permite que os usuários do aplicativo usem todos os tipos de análise baseados em período disponíveis, incluindo aqueles que podem construir pastas inteligentes. Observe que o calendário deve ter um título [autocalendar] para que os períodos do calendário sejam adicionados corretamente na lógica de negócios.

Modifique os nomes dos campos [My_Date_Field1] e [My_Date_Field2] na linha DERIVE FIELDS FROM FIELDS [My_Date_Field1], [My_Date_Field2] USING [autoCalendar] ; para vincular o campo de data aos cálculos do calendário automático que geram os novos campos de data derivados. Se você tiver apenas um campo de data para vincular ao calendário automático, remova o [My_Date_Field2]. Da mesma forma, adicione campos de data adicionais se você tiver mais de dois campos de data para ativar o calendário automático.

[autoCalendar]:
  DECLARE FIELD DEFINITION Tagged ('$date')
FIELDS		
  Dual(Year($1), YearStart($1)) AS [Year] Tagged ('$axis', '$year'),
  Dual('Q'&Num(Ceil(Num(Month($1))/3)),Num(Ceil(NUM(Month($1))/3),00)) AS [Quarter] Tagged ('$quarter', '$cyclic'),
  Dual(Year($1)&'-Q'&Num(Ceil(Num(Month($1))/3)),QuarterStart($1)) AS [YearQuarter] Tagged ('$yearquarter', '$qualified'),
  Dual('Q'&Num(Ceil(Num(Month($1))/3)),QuarterStart($1)) AS [_YearQuarter] Tagged ('$yearquarter', '$hidden', '$simplified'),
  Month($1) AS [Month] Tagged ('$month', '$cyclic'),
  Dual(Year($1)&'-'&Month($1), monthstart($1)) AS [YearMonth] Tagged ('$axis', '$yearmonth', '$qualified'),
  Dual(Month($1), monthstart($1)) AS [_YearMonth] Tagged ('$axis', '$yearmonth', '$simplified', '$hidden'),
  Dual('W'&Num(Week($1),00), Num(Week($1),00)) AS [Week] Tagged ('$weeknumber', '$cyclic'),
  Date(Floor($1)) AS [Date] Tagged ('$axis', '$date', '$qualified'),
  Date(Floor($1), 'D') AS [_Date] Tagged ('$axis', '$date', '$hidden', '$simplified'),
  If (DayNumberOfYear($1) <= DayNumberOfYear(Today()), 1, 0) AS [InYTD] ,
  Year(Today())-Year($1) AS [YearsAgo] ,
  If (DayNumberOfQuarter($1) <= DayNumberOfQuarter(Today()),1,0) AS [InQTD] ,
  4*Year(Today())+Ceil(Month(Today())/3)-4*Year($1)-Ceil(Month($1)/3) AS [QuartersAgo] ,
  Ceil(Month(Today())/3)-Ceil(Month($1)/3) AS [QuarterRelNo] ,
  If(Day($1)<=Day(Today()),1,0) AS [InMTD] ,
  12*Year(Today())+Month(Today())-12*Year($1)-Month($1) AS [MonthsAgo] ,
  Month(Today())-Month($1) AS [MonthRelNo] ,
  If(WeekDay($1)<=WeekDay(Today()),1,0) AS [InWTD] ,
  (WeekStart(Today())-WeekStart($1))/7 AS [WeeksAgo] ,	
  Week(Today())-Week($1) AS [WeekRelNo] ;

DERIVE FIELDS FROM FIELDS [My_Date_Field1], [My_Date_Field2] USING [autoCalendar] ;

Se feito corretamente, vários períodos do calendário serão criados automaticamente na lógica de negócios do aplicativo, e você poderá usar os tipos de análise baseados em período no Insight Advisor.

Para obter mais informações, consulte Usando pastas inteligentes no Insight Advisor para análises baseadas em período.

Usar os campos de data derivados em uma visualização

Qlik Sense está preparado para reconhecer campos derivados de data caso você tenha criado uma definição de calendário e mapeado os campos, conforme o exemplo aqui. Eles estão disponíveis na seção Campos de data e hora do painel de ativos Campos. Você encontrará também todos os campos derivados no editor de expressão e quando criar ou editar dimensões.

Para obter mais informações, consulte Campos de data e hora.

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!