

 Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Función de ventana FIRST\$1VALUE
<a name="r_WF_first_value"></a>

 Dado un conjunto ordenado de filas, FIRST\$1VALUE devuelve el valor de la expresión especificada respecto de la primera fila en el marco de ventana.

Para obtener información sobre cómo seleccionar la última fila del marco, consulte [Función de ventana LAST\$1VALUE](r_WF_last_value.md).

## Sintaxis
<a name="r_WF_first_value-synopsis"></a>

```
FIRST_VALUE( expression )[ IGNORE NULLS | RESPECT NULLS ]
OVER (
[ PARTITION BY expr_list ]
[ ORDER BY order_list frame_clause ]
)
```

## Argumentos
<a name="r_WF_first_value-arguments"></a>

 *expresión*   
 La columna o expresión de destino sobre la que opera la función. 

IGNORE NULLS   
Cuando se utiliza esta opción con FIRST\$1VALUE, la función devuelve el primer valor en el marco que no sea NULL (o NULL si todos los valores son NULL).

RESPECT NULLS   
 Indica que Amazon Redshift debe incluir valores nulos al momento de determinar qué fila utilizar. De manera predeterminada, se admite RESPECT NULLS si no especifica IGNORE NULLS. 

OVER   
Introduce las cláusulas de ventana para la función. 

PARTITION BY *expr\$1list*   
Define la ventana para la función en términos de una o más expresiones. 

ORDER BY *order\$1list*   
Ordena las filas dentro de cada partición. Si no se especifica cláusula PARTITION BY, ORDER BY ordena toda la tabla. Si especifica una cláusula ORDER BY, también debe especificar una *frame\$1clause (cláusula\$1de\$1marco)*.   
Los resultados de la función FIRST\$1VALUE dependen del orden de los datos. En los siguientes casos, los resultados son no determinísticos:   
+ Cuando no se especifica una cláusula ORDER BY y una partición tiene dos valores diferentes para una expresión 
+ Cuando la expresión toma valores diferentes que corresponden al mismo valor en la lista ORDER BY. 

 *frame\$1clause*   
Si se utiliza una cláusula ORDER BY para una función de agregación, se necesita una cláusula de marco explícita. La cláusula de marco limita el conjunto de filas en una ventana de función e incluye o excluye conjuntos de filas en del resultado ordenado. La cláusula de marco consta de la palabra clave ROWS y de los especificadores correspondientes. Consulte [Resumen de la sintaxis de la función de ventana](c_Window_functions.md#r_Window_function_synopsis). 

## Tipo de retorno
<a name="c_Supported_data_types_wf_first_value"></a>

Estas funciones admiten expresiones que utilizan tipos de datos de Amazon Redshift primitivos. El tipo de retorno es el mismo que el tipo de datos de la *expression*.

## Ejemplos
<a name="r_WF_first_value-examples"></a>

En los siguientes ejemplos se utiliza la tabla VENUE de los datos de muestra de TICKIT. Para obtener más información, consulte [Base de datos de muestra](c_sampledb.md).

El siguiente ejemplo devuelve la capacidad de asientos para cada lugar en la tabla VENUE, con los resultados ordenados por capacidad (de mayor a menor). La función FIRST\$1VALUE se utiliza para seleccionar el nombre del lugar que corresponda a la primera fila en el marco: en este caso, la fila con la mayor cantidad de asientos. Los resultados se particionan por estado, por lo que cuando cambia el valor VENUESTATE, se selecciona un nuevo primer valor. El marco de ventana está ilimitado de modo que el primer valor se selecciona para cada fila en cada partición. 

Para California, `Qualcomm Stadium` tiene la mayor cantidad de asientos (`70561`), por lo que nombre es el primer valor para todas las filas en la partición `CA`. 

```
select venuestate, venueseats, venuename,
first_value(venuename)
over(partition by venuestate
order by venueseats desc
rows between unbounded preceding and unbounded following)
from (select * from venue where venueseats >0)
order by venuestate;

venuestate | venueseats |           venuename            |         first_value
-----------+------------+--------------------------------+------------------------------
CA         |      70561 | Qualcomm Stadium               | Qualcomm Stadium
CA         |      69843 | Monster Park                   | Qualcomm Stadium
CA         |      63026 | McAfee Coliseum                | Qualcomm Stadium
CA         |      56000 | Dodger Stadium                 | Qualcomm Stadium
CA         |      45050 | Angel Stadium of Anaheim       | Qualcomm Stadium
CA         |      42445 | PETCO Park                     | Qualcomm Stadium
CA         |      41503 | AT&T Park                      | Qualcomm Stadium
CA         |      22000 | Shoreline Amphitheatre         | Qualcomm Stadium
CO         |      76125 | INVESCO Field                  | INVESCO Field
CO         |      50445 | Coors Field                    | INVESCO Field
DC         |      41888 | Nationals Park                 | Nationals Park
FL         |      74916 | Dolphin Stadium                | Dolphin Stadium
FL         |      73800 | Jacksonville Municipal Stadium | Dolphin Stadium
FL         |      65647 | Raymond James Stadium          | Dolphin Stadium
FL         |      36048 | Tropicana Field                | Dolphin Stadium
...
```

En el siguiente ejemplo, se muestra el uso de la opción IGNORE NULLS y se utiliza la adición de una nueva fila a la tabla VENUE: 

```
insert into venue values(2000,null,'Stanford','CA',90000);
```

Esta nueva fila tiene un valor NULL para la columna VENUENAME. Ahora, se repite la consulta FIRST\$1VALUE que se mostró antes en esta sección: 

```
select venuestate, venueseats, venuename,
first_value(venuename)
over(partition by venuestate
order by venueseats desc
rows between unbounded preceding and unbounded following)
from (select * from venue where venueseats >0)
order by venuestate;

venuestate | venueseats |         venuename          | first_value
-----------+------------+----------------------------+-------------
CA         |      90000 | NULL                       | NULL
CA         |      70561 | Qualcomm Stadium           | NULL
CA         |      69843 | Monster Park               | NULL
...
```

Debido a que la nueva fila tiene el valor más alto de VENUESEATS (`90000`) y VENUENAME es NULL, la función FIRST\$1VALUE devuelve NULL para la partición `CA`. Para ignorar filas como esta en la evaluación de la función, se agrega la opción IGNORE NULLS al argumento de la función: 

```
select venuestate, venueseats, venuename,
first_value(venuename) ignore nulls
over(partition by venuestate
order by venueseats desc
rows between unbounded preceding and unbounded following)
from (select * from venue where venuestate='CA')
order by venuestate;

venuestate | venueseats |         venuename          |   first_value
------------+------------+----------------------------+------------------
CA         |      90000 | NULL                       | Qualcomm Stadium
CA         |      70561 | Qualcomm Stadium           | Qualcomm Stadium
CA         |      69843 | Monster Park               | Qualcomm Stadium
...
```