

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Regra de análise de lista
<a name="analysis-rules-list"></a>

Em AWS Clean Rooms, uma *regra de análise de lista* gera listas em nível de linha da sobreposição entre a tabela configurada à qual ela foi adicionada e as tabelas configuradas do membro que pode consultar. O membro que pode consultar executa consultas que incluem uma regra de análise de lista.

O tipo de regra de análise de lista oferece suporte a casos de uso como enriquecimento e criação de público. 

Para obter mais informações sobre a estrutura de consulta e a sintaxe predefinidas para essa regra de análise, consulte [Estrutura predefinida da regra de análise de listas](#intersection-list-params-template).

Os parâmetros da regra de análise de lista, definidos em [Regra de análise de lista - controles de consulta](#parameters-list-query-controls), têm controles de consulta. Seus controles de consulta incluem a capacidade de selecionar as colunas que podem ser listadas na saída. É necessário que a consulta tenha pelo menos uma junção com uma tabela configurada do membro que pode consultar, direta ou transitivamente.

Não há controles de resultados de consulta como os da [regra de análise de agregação](analysis-rules-aggregation.md). 

As consultas de lista só podem usar operadores matemáticos. Eles não podem usar outras funções (como agregação ou escalar).

**Topics**
+ [Estrutura e sintaxe da consulta de lista](#list-query-controls)
+ [Regra de análise de lista - controles de consulta](#parameters-list-query-controls)
+ [Estrutura predefinida da regra de análise de listas](#intersection-list-params-template)
+ [Regra de análise de listas - exemplo](#list-example)

## Estrutura e sintaxe da consulta de lista
<a name="list-query-controls"></a>

As consultas em tabelas que têm uma regra de análise de lista devem seguir a sintaxe a seguir. 

```
--{{select_list_expression}}
SELECT DISTINCT column_name [[AS] column_alias ] [, ...] 

--{{table_expression}}
FROM table_name [[AS] table_alias ]
  [[INNER] JOIN table_name [[AS] table_alias] ON join_condition] [...]

--{{where_expression}}
[WHERE where_condition]          

--{{limit_expression}}
[LIMIT number]
```

A tabela a seguir explica cada expressão listada na sintaxe anterior. 


| Expressão | Definição | Exemplos | 
| --- | --- | --- | 
| {{select\_list\_expression}} | Uma lista separada por vírgulas contendo pelo menos um nome de coluna de tabela.<br />Um parâmetro `DISTINCT` é obrigatório.  `select_list_expression` pode criar um alias para colunas com ou sem o parâmetro `AS`.  <br />Para obter mais informações, consulte a [Referência SQL do AWS Clean Rooms](https://docs.aws.amazon.com/clean-rooms/latest/sql-reference/sql-reference.html).  | `SELECT DISTINCT segment` | 
| {{table\_expression}} | Uma tabela, ou junção de tabelas, com `join_condition` para conectá-la a `join_condition`. <br />`join_condition` retorna um Booleano. <br />`table_expression` oferece suporte a:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/clean-rooms/latest/userguide/analysis-rules-list.html) |  <pre>FROM consumer_table <br />INNER JOIN provider_table<br />ON<br />consumer_table.identifier1 = provider_table.identifier1<br />AND<br />consumer_table.identifier2 = provider_table.identifier2</pre>  | 
| {{where\_expression}} | Uma expressão condicional que retorna um Booleano. Pode ser composto pelo seguinte:[See the AWS documentation website for more details](http://docs.aws.amazon.com/pt_br/clean-rooms/latest/userguide/analysis-rules-list.html)As condições de comparação suportadas são (`=, >, <, <=, >=, <>, !=, NOT, IN, NOT IN, LIKE, IS NULL, IS NOT NULL`). <br />Os operadores lógicos suportados são (`AND, OR`).<br />`where_expression` é opcional. | `WHERE state + '_' + city = 'NY_NYC'`<br />`WHERE timestampColumn = timestampColumn2 - 14`  | 
| {{limit\_expression}} | Essa expressão deve ter um inteiro positivo.<br />`limit_expression` é opcional.  | `LIMIT 100` | 

Para a estrutura e a sintaxe de consulta de lista, lembre-se de que:
+ Comandos SQL diferentes de SELECT não são suportados.
+ Subconsultas e expressões de tabela comuns (por exemplo, WITH) não são suportadas
+ As cláusulas HAVING, GROUP BY e ORDER BY não são suportadas
+ O parâmetro OFFSET não é suportado

## Regra de análise de lista - controles de consulta
<a name="parameters-list-query-controls"></a>

Com os controles de consulta de lista, você pode controlar como as colunas em sua tabela são usadas para consultar a tabela. Por exemplo, você pode controlar qual coluna é usada para unir ou qual coluna pode ser usada na instrução e cláusula WHERE SELECT.

As seções a seguir explicam cada controle.

**Topics**
+ [Controles de junção](#list-controls-join-controls)
+ [Controles de lista](#list-controls)

### Controles de junção
<a name="list-controls-join-controls"></a>

Com os *controles de junção*, você pode controlar como sua tabela pode ser unida a outras tabelas na **table\_expression**. AWS Clean Rooms suporta apenas JOIN INNER. Na regra de análise de lista, é necessário pelo menos uma JOIN INNER e o membro que pode consultar deve incluir uma tabela de sua propriedade no JOIN INNER. Isso significa que eles devem unir sua mesa à deles, direta ou transitivamente.

A seguir está um exemplo de transitividade.

```
ON 
my_table.identifer = third_party_table.identifier 
.... 
ON 
third_party_table.identifier = member_who_can_query_table.id
```

As instruções JOIN INNER só podem usar colunas que tenham sido explicitamente categorizadas como `joinColumn` em sua regra de análise. 

INNER JOIN deve operar em uma `joinColumn` da sua tabela configurada e em outra `joinColumn` tabela configurada na colaboração. Você decide quais colunas da sua tabela podem ser usadas como `joinColumn`. 

Cada condição de correspondência dentro da cláusula ON deve usar a condição de comparação de igualdade (`=`) entre duas colunas. 

Várias condições de correspondência em uma cláusula ON podem ser:
+ Combinado usando o operador lógico `AND`
+ Separado usando o operador lógico `OR`

**nota**  
Todas as condições de correspondência JOIN devem corresponder a uma linha de cada lado do JOIN. Todas as condicionais conectadas por um operador lógico `OR` ou `AND` também devem atender a este requisito.

Veja a seguir um exemplo de uma consulta com um operador lógico `AND`.

```
SELECT some_col, other_col 
FROM table1 
    JOIN table2 
    ON table1.id = table2.id AND table1.name = table2.name
```

Veja a seguir um exemplo de uma consulta com um operador lógico `OR`.

```
SELECT some_col, other_col 
FROM table1 
    JOIN table2 
    ON table1.id = table2.id OR table1.name = table2.name
```


| Controle | Definição | Usage | 
| --- | --- | --- | 
| joinColumns | As colunas que você deseja permitir que o membro que pode consultar use na instrução JOIN INNER. | A mesma coluna não pode ser categorizada como `joinColumn` e `listColumn` (consulte [Controles de lista](#list-controls)).<br />`joinColumn` não pode ser usado em nenhuma outra parte da consulta além de JOIN INNER. | 

### Controles de lista
<a name="list-controls"></a>

Os *controles de lista* controlam as colunas que podem ser listadas na saída da consulta (ou seja, usadas na declaração SELECT) ou usadas para filtrar resultados (ou seja, usadas na declaração WHERE).


| Controle | Definição | Usage | 
| --- | --- | --- | 
| listColumns | As colunas que você permite que o membro que pode consultar use no SELECT e WHERE | A listColumn pode ser usado em SELECT e WHERE.A mesma coluna não pode ser usada como a `listColumn` e `joinColumn`. | 

## Estrutura predefinida da regra de análise de listas
<a name="intersection-list-params-template"></a>

O exemplo a seguir inclui uma estrutura predefinida que mostra como você conclui uma regra de análise de lista. 

No exemplo a seguir, {{`MyTable`}} refere-se à sua tabela de dados. Você pode substituir cada um {{user input placeholder}} por suas próprias informações. 

```
{
  "joinColumns": [{{MyTable column name(s)}}],
  "listColumns": [{{MyTable column name(s)}}],
}
```

## Regra de análise de listas - exemplo
<a name="list-example"></a>

O exemplo a seguir demonstra como duas empresas podem colaborar no AWS Clean Rooms uso da análise de listas.

A empresa A tem dados de gerenciamento de relacionamento com o cliente (CRM). A empresa A deseja obter dados adicionais de segmentos sobre seus clientes para saber mais sobre seus clientes e, potencialmente, usar atributos como entrada em outras análises. A empresa B tem dados de segmento compostos por atributos de segmento exclusivos que eles criaram com base em seus dados primários. A empresa B deseja fornecer os atributos exclusivos do segmento para a empresa A somente em clientes que estejam sobrepostos entre seus dados e os dados da empresa A. 

As empresas decidem colaborar para que a Empresa A possa enriquecer os dados sobrepostos. A empresa A é o membro que pode consultar e a empresa B é a colaboradora.

Para criar uma colaboração e executar a análise de listas em colaboração, as empresas fazem o seguinte: 

1. A empresa A cria uma colaboração e cria uma associação. A colaboração tem a Empresa B como outro membro da colaboração. A empresa A permite o registro de consultas na colaboração e permite o registro de consultas em sua conta. 

1. A empresa B cria uma associação na colaboração. Ele permite o registro de consultas em sua conta. 

1. A empresa A cria uma tabela configurada de CRM

1. A empresa A adiciona a regra de análise à tabela configurada do cliente, como mostrado no exemplo a seguir.

   ```
   {
     "joinColumns": [
       "identifier1",
       "identifier2"
     ],
     "listColumns": [
       "internalid",
       "segment1",
       "segment2",
       "customercategory"
     ]
   }
   ```

   `joinColumns`— A empresa A deseja usar `hashedemail` and/or `thirdpartyid` (obtida de um fornecedor de identidade) para combinar clientes a partir de dados de CRM com clientes de dados de segmentos. Isso ajudará a garantir que a Empresa A combine dados enriquecidos para os clientes certos. Eles têm duas JoinColumns para melhorar potencialmente a taxa de correspondência da análise. 

   `listColumns` – A empresa A costuma `listColumns` obter colunas enriquecidas ao lado e `internalid` usá-las em seus próprios sistemas. Eles adicionam `segment1`, `segment2` e `customercategory` para potencialmente limitar o enriquecimento a segmentos específicos, usando-os em filtros. 

1. A empresa B cria uma tabela configurada por segmentos.

1. A empresa B adiciona a regra de análise à tabela configurada do segmento. 

   ```
   {
     "joinColumns": [
       "identifier2"
     ],
     "listColumns": [
       "segment3",
       "segment4"
     ]
   }
   ```

   `joinColumns` – A empresa B permite que a empresa A se junte em `identifier2` para combinar clientes, desde dados de segmentos até dados de CRM. A empresa A e a empresa B trabalharam com o fornecedor de identidade para obter `identifier2` o que corresponderia a essa colaboração. Eles não adicionaram outros `joinColumns` porque acreditavam que `identifier2` fornecem a taxa de correspondência mais alta e precisa e que outros identificadores não são necessários para as consultas. 

   `listColumns` – A empresa B permite que a empresa A enriqueça seus dados com os atributos `segment3` e `segment4`, que são atributos exclusivos que ela criou, coletou e alinhou (com o cliente A) para fazer parte do enriquecimento de dados. Eles querem que a Empresa A obtenha esses segmentos para a sobreposição em nível de linha, porque essa é uma colaboração de enriquecimento de dados. 

1. A empresa A cria uma associação de tabela de CRM à colaboração.

1. A empresa B cria uma associação de tabela de segmentos à colaboração.

1. A empresa A executa consultas, como a seguinte, para enriquecer os dados sobrepostos do cliente. 

   ```
   SELECT companyA.internalid, companyB.segment3, companyB.segment4
   INNER JOIN returns companyB
    ON companyA.identifier2 = companyB.identifier2
   WHERE companyA.customercategory > 'xxx'
   ```

1. A empresa A e a empresa B revisam os logs de consulta. A empresa B verifica se a consulta está alinhada com o que foi acordado no contrato de colaboração.