Saltar al contenido principal Saltar al contenido complementario

Campos derivados

Si tenemos un grupo de campos que están relacionados, o si los campos portan información que puede desglosarse en partes más pequeñas útiles para crear dimensiones o medidas, podemos crear definiciones de campos que sirvan para generar campos derivados. Un ejemplo de esto es un campo de fecha, desde el que podemos derivar múltiples atributos, como por ej. año, mes, número de semana o día de la semana. Todos estos atributos pueden calcularse en una expresión de dimensión empleando funciones de fecha de Qlik Sense, pero una alternativa es crear una definición de calendario que sea común para todos los campos del tipo fecha. Las definiciones de campo se almacenan en el script de carga de datos.

Nota informativaLas definiciones de campos de calendario predeterminadas para Qlik Sense se incluyen en autoCalendar para campos de fecha cargados usando el Gestor de datos.Para obtener más información, vea Derivar automáticamente campos de fecha usando el calendario automático y Añadir datos a la app.

Declarar las definiciones de campos de calendario

Utilizamos la sentencia Declare para crear una definición de los campos derivados. Aquí es donde definimos los distintos atributos del campo, en este caso atributos relacionados. Cada campo se describe como <expression> As field_name tagged tag. Configurar una o más etiquetas es opcional, pero puede afectar a la ordenación del campo derivado. Utilice $1 para hacer referencia al campo de datos desde el que se deben generar los campos derivados.

Nota de aviso A menos que esté creando su propio calendario automático o trabajando con la configuración automática de [autoCalendar] creada por Gestor de datos, no utilice autoCalendar como nombre para las definiciones de campos del calendario. Este nombre se reserva para las plantillas de calendario generadas automáticamente. Vea Derivar automáticamente campos de fecha usando el calendario 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 más información, vea Declare.

Enlazar campos de datos de mapas con el calendario mediante Derive

El siguiente paso es utilizar la sentencia Derive para enlazar campos de datos previos con el calendario. Esto creará los campos derivados. Podemos hacer esto de tres maneras distintas en el script de carga de datos.

  • Asociar campos específicos por nombre de campo.

    DERIVE FIELDS FROM FIELDS OrderDate,ShippingDate USING Calendar;
  • Asociar todos los campos que contengan una o más etiquetas de campo específicas.

    DERIVE FIELDS FROM EXPLICIT TAGS ('$date') USING Calendar;
  • Asociar todos los campos que están etiquetados con una de las etiquetas de la definición de campo ($date en el ejemplo anterior).

    DERIVE FIELDS FROM IMPLICIT TAG USING Calendar;

En este caso podría utilizar cualquiera de los tres ejemplos aquí presentados.

Para más información, vea Derive.

Derivar automáticamente campos de fecha usando el calendario automático

Si utiliza Gestor de datos para crear su aplicación y cargar datos, se inserta automáticamente un calendario denominado [autocalendar] en el script de carga para proporcionar definiciones de calendario predeterminadas. Estas están visibles en la lógica de negocio de la aplicación.

Para las apps creadas utilizando secuencias de script que contienen campos de fecha, puede insertar este código [autocalendar], que se muestra a continuación, en una sección de su script, después de haber cargado todos los campos de fecha aplicables. Esto permite a los usuarios de la app utilizar todos los tipos de análisis basados en períodos disponibles, incluidos aquellos que pueden crear hojas inteligentes. Tenga en cuenta que el calendario debe titularse [autocalendar] para que los períodos del calendario se agreguen correctamente en la lógica de negocio.

Modifique los nombres de los campos [My_Date_Field1] y [My_Date_Field2] en la línea DERIVE FIELDS FROM FIELDS [My_Date_Field1], [My_Date_Field2] USING [autoCalendar] ; para vincular el campo de fecha con los cálculos del calendario automático que generan los nuevos campos de fecha derivados. Si solo tiene un campo de fecha para vincular al calendario automático, elimine [My_Date_Field2]. De manera similar, agregue campos de fecha adicionales si tiene más de dos campos de fecha para habilitar el calendario 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] ;

Si se hace correctamente, se creará automáticamente una cantidad de períodos de calendario en la lógica de negocio de la aplicación y podrá utilizar los tipos de análisis basados en períodos en Insight Advisor.

Para más información, vea Uso de hojas inteligentes para análisis basados en períodos en Insight Advisor.

Usar los campos de fecha derivados en una visualización

Qlik Sense está preparado para reconocer campos de fecha derivados si hemos creado una definición de calendario y asociado los campos como en este ejemplo. Están disponibles en la sección Campos fecha y hora del panel de activos Campos. También encontrará todos los campos derivados en el editor de expresiones y cuando cree o edite dimensiones.

Para más información, vea Campos de fecha y hora.

¿Esta página le ha sido útil?

No dude en indicarnos en qué podemos mejorar si encuentra algún problema en esta página o su contenido, como, por ejemplo, errores tipográficos, pasos que falta o errores técnicos.