Mantém um conjunto de linhas no conjunto de dados. Elas são especificadas pelo condicional na expressão row
. Todas as outras linhas são removidas do conjunto de dados. A transformação keep
é o oposto de delete
. Consulte Transformação Delete.
Uso básico
keep row:(customerStatus == 'active')
Resultado: para cada linha do conjunto de dados, se o valor da coluna customerStatus
for active
, a linha será mantida. Caso contrário, a linha será excluída do conjunto de dados.
Parâmetros
keep row:(expression)
Parâmetro | Obrigatório? | Transform Builder | Tipo de dados | Descrição |
---|---|---|---|---|
row | S | Condição | string | Expressão que identifica uma ou mais linhas para serem mantidas. Se a expressão for avaliada como true para uma linha, essa linha será mantida. |
Para mais informações sobre os padrões de sintaxe, consulte as Observações sobre a sintaxe da documentação da linguagem.
row
Expressão para identificar uma ou mais linhas em que a transformação será executada. A expressão precisa ser avaliada como true
ou false
.
Exemplos:
Expressão | Descrição |
---|---|
Score >= 50 | true se o valor na coluna Score for maior que 50. |
LEN(LastName) > 8 | true se o comprimento do valor na coluna LastName for maior que oito. |
ISMISSING([Title]) | true se o valor da linha na coluna Title estiver ausente. |
ISMISMATCHED(Score,['Integer']) | true se o valor da linha na coluna Score for incompatível com o tipo de dados de número inteiro. |
Para a transformação keep
, se a expressão do parâmetro row
for avaliada como true
para uma linha, ela será mantida no conjunto de dados. Caso contrário, ela será removida.
Exemplo:
keep row: (lastOrder >= 10000 && status == 'Active')
Resultado: mantém todas as linhas no conjunto de dados em que o valor lastOrder
é maior ou igual a 10.000 e o status do cliente é Active
.
Observações sobre o uso:
Obrigatório? | Tipo de dados |
---|---|
Sim | Expressão avaliada como true ou false |
Exemplos
Exemplo: remover produtos antigos e manter novos pedidos
Neste exemplo, ilustramos como você pode manter e excluir linhas do conjunto de dados usando as seguintes transformações:
delete
: exclui um conjunto de linhas conforme avaliado pela expressão condicional no parâmetrorow
. Consulte Transformação Delete.keep
: mantém um conjunto de linhas conforme avaliado pela expressão condicional no parâmetrorow
. Todas as outras linhas são excluídas do conjunto de dados. Consulte Transformação Keep.
Origem:
O conjunto de dados inclui as informações de pedido a seguir. Você quer editar o conjunto de dados para que:
- todos os pedidos de produtos que não estão mais disponíveis sejam removidos. Eles incluem os seguintes IDs de produtos:
P100
,P101
,P102
,P103
; - todos os pedidos que foram feitos nos últimos 90 dias sejam mantidos.
OrderId | OrderDate | ProdId | ProductName | ProductColor | Qty | OrderValue |
---|---|---|---|---|---|---|
1001 | 14/06/2015 | P100 | Chapéu | Marrom | 1 | 90 |
1002 | 15/01/2016 | P101 | Chapéu | Preto | 2 | 180 |
1003 | 11/11/2015 | P103 | Suéter | Preto | 3 | 255 |
1004 | 06/08/2015 | P105 | Cardigã | Vermelho | 4 | 320 |
1005 | 29/07/2015 | P103 | Soéter | Preto | 5 | 375 |
1006 | 01/12/2015 | P102 | Calça | Branco | 6 | 420 |
1007 | 28/12/2015 | P107 | Camiseta | Branco | 7 | 390 |
1008 | 15/01/2016 | P105 | Cardigã | Vermelho | 8 | 420 |
1009 | 31/01/2016 | P108 | Casaco | Azul-marinho | 9 | 495 |
Transformação:
Primeiro, remova os pedidos de produtos antigos. Como o conjunto de produtos é relativamente pequeno, você pode começar adicionando primeiro o seguinte comando:
OBSERVAÇÃO: apenas visualize esta transformação, não a adicione à receita por enquanto.
delete row:(ProdId == 'P100')
ProdId
. Se olhar para o valor ProductName
, você poderá notar que há um erro de ortografia em uma das linhas afetadas. Desse modo, essa coluna não é válida para fins comparativos.
Você pode adicionar os outros códigos de produtos à transformação na seguinte expansão da transformação, em que qualquer linha que tenha um valor ProdId
correspondente é removida:
delete row:(ProdId == 'P100' || ProdId == 'P101' || ProdId == 'P102' || ProdId == 'P103')
OrderId | OrderDate | ProdId | ProductName | ProductColor | Qty | OrderValue |
---|---|---|---|---|---|---|
1004 | 06/08/2015 | P105 | Cardigã | Vermelho | 4 | 320 |
1007 | 28/12/2015 | P107 | Camiseta | Branco | 7 | 390 |
1008 | 15/01/2016 | P105 | Cardigã | Vermelho | 8 | 420 |
1009 | 31/01/2016 | P108 | Casaco | Azul-marinho | 9 | 495 |
Agora, você pode remover os pedidos do conjunto de dados com mais de 90 dias. Primeiro, adicione uma coluna com a data de hoje:
derive value:'2/25/16' as:'today'
keep row:DATEDIF(OrderDate,today,day) <= 90
today
, que já não é necessária:
drop col:today
OrderId | OrderDate | ProdId | ProductName | ProductColor | Qty | OrderValue |
---|---|---|---|---|---|---|
1007 | 28/12/2015 | P107 | Camiseta | Branco | 7 | 390 |
1008 | 15/01/2016 | P105 | Cardigã | Vermelho | 8 | 420 |
1009 | 31/01/2016 | P108 | Casaco | Azul-marinho | 9 | 495 |