

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Função de janela FIRST\_VALUE
<a name="r_WF_first_value"></a>

 Considerando um conjunto de linhas ordenado, FIRST\_VALUE retorna o valor da expressão especificada em relação à primeira linha no quadro de janela.

Para obter informações sobre como selecionar a última linha no quadro, consulte [Função de janela LAST\_VALUE](r_WF_last_value.md).

## Sintaxe
<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>

 *expressão*   
 A coluna ou expressão de destino na qual a função opera. 

IGNORE NULLS   
Quando essa opção é usada com FIRST\_VALUE, a função retorna o primeiro valor no quadro que não seja NULL (ou NULL se todos os valores forem NULL).

RESPECT NULLS   
 Indica que o Amazon Redshift deve incluir valores nulos na determinação de qual linha usar. RESPECT NULLS é compatível por padrão se você não especificar IGNORE NULLS. 

OVER   
Introduz as cláusulas de janela para a função. 

PARTITION BY *expr\_list*   
Define a janela para a função em termos de uma ou mais expressões. 

ORDER BY *order\_list*   
Classifica as linhas dentro de cada partição. Se nenhuma cláusula PARTITION BY for especificada, ORDER BY classifica a tabela inteira. Se você especificar uma cláusula ORDER BY, você também deve especificar uma *frame\_clause*.   
Os resultados da função FIRST\_VALUE dependem da ordem dos dados. Os resultados são não determinísticos nos seguintes casos:   
+ Quando uma cláusula ORDER BY é especificada e uma partição contém dois valores diferentes para uma expressão 
+ Quando uma expressão avalia para valores diferentes que correspondem ao mesmo valor na lista ORDER BY. 

 *frame\_clause*   
Se uma cláusula ORDER BY é usada para uma função agregada, uma cláusula de quadro explícita é necessária. A cláusula de quadro refina o conjunto de linhas na janela de uma função, incluindo ou excluindo conjuntos de linhas no resultado ordenado. A cláusula de quadro consiste na palavra-chave ROWS e nos especificadores associados. Consulte [Resumo da sintaxe de funções da janela](c_Window_functions.md#r_Window_function_synopsis). 

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

Essas funções são compatíveis com expressões que usam tipos de dados primitivos do Amazon Redshift. O tipo de retorno é igual ao tipo de dados da *expressão*.

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

Os exemplos a seguir usam a tabela VENUE dos dados de amostra TICKIT. Para obter mais informações, consulte [Banco de dados de exemplo](c_sampledb.md).

O seguinte exemplo retorna a capacidade de acomodação para cada local de evento da tabela VENUE com os resultados ordenados por capacidade (alta a baixa). A função FIRST\_VALUE é usada para selecionar o local de evento que corresponde à primeira linha no quadro: nesse caso, a linha com o mais alto número de assentos. Os resultados são particionados por estado, portanto quando o valor VENUESTATE muda, um novo primeiro valor é selecionado. O quadro da janela não é vinculado, portanto o mesmo primeiro valor é selecionado para cada linha em cada partição. 

Para a Califórnia, `Qualcomm Stadium` tem mais alto número de assentos (`70561`), portanto esse nome é o primeiro valor para todas as linhas da partição `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
...
```

O seguinte exemplo mostra o uso da opção IGNORE NULLS e depende da inclusão de uma nova linha na tabela VENUE: 

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

Essa nova linha contém um valor NULL para a coluna VENUENAME. Agora, repita a consulta para FIRST\_VALUE que foi mostrada anteriormente nesta seção: 

```
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
...
```

Como a nova linha contém o valor mais alto de VENUESEATS (`90000`) e o VENUENAME é NULL, a função FIRST\_VALUE retorna o NULL para a partição `CA`. Para ignorar linhas como essa na avaliação da função, adicione a opção IGNORE NULLS ao argumento da função: 

```
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
...
```