

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Adición de campos calculados
<a name="adding-a-calculated-field-analysis"></a>

Cree campos calculados para transformar los datos mediante una o más de las siguientes opciones: 
+ [Operadores](arithmetic-and-comparison-operators.md)
+ [Funciones](functions.md)
+ Funciones de agregación (solo puede añadirlas a un análisis)
+ Campos que contienen datos
+ Otros campos calculados

Puede añadir campos calculados a un conjunto de datos durante la preparación de datos o desde la página de análisis. Si se añade un campo calculado a un conjunto de datos al prepararse los datos, este estará disponible para todos los análisis que utilicen ese conjunto de datos. Cuando añade un campo calculado a un conjunto de datos de un análisis, solo estará disponible en dicho análisis. 

Los análisis admiten operaciones de una sola fila y operaciones de agregación. Las operaciones de una sola fila son las que ofrecen un resultado (potencialmente) diferente para cada fila. Las operaciones de agregación ofrecen siempre los mismos resultados para todos los conjuntos de filas. Por ejemplo, si se utiliza una función de cadena sencilla sin condiciones, cambian todas las filas. Si se utiliza una función de agregación, se aplica a todas las filas de un grupo. Si se pide el importe total de ventas de Estados Unidos, este mismo importe se aplica a todo el conjunto. Si se piden datos sobre un determinado estado, el importe total de ventas cambia para reflejar la nueva agrupación, aunque sigue ofreciendo un solo resultado para todo el conjunto.

Si se crea el campo de agregación calculado en el análisis, es posible desglosar los datos. El valor de este campo de agregación se vuelve a calcular de manera adecuada para cada nivel. Este tipo de agregación no es posible durante la preparación del conjunto de datos.

Por ejemplo, supongamos que desea averiguar el porcentaje de beneficios de cada país, región y estado. Puede añadir un campo calculado al análisis, `(sum(salesAmount - cost)) / sum(salesAmount)`. A continuación, este campo se calcula para cada país, región y estado cuando el analista analiza los distintos niveles geográficos.

**Topics**
+ [Adición de campos calculados a un análisis](#using-the-calculated-field-editor-analysis)
+ [Adición de campos calculados a un conjunto de datos](#using-the-calculated-field-editor)
+ [Gestión de valores decimales en campos calculados](#handling-decimal-fields)

## Adición de campos calculados a un análisis
<a name="using-the-calculated-field-editor-analysis"></a>

Cuando agrega un conjunto de datos a un análisis, todos los campos calculados que existen en el conjunto de datos se agregan al análisis. Puede agregar campos calculados adicionales en el nivel de análisis para crear campos calculados que solo estén disponibles en dicho análisis.

**Adición de un campo calculado a un análisis**

1. Abre la [consola Quick](https://quicksight.aws.amazon.com/).

1. Abra el análisis que desee cambiar.

1. En el panel **Datos**, elija **Agregar** en la parte superior izquierda y, a continuación, elija **\$1 CAMPO CALCULADO**.

   1. En el editor de cálculos que se abre, haga lo siguiente:

   1. Introduzca un nombre para el campo calculado.

   1. Introduzca una fórmula con los campos de su conjunto de datos, funciones y operadores.

1. Cuando termine, elija **Guardar**.

Para obtener más información sobre cómo crear fórmulas con las funciones disponibles en Quick Sight, consulte[Función de campo calculada y referencia de operador para Amazon QuickFunciones y operadores](calculated-field-reference.md).

## Adición de campos calculados a un conjunto de datos
<a name="using-the-calculated-field-editor"></a>

Los autores de Amazon Quick Sight pueden generar campos calculados durante la fase de preparación de datos de la creación de un conjunto de datos. Al crear un campo calculado para un conjunto de datos, el campo se convierte en una nueva columna del conjunto de datos. Todos los análisis que usan el conjunto de datos heredan los campos calculados del conjunto de datos.

Si el campo calculado funciona a nivel de fila y el conjunto de datos está almacenadoSPICE, Quick Sight calcula y materializa el resultado en. SPICE Si el campo calculado se basa en una función de agregación, Quick Sight conserva la fórmula y realiza el cálculo cuando se genera el análisis. Este tipo de campo calculado se denomina campo calculado no materializado.

**Adición o edición de un campo calculado para un conjunto de datos**

1. Abra el conjunto de datos con el que desea trabajar. Para obtener más información, consulte [Edición de conjuntos de datos](edit-a-data-set.md).

1. En la página Preparación de datos, haga una de las siguientes acciones:
   + Para crear un campo nuevo, seleccione **Añadir campo calculado** a la izquierda.
   + Para editar un campo calculado existente, selecciónelo en **Campos calculados** de la izquierda y, a continuación, seleccione **Editar** en el menú contextual (con el botón derecho).

1. En el editor de cálculos, introduzca un nombre descriptivo para **Añadir título** para asignar un nombre al nuevo campo calculado. Este nombre aparece en la lista de campos del conjunto de datos, por lo que debe tener un aspecto similar al de los demás campos. En este ejemplo, asignaremos al campo el nombre de `Total Sales This Year`.

1. (Opcional) Agregue un comentario, por ejemplo, para explicar lo que hace la expresión, poniendo el texto entre barras y asteriscos.

   ```
   /* Calculates sales per year for this year*/
   ```

1. Identifique las métricas, las funciones y otros elementos que se van a utilizar. Para este ejemplo, necesitamos identificar lo siguiente:
   + La métrica que se debe utilizar
   + Funciones: `ifelse` y `datediff`

   Queremos crear una instrucción como: “Si la venta se realizó durante este año, muestra las ventas totales y, de lo contrario, muestra 0”.

   Para añadir la función `ifelse`, abra la lista **Funciones**. Seleccione **Todas** para cerrar la lista de todas las funciones. Ahora debería ver los grupos de funciones: **Agregado**, **Condicional**, **Fecha**, etc. 

   Elija **Condicional** y, a continuación, haga doble clic en `ifelse` para añadirla al espacio de trabajo. 

   ```
   ifelse()
   ```

1. Coloque el cursor dentro del paréntesis en el espacio de trabajo y añada tres líneas en blanco.

   ```
   ifelse(
                                               
                                               
                                               
   )
   ```

1. Con el cursor en la primera línea en blanco, busque la función `dateDiff`. Aparece en la lista **Funciones** en **Fechas**. También puede encontrarla al escribir **date** en **Buscar funciones**. La función `dateDiff` devuelve todas las funciones que tienen *`date`* como parte de su nombre. No devuelve todas las funciones enumeradas en **Fechas**; por ejemplo, la función `now` no aparece en los resultados de la búsqueda.

   Haga doble clic en `dateDiff` para añadirla a la primera línea en blanco de la instrucción `ifelse`. 

   ```
   ifelse(
   dateDiff()                                            
                                               
                                               
   )
   ```

   Añada los parámetros que utiliza `dateDiff`. Coloque el cursor dentro de los paréntesis `dateDiff` para empezar a añadir `date1`, `date2` y`period`:

   1. Para `date1`: el primer parámetro es el campo que contiene la fecha. Búsquelo en **Campos** y agréguelo al espacio de trabajo haciendo doble clic en él o introduciendo su nombre. 

   1. Para `date2`, añada una coma y, a continuación, seleccione `truncDate()` en **Funciones**. Dentro del paréntesis, añada el punto y la fecha, de la siguiente manera: **truncDate( "YYYY", now() )**

   1. Para `period`: añada una coma después de `date2` e introduzca **YYYY**. Este es el periodo del año. Para ver una lista de todos los periodos admitidos, busque `dateDiff` en la lista **Funciones** y abra la documentación al seleccionar **Más información**. Si ya está consultando la documentación, como lo hace ahora, consulte [dateDiff](dateDiff-function.md).

   Añada algunos espacios para facilitar la lectura, si lo desea. Su expresión debe ser similar a la siguiente.

   ```
   ifelse(
      dateDiff( {Date}, truncDate( "YYYY", now() ) ,"YYYY" )                                       
                                               
                                               
   )
   ```

1. Especifique el valor devuelto. Para nuestro ejemplo, el primer parámetro en `ifelse` debe devolver un valor de `TRUE` o `FALSE`. Como queremos el año actual y lo estamos comparando con este año, especificamos que la instrucción `dateDiff` debe devolver `0`. La parte `if` de `ifelse` se considera válida para las filas en las que no hay diferencia entre el año de la venta y el año actual.

   ```
      dateDiff( {Date}, truncDate( "YYYY", now() ) ,"YYYY" ) = 0 
   ```

   Para crear un campo `TotalSales` para el año pasado, puede cambiar `0` a `1`.

   Otra forma de hacer lo mismo es utilizar `addDateTime` en lugar de `truncDate`. Luego, para cada año anterior, se cambia el primer parámetro de `addDateTime` para que represente cada año. Para ello, utilice `-1` para el año pasado, `-2` para el año anterior y así sucesivamente. Si usa `addDateTime`, deje la función `dateDiff` `= 0` para cada año.

   ```
      dateDiff( {Discharge Date}, addDateTime(-1, "YYYY", now() ) ,"YYYY" ) = 0 /* Last year */
   ```

1. Mueva el cursor a la primera línea en blanco, justo debajo de `dateDiff`. Añada una coma. 

   Para la parte `then` de la instrucción `ifelse`, debemos elegir la medida (métrica) que contiene el importe de las ventas, `TotalSales`.

   Para elegir un campo, abra la lista **Campos** y haga doble clic en un campo para añadirlo a la pantalla. O puede ingresar el nombre. Añada corchetes `{ }` alrededor de los nombres que contengan espacios. Es probable que la métrica tenga un nombre diferente. Puede saber qué campo es una métrica por el signo numérico que aparece delante de él (**\$1**).

   Ahora, su expresión debe ser similar a la siguiente.

   ```
   ifelse(
      dateDiff( {Date}, truncDate( "YYYY", now() ) ,"YYYY" ) = 0
      ,{TotalSales}                            
                                              
   )
   ```

1. Añada una cláusula `else`. La función `ifelse` no requiere una, pero queremos añadirla. Para elaborar informes, normalmente no se recomienda tener ningún valor nulo, ya que a veces se omiten las filas con valores nulos. 

   Establecemos la parte else de la expresión ifelse en `0`. El resultado es que este campo es `0` para las filas que contienen las ventas de años anteriores.

   Para ello, en la línea en blanco, agregue una coma y luego un `0`. Si agregó el comentario al principio, la expresión `ifelse` final debería tener el siguiente aspecto.

   ```
   /* Calculates sales per year for this year*/
   ifelse(
      dateDiff( {Date}, truncDate( "YYYY", now() ) ,"YYYY" ) = 0
      ,{TotalSales}                            
      ,0                                         
   )
   ```

1. Seleccione **Guardar** en la esquina superior derecha para guardar su trabajo. 

   Si hay errores en la expresión, el editor mostrará un mensaje de error en la parte inferior. Compruebe si la expresión tiene una línea roja ondulada y, a continuación, coloque el cursor sobre esa línea para ver cuál es el mensaje de error. Los errores más comunes son la falta de puntuación, la falta de parámetros, las faltas de ortografía y los tipos de datos no válidos.

   Para evitar hacer cambios, seleccione **Cancelar**.

**Adición de un valor de parámetro a un campo calculado**

1. Puede hacer referencia a parámetros en los campos calculados. Al añadir el parámetro a la expresión, se añade el valor actual de ese parámetro.

1. Para añadir un parámetro, abra la lista **Parámetros** y seleccione el parámetro cuyo valor desee incluir. 

1. (Opcional) Para añadir manualmente un parámetro a la expresión, escriba el nombre del parámetro. A continuación, introdúzcalo entre corchetes `{}` y póngale el prefijo `$`. Por ejemplo, `${parameterName}`.

Puede cambiar el tipo de datos de cualquier campo del conjunto de datos, incluidos los tipos de campos calculados. Solo puede elegir tipos de datos que coincidan con los datos del campo.

**Cambio del tipo de datos de un campo calculado**
+ En **Campos calculados** (a la izquierda), elija el campo que desee cambiar y, a continuación, elija **Cambiar tipo de datos** en el menú contextual (con el botón derecho).

A diferencia de los demás campos del conjunto de datos, los campos calculados no se pueden deshabilitar. En su lugar, elimínelos. 

**Eliminación de un campo calculado**
+ En **Campos calculados** (a la izquierda), elija el campo que desee cambiar y, a continuación, elija **Borrar** en el menú contextual (con el botón derecho).

## Gestión de valores decimales en campos calculados
<a name="handling-decimal-fields"></a>

Cuando el conjunto de datos usa el modo de consulta directa, el cálculo del tipo de datos decimal viene determinado por el comportamiento del motor de origen del que proviene el conjunto de datos. En algunos casos particulares, Quick Sight aplica controles especiales para determinar el tipo de datos del cálculo de salida.

Cuando el conjunto de datos usa el modo de consulta SPICE y se materializa un campo calculado, el tipo de datos del resultado depende de los operadores de función específicos y del tipo de datos de la entrada. Las tablas siguientes muestran el comportamiento esperado de algunos campos calculados de forma numérica.

**Operadores unarios**

En la siguiente tabla se muestra el tipo de datos que se genera en función del operador que use y del tipo de datos del valor que especifique. Por ejemplo, si especifica un número entero en un cálculo `abs`, el tipo de datos del valor de salida es un entero.


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/quick/latest/userguide/adding-a-calculated-field-analysis.html)

**Operadores binarios**

En las tablas siguientes se muestra el tipo de datos que se genera en función de los tipos de datos de los dos valores que especifique. Por ejemplo, en el caso de un operador aritmético, si proporciona dos tipos de datos enteros, el resultado del cálculo se mostrará como entero.

Para los operadores básicos (\$1, -, \$1):


|  | **Entero** | **Fijo decimal** | **Flotante decimal** | 
| --- | --- | --- | --- | 
|  **Entero**  |  Entero  |  Fijo decimal  |  Flotante decimal  | 
|  **Fijo decimal**  |  Fijo decimal  |  Fijo decimal  |  Flotante decimal  | 
|  **Flotante decimal**  |  Flotante decimal  |  Flotante decimal  |  Flotante decimal  | 

Para operadores de división (/):


|  | **Entero** | **Fijo decimal** | **Flotante decimal** | 
| --- | --- | --- | --- | 
|  **Entero**  |  Flotante decimal  |  Flotante decimal  |  Flotante decimal  | 
|  **Fijo decimal**  |  Flotante decimal  |  Fijo decimal  |  Flotante decimal  | 
|  **Flotante decimal**  |  Flotante decimal  |  Flotante decimal  |  Flotante decimal  | 

Para operadores exponenciales y modales (^, %):


|  | **Entero** | **Fijo decimal** | **Flotante decimal** | 
| --- | --- | --- | --- | 
|  **Entero**  |  Flotante decimal  |  Flotante decimal  |  Flotante decimal  | 
|  **Fijo decimal**  |  Flotante decimal  |  Flotante decimal  |  Flotante decimal  | 
|  **Flotante decimal**  |  Flotante decimal  |  Flotante decimal  |  Flotante decimal  | 