

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

# Relatórios de vendedores, feeds de dados e painéis em AWS Marketplace
<a name="reports-and-data-feed"></a>

Como AWS Marketplace vendedor, você pode usar as seguintes ferramentas para coletar e analisar informações sobre as vendas de seus produtos:
+ Os [feeds de dados](data-feeds.md) que fornecem informações adicionais do cliente que você pode usar para identificar informações do cliente para transações listadas nos relatórios.
+ [Painéis](dashboards.md) desenvolvidos pelo [Amazon Quick](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) com tabelas, gráficos e insights que ajudam você a acessar e analisar dados financeiros.

AWS Marketplace fornece o máximo de dados possível em relatórios, feeds de dados e painéis, ao mesmo tempo em que segue o seguinte:
+ Padrões e princípios da Amazon para proteger os dados do cliente.
+ Os termos e condições que os compradores aceitam quando compram um produto do AWS Marketplace. Como vendedor, você está contratualmente obrigado a gerenciar com segurança os dados do comprador e a excluir os dados mediante solicitação do comprador.

**nota**  
Para cancelar os e-mails de notificação para um relatório, entre em contato com a equipe de [Operações de vendedor do AWS Marketplace](https://aws.amazon.com/marketplace/management/contact-us/). 

Para obter mais informações sobre relatórios, feeds de dados e painéis em AWS Marketplace, consulte os tópicos a seguir.

**Topics**
+ [Dados de entrega do vendedor inseridos em AWS Marketplace](data-feed-service.md)
+ [Relatórios complementares](supplementary-reports.md)
+ [Painéis do vendedor](dashboards.md)

# Dados de entrega do vendedor inseridos em AWS Marketplace
<a name="data-feed-service"></a>

O AWS Marketplace fornece feeds de dados como um mecanismo para enviar informações estruturadas e atualizadas sobre produtos e clientes dos sistemas AWS Marketplace para os buckets do Amazon S3 do vendedor para ETL (extração, transformação e carregamento) entre ferramentas de inteligência de negócios de propriedade do vendedor. Os feeds de dados coletam e fornecem arquivos CSV (valor separado por vírgula) em um bucket criptografado do Amazon S3 que você fornece. Os feeds de dados são gerados em um dia e contêm os dados das 24 horas do dia anterior. As seções a seguir fornecem uma visão geral dos feeds de dados e explica como acessá-los e usá-los. As seções subsequentes descrevem cada feed de dados. 

Os dados transacionais são entregues e anexados em uma estrutura bitemporal para que os vendedores possam armazenar e consultar dados em dois cronogramas com registros de data e hora para ambos
+ hora válida: quando um fato ocorreu no mundo real (“o que você sabia”)
+ hora do sistema: quando esse fato foi registrado no banco de dados (“quando você soube”).

Os feeds de dados são entregues diariamente às meia-noite UTC após uma atualização do dia anterior contendo 24 horas de dados do dia anterior. Uma atualização pode ser definida por um cliente assinando, um cliente sendo faturado ou a AWS desembolsando o pagamento.

**Topics**
+ [Armazenamento e estrutura dos feeds de dados AWS Marketplace](data-feed-details.md)
+ [Acessar feeds de dados](data-feed-accessing.md)
+ [Coletar e analisar dados com feeds de dados](data-feed-using.md)
+ [Visão geral das tabelas de feed de dados](data-feed-joining.md)
+ [Exemplos de consulta de feed de dados](data-feed-full-examples.md)
+ [Feeds de dados](data-feeds.md)

# Armazenamento e estrutura dos feeds de dados AWS Marketplace
<a name="data-feed-details"></a>

O AWS Marketplace fornece feeds de dados como um mecanismo para enviar informações estruturadas e atualizadas sobre produtos e clientes dos sistemas AWS Marketplace para os buckets do Amazon S3 do vendedor para ETL (extração, transformação e carregamento) entre ferramentas de inteligência de negócios de propriedade do vendedor. Este tópico fornece mais informações sobre a estrutura e o armazenamento de feeds de dados.

Os feeds de dados coletam e fornecem arquivos CSV (valor separado por vírgula) em um bucket criptografado do Amazon S3 que você fornece. Os arquivos CSV têm as seguintes características:
+ Eles seguem os [padrões 4180](https://tools.ietf.org/html/rfc4180).
+ A codificação de caracteres é UTF-8 sem BOM.
+ As vírgulas são usadas como separadores entre valores.
+ Os caracteres de escape são indicados por aspas duplas. 
+ `\n` é o caractere de feed de linha.
+ As datas são relatadas no fuso horário UTC, estão no formato de data e hora ISO 8601 e a margem de erro não excede 1 segundo.
+ Todos os valores em `*_period_start_date` e `*_period_end_date` são inclusivos, o que significa que `23:59:59` é o último time stamp possível para qualquer dia. 
+ Todos os campos monetários são precedidos por um campo de moeda. 
+ Os campos monetários usam um caractere de ponto (`.`) como um separador decimal e não usam uma vírgula (,) como um separador de milhares. 

Os feeds de dados são gerados e armazenados da seguinte forma:
+ Os feeds de dados são gerados em um dia e contêm os dados das 24 horas do dia anterior. 
+ No bucket do Amazon S3, os feeds de dados são organizados por mês usando o seguinte formato:

  `bucket-name/data-feed-name_version/year=YYYY/month=MM/data.csv`
+ À medida que cada feed de dados diário é gerado, ele é anexado ao arquivo CSV existente desse mês. Quando um novo mês começa, um novo arquivo CSV é gerado para cada feed de dados. 
+ As informações nos feeds de dados são preenchidas de 01/01/2010 a 30/04/2020 (inclusive) e estão disponíveis no [arquivo CSV](#data-feed-details) na subpasta `year=2010/month=01`.

  Você pode notar casos em que o arquivo do mês atual de um determinado feed de dados contém cabeçalhos de coluna e nenhum dado. Isso significa que não houve novas entradas para esse mês no feed. Isso pode acontecer com feeds de dados que são atualizados com menos frequência, como o feed do produto. Nesses casos, os dados estão disponíveis na pasta preenchida. 
+ No Amazon S3, é possível criar uma [política de ciclo de vida do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-lifecycle.html) para gerenciar por quanto tempo os arquivos devem ser mantidos no bucket. 
+ Você pode configurar o Amazon SNS para notificar quando os dados são entregues no bucket do Amazon S3 criptografado. Para obter informações sobre como configurar notificações, consulte [Conceitos básicos do Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html) no *Guia do desenvolvedor do Amazon Simple Notification Service*.

## Historização dos dados
<a name="data-feed-historization"></a>

Cada feed de dados inclui colunas que documentam o histórico dos dados. Exceto `valid_to`, essas colunas são comuns a todos os feeds de dados. Elas são incluídas como um esquema de histórico comum e são úteis na consulta dos dados. 


| Nome da coluna  | Descrição  | 
| --- | --- | 
| valid\$1from | A primeira data em que o valor da chave primária é válido em relação aos valores de outros campos. | 
| valid\$1to | Esta coluna só é exibida no feed de dados do [endereço](data-feed-address.md) e está sempre em branco. | 
| insert\$1date | A data em que um registro foi inserido no feed de dados. | 
| update\$1date | A data em que o registro foi atualizado pela última vez.  | 
| delete\$1date | Esta coluna fica sempre em branco. | 

Veja a seguir um exemplo dessas colunas. 


|  valid\$1from  |  valid\$1to  |  insert\$1date  |  update\$1date  |  delete\$1date  | 
| --- | --- | --- | --- | --- | 
|  2018-12-12T02:00:00Z  |   |  2018-12-12T02:00:00Z  |  2018-12-12T02:00:00Z  |   | 
|  2019-03-29T03:00:00Z  |   |  2019-03-29T03:00:00Z  |  2019-03-29T03:00:00Z  |   | 
|  2019-03-29T03:00:00Z  |   |  2019-03-29T03:00:00Z  |  2019-04-28T03:00:00Z  |   | 

Juntos, `valid_from` e o campo `update_date` formam um *modelo de dados bitemporal*. O campo `valid_from`, como é chamado, informa a partir de quando o item é válido. Se o item foi editado, ele pode ter vários registros no feed, cada um com uma `update_date` diferente, mas com a mesma data `valid_from`. Por exemplo, para encontrar o valor atual de um item, você encontraria o registro com a `update_date` mais recente, na lista de registros com a data `valid_from` mais recente.

No exemplo acima, o registro foi criado originalmente em 12/12/2018. Em seguida, foi alterado em 29/03/2019 (por exemplo, se o endereço no registro mudou). Posteriormente, em 28/04/2019, a alteração de endereço foi corrigida (então `valid_from` não mudou, mas `update_date` sim). A correção do endereço (um evento raro) altera retroativamente o registro da data `valid_from` original, para que esse campo não seja alterado. Uma consulta para encontrar a data `valid_from` mais recente retornaria dois registros, aquele com a `update_date` mais recente forneceria o registro atual real.

# Acessar feeds de dados
<a name="data-feed-accessing"></a>

Com AWS Marketplace, você pode usar dados como um mecanismo para enviar informações estruturadas e atualizadas sobre produtos e clientes dos sistemas AWS Marketplace para os buckets do Amazon S3 para ETL (extração, transformação e carregamento) entre ferramentas de inteligência de negócios de propriedade do vendedor. É necessário configurar o ambiente para receber feeds de dados em um bucket criptografado do Amazon S3. Este tópico mostra como acessar e cancelar a assinatura dos feeds de dados.

**Topics**
+ [Acesse um feed de dados](#data-feed-accessing-procedure)
+ [Políticas de feed de dados](#data-feed-policies)
+ [Cancelar assinatura dos feeds de dados](#data-feed-unsubscribing)

## Acesse um feed de dados
<a name="data-feed-accessing-procedure"></a>

1. Aloque um engenheiro de dados ou inteligência de negócios com experiência em SQL e ETL (extrair, transformar, carregar). Essa pessoa também precisa de experiência na configuração de APIs.

1. Configure um bucket do Amazon Simple Storage Service e uma assinatura dos feeds de dados. Use o ID da conta de vendedor da AWS associado às listas de produtos do Marketplace. Para fazer isso, você pode [assistir a este vídeo do YouTube](https://www.youtube.com/watch?v=heCsZdOT-hw) ou seguir as etapas abaixo.

   O vídeo e as etapas explicam como usar um [modelo CloudFormation](https://s3.amazonaws.com/aws-marketplace-reports-resources/DataFeedsResources.yaml) que ajuda a simplificar a configuração.

   1. Abra um navegador da Web, faça login no [Portal de gerenciamento do AWS Marketplace](https://aws.amazon.com/marketplace/management/) e, em seguida, acesse [Configurar o armazenamento de dados do cliente](https://aws.amazon.com/marketplace/management/reports/data-feed-configuration).

   1. Escolha **Criar recursos com o modelo do CloudFormation** para abrir o modelo no console do CloudFormation em outra janela.

   1. No modelo, especifique o seguinte e escolha **Próximo**:
      + Nome da pilha: a coleção de recursos que você está criando para habilitar o acesso a feeds de dados.
      + Nome do bucket do Amazon S3: o bucket para armazenar feeds de dados.
      + (Opcional) Nome de tópico do Amazon SNS: o tópico para receber notificações no bucket do Amazon Simple Storage Service.

   1. Na página **Revisar** confirme suas entradas e escolha **Criar pilha**. Isso abrirá uma nova página com o status e os detalhes do CloudFormation.

   1. Na guia **Recursos**, copie os nomes de recurso da Amazon (ARNs) para os seguintes recursos da página do CloudFormation nos campos da página [Configurar armazenamento de dados](https://aws.amazon.com/marketplace/management/reports/data-feed-configuration) do AWS Marketplace:
      + Bucket do Amazon S3 para armazenar feeds de dados
      + Chave AWS KMS para criptografar o bucket do Amazon S3
      + (Opcional) Tópico do Amazon SNS para receber notificações quando a AWS fornece novos dados para o bucket do Amazon S3

   1. Na página **Configurar armazenamento de dados do cliente**, escolha **Enviar**.

   1. (Opcional) Edite as políticas criadas pelo modelo do CloudFormation. Consulte [Políticas de feed de dados](#data-feed-policies) para obter mais detalhes.

      Agora você está inscrito em feeds de dados. Na próxima vez que os feeds de dados forem gerados, será possível acessar os dados.

1. Use uma operação ETL (extrair, transformar, carregar) para conectar os feeds de dados ao seu data warehouse ou banco de dados relacional.
**nota**  
As ferramentas de dados têm capacidades diferentes. Você deve envolver um engenheiro de business intelligence ou engenheiro de dados para configurar a integração de acordo com os recursos da sua ferramenta.

1. Para executar ou criar consultas SQL, configure os feeds de dados para impor chaves primárias e estrangeiras em sua ferramenta de dados. Cada feed de dados representa uma tabela exclusiva, e você deve configurar todos os feeds de dados no esquema de dados com os relacionamentos da entidade. Para obter mais informações sobre tabelas e relacionamentos entre entidades, consulte [Visão geral das tabelas de feed de dados](data-feed-joining.md) neste guia.

1. Configure o Amazon Simple Notification Service para atualizar automaticamente seu data warehouse ou banco de dados relacional. Você pode configurar notificações do Amazon SNS para enviar alertas quando os dados de cada feed exclusivo são entregues a um bucket do Amazon S3. Essas notificações podem ser aproveitadas para atualizar automaticamente o data warehouse do vendedor quando novos dados são recebidos por meio de feeds de dados, se a ferramenta de dados do vendedor suportar esse recurso. Para instruções, consulte [Conceitos básicos do Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html) no *Guia do desenvolvedor do Amazon Simple Notification Service*.

   Exemplo de notificação:

   ```
   {
           "mainExecutionId": "1bc08b11-ab4b-47e1-866a-9c8f38423a98",
           "executionId": "52e862a9-42d2-41e0-8010-810af84d39b1",
           "subscriptionId": "27ae3961-b13a-44bc-a1a7-365b2dc181fd",
           "processedFiles": [],
           "executionStatus": "SKIPPED",
           "errors": [],
           "feedType": "[data feed name]"
           }
   ```

   As notificações podem ter os seguintes status `executionStatus`:
   + `SKIPPED`: o vendedor não tem dados novos para o dia.
   + `COMPLETED`: entregamos o feed com novos dados.
   + `FAILED`: a entrega do feed tem um problema.

1. Valide a configuração executando consultas SQL. Você pode usar os [exemplos de consultas neste guia](https://docs.aws.amazon.com/marketplace/latest/userguide/data-feed-full-examples.html) ou as consultas no GitHub, em [ https://github.com/aws-samples/aws-marketplace-api-samples/tree/main/seller-data-feeds/queries](https://github.com/aws-samples/aws-marketplace-api-samples/tree/main/seller-data-feeds/queries).
**nota**  
Os exemplos de consultas neste guia foram escritos para AWS Athena. Talvez seja necessário modificar as consultas para uso com suas ferramentas.

1. Determine onde os usuários corporativos desejam consumir dados. Por exemplo, você pode:
   + Exporte dados.csv do seu data warehouse ou banco de dados SQL.
   + Conecte seus dados a uma ferramenta de visualização, como PowerBI ou Tableau.
   + Mapeie dados para seu CRM, ERP ou ferramentas financeiras, como Salesforce, Infor ou Netsuite.

Para obter mais informações sobre modelos do CloudFormation, consulte [Trabalhar com modelos do CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html) no *Guia do usuário do AWS CloudFormation*.

## Políticas de feed de dados
<a name="data-feed-policies"></a>

Quando o bucket do Amazon S3 é criado pelo modelo do CloudFormation, ele cria políticas de acesso anexadas a esse bucket, à chave AWS KMS e ao tópico do Amazon SNS. As políticas permitem que o serviço de relatórios do AWS Marketplace grave no bucket e no tópico do SNS com as informações do feed de dados. Cada política terá uma seção como a seguinte (este exemplo é do bucket do Amazon S3).

```
        {
            "Sid": "AwsMarketplaceDataFeedsAccess",
            "Effect": "Allow",
            "Principal": {
                "Service": "reports.marketplace.amazonaws.com"
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:PutObject",
                "s3:GetEncryptionConfiguration",
                "s3:GetBucketAcl",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        },
```

Nessa política, AWS Marketplace usa o principal do serviço `reports.marketplace.amazonaws.com` usa para enviar dados para o bucket do Amazon S3. Você especificou o *amzn-s3-demo-bucket* no modelo do CloudFormation.

Quando o serviço de relatórios do AWS Marketplace chama o Amazon S3, o AWS KMS ou o Amazon SNS, ele fornece o ARN dos dados que pretende gravar no bucket. Para garantir que os únicos dados gravados no bucket sejam dados gravados em seu nome, você pode especificar `aws:SourceArn` na condição da política. No exemplo a seguir, você deve substituir *account-id* pelo ID da Conta da AWS.

```
        {
           "Sid": "AwsMarketplaceDataFeedsAccess",
           "Effect": "Allow",
           "Principal": {
                "Service": "reports.marketplace.amazonaws.com"
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:PutObject",
                "s3:GetEncryptionConfiguration",
                "s3:GetBucketAcl",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ,
            "Condition": {
                "StringEquals": {
                        "aws:SourceAccount": "account-id",
                        "aws:SourceArn": ["arn:aws:marketplace::account-id:AWSMarketplace/SellerDataSubscription/DataFeeds_V1",
                        "arn:aws:marketplace::account-id:AWSMarketplace/SellerDataSubscription/Example-Report"]
                        }
                }
        },
```

## Cancelar assinatura dos feeds de dados
<a name="data-feed-unsubscribing"></a>

Abra um navegador da Web e faça login no [Portal de gerenciamento do AWS Marketplace](https://aws.amazon.com/marketplace/management/). Em seguida, acesse a [página Fale conosco](https://aws.amazon.com/marketplace/management/contact-us/) para enviar uma solicitação de cancelamento de assinatura à equipe de operações do vendedor do AWS Marketplace. A solicitação de cancelamento de assinatura pode levar até 10 dias úteis para ser processada.

# Coletar e analisar dados com feeds de dados
<a name="data-feed-using"></a>

AWS Marketplace fornece feeds de dados como um mecanismo para enviar informações estruturadas sobre up-to-date produtos e clientes dos AWS Marketplace sistemas para os buckets Amazon S3 do vendedor para ETL (extração, transformação e carregamento) entre ferramentas de inteligência de negócios de propriedade do vendedor. Quando os dados estiverem disponíveis no bucket do Amazon S3, será possível usar feeds de dados das seguintes maneiras:
+ Faça download dos arquivos .CSV no bucket do Amazon S3 que você criou em [Acessar feeds de dados](data-feed-accessing.md) para que você possa visualizar os dados em uma planilha.
+ Use ferramentas de análise de negócios, consulta SQL e ETL (extrair, transformar e carregar) para coletar e analisar os dados.

  Você pode usar AWS serviços para coletar e analisar dados ou qualquer ferramenta de terceiros que possa realizar análises de conjuntos de dados baseados em .CSV.

Para obter mais informações sobre feeds de dados para coletar e analisar dados, consulte o exemplo a seguir.

## Exemplo: use AWS serviços para coletar e analisar dados
<a name="data-feed-using-example"></a>

O procedimento a seguir pressupõe que você já configurou o ambiente para receber feeds de dados em um bucket do Amazon S3 e que o bucket contém feeds de dados.

**Como coletar e analisar dados de feeds de dados**

1. No [console do AWS Glue](https://console.aws.amazon.com/glue), [crie um rastreador](https://docs.aws.amazon.com/glue/latest/dg/add-crawler.html) para se conectar ao bucket do Amazon S3 que armazena os feeds de dados, extraia os dados desejados e crie tabelas de metadados no AWS Glue Data Catalog.

   Para obter mais informações sobre AWS Glue, consulte o [https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html](https://docs.aws.amazon.com/glue/latest/dg/what-is-glue.html).

1. No [console do Athena](https://console.aws.amazon.com/athena), [execute consultas SQL nos dados no AWS Glue Data Catalog](https://docs.aws.amazon.com/athena/latest/ug/querying-athena-tables.html).

   Para obter mais informações sobre como usar o Athena, consulte o [https://docs.aws.amazon.com/athena/latest/ug/what-is.html](https://docs.aws.amazon.com/athena/latest/ug/what-is.html). 

1. No [console do Quick](http://quicksight.aws.amazon.com), [crie uma análise](https://docs.aws.amazon.com/quick/latest/userguide/creating-an-analysis.html) e, em seguida, [crie um visual](https://docs.aws.amazon.com/quick/latest/userguide/creating-a-visual.html) dos dados.

   Para obter mais informações sobre o Quick, consulte o [https://docs.aws.amazon.com/quick/latest/userguide/welcome.html](https://docs.aws.amazon.com/quick/latest/userguide/welcome.html).

Para ver um exemplo detalhado de uma forma de usar AWS serviços para coletar e analisar dados em feeds de dados, consulte [Usando o Seller Data Feed Delivery Service, Amazon Athena e Quick para criar relatórios de vendedores](https://aws.amazon.com/blogs/awsmarketplace/using-seller-data-feed-delivery-service-amazon-athena-and-amazon-quicksight-to-create-seller-reports/) no AWS Marketplace blog.

# Visão geral das tabelas de feed de dados
<a name="data-feed-joining"></a>

O AWS Marketplace fornece feeds de dados como um conjunto de tabelas que você pode unir para contextualizar mais as consultas.

O AWS Marketplace oferece três domínios gerais, ou categorias de interesse, nos feeds de dados:
+ **Catálogo**: inclui informações sobre os produtos e ofertas em sua conta.
+ **Contas**: inclui informações sobre as contas nas quais você fornece ou compra produtos no AWS Marketplace (suas próprias contas ou contas de terceiros com quem você trabalha, como parceiros de canal ou compradores).
+ **Receita**: inclui informações sobre faturamento, desembolsos e impostos.
+ **Compras**: inclui informações sobre os contratos das ofertas de produtos que você criou como vendedor registrado. 

Este diagrama mostra as tabelas nos domínios Catálogo, Contas e Receita.

![\[Entity relationship diagram showing how data feeds relate to each other.\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/images/datafeeds-overview.png) 

## Tabelas relacionadas ao catálogo
<a name="data-feed-catalog-domain"></a>

O diagrama a seguir mostra as relações entre as tabelas no domínio do Catálogo, bem como os campos dentro das tabelas. 

![\[Relações entre as tabelas Product, Offer_Product, Offer, Offer_Target e Legacy_ID_Mapping no domínio do Catálogo.\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/images/datafeeds-catalog-details.png)


As tabelas `Product`, `Offer_Product`, `Offer`, `Offer_Target` e `Legacy_id_mapping` estão no domínio do Catálogo.

A tabela `Offer_Target` inclui um campo de valor para o `account_id` do destino, mas somente quando o valor `target_type` é `account`.

A tabela `Legacy_id_mapping` não é usada para dados atuais.

**nota**  
Para obter mais informações sobre essas tabelas, incluindo uma descrição de cada campo na tabela e as uniões que podem ser criadas, consulte os tópicos a seguir:  
[Feed de dados do produto](data-feed-product.md)
[Feed de dados do produto da oferta](data-feed-offer-product.md)
[Feed de dados da oferta](data-feed-offer.md)
[Feed de dados de destino da oferta](data-feed-offer-target.md)
[Feed de dados do mapeamento legado](data-feed-legacy-mapping.md)

## Tabelas relacionadas a contas
<a name="data-feed-accounts-domain"></a>

O diagrama a seguir mostra as relações entre as tabelas `Account` e `Address` no domínio de Contas, bem como os campos nas tabelas.

![\[Relação entre as tabelas Conta e Endereço no domínio de Contas e os campos em cada tabela.\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/images/datafeeds-accounts-details.png)


**nota**  
Para obter mais informações sobre essas tabelas, incluindo uma descrição de cada campo na tabela e as uniões que podem ser criadas, consulte os tópicos a seguir:  
[Feed de dados da conta](data-feed-account.md)
[Feed de dados do endereço](data-feed-address.md)

## Tabelas relacionadas à receita
<a name="data-feed-revenue-domain"></a>

O diagrama a seguir mostra as relações entre as tabelas `Billing_Event` e `Tax_Item` no domínio de Receita, bem como os campos nas tabelas. A tabela `Billing_Event` inclui informações sobre desembolsos, bem como eventos de cobrança.

![\[Relações entre as tabelas Billing_Event e Tax_Item no domínio de Receita e os campos em cada tabela.\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/images/datafeeds-revenue-details.png)


**nota**  
Para obter mais informações sobre essas tabelas, incluindo uma descrição de cada campo na tabela e as uniões que podem ser criadas, consulte os tópicos a seguir:  
[Feed de dados do evento de faturamento](data-feed-billing-event.md)
[Feed de dados do item fiscal](data-feed-tax-item.md)

### Tabelas relacionadas a compras
<a name="procurement-tables"></a>

O diagrama a seguir mostra os campos na tabela do Contrato no domínio Compras.

**nota**  
Para obter mais informações sobre essas tabelas, incluindo uma descrição de cada campo na tabela e as uniões que podem ser criadas, consulte [Feed de dados de contratos](data-feed-agreements.md), neste guia.

As seções a seguir fornecem diagramas de *relacionamento entre entidades* (ER) para cada domínio. Cada diagrama de ER mostra as tabelas e os campos dentro de cada tabela, bem como os campos que você pode usar para unir as tabelas.

**nota**  
Os diagramas de ER nesta seção não incluem os campos comuns para todos os feeds de dados. Para obter mais informações sobre os campos comuns, consulte [Armazenamento e estrutura dos feeds de dados AWS Marketplace](data-feed-details.md).

A tabela a seguir descreve os símbolos usados nos diagramas de ER.


| Símbolo | Descrição | 
| --- | --- | 
|  ![\[Uma imagem das letras “PK” como símbolo.\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/images/datafeeds-primary-key.png)  |  **Chave primária**: uma chave primária da tabela. Quando usado com os campos `valid_from` e `update_date`, é exclusivo. Para obter mais detalhes sobre como usar esses campos juntos, consulte [Historização dos dados](data-feed-details.md#data-feed-historization). Se mais de um campo estiver marcado como chave primária, os campos juntos formarão a chave primária.  | 
|  ![\[Uma imagem das letras “FK” como símbolo.\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/images/datafeeds-foreign-key.png)  |   **Chave estrangeira**: um campo que representa uma chave primária em uma tabela diferente. Não é necessariamente exclusivo na tabela.   Em alguns casos, a chave estrangeira pode ficar em branco se o registro na tabela atual não tiver um registro correspondente na tabela externa.   | 
|  ![\[Uma imagem das letras “AK” como símbolo.\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/images/datafeeds-alternate-key.png)  |   **Chave alternativa**: uma chave que pode ser usada como chave na tabela. Segue as mesmas regras de exclusividade da chave primária.  | 
|  ![\[Uma imagem de uma linha com uma cruz em uma extremidade e um círculo e um garfo na outra.\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/images/datafeeds-one-to-many.png)  |   **Conector**: as linhas entre os campos representam uma conexão, que são dois campos que podem ser usados para unir tabelas. As extremidades da linha representam o tipo de conexão. Este exemplo representa uma conexão de um para muitos.  | 

**Tipos de conector**

A tabela a seguir mostra os tipos de extremidades que cada conector pode ter.


| Tipo de conector | Descrição | 
| --- | --- | 
|  ![\[Uma imagem de uma linha com uma cruz em uma extremidade.\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/images/datafeeds-one-to-n.png)  |   **Um para n**: um conector com essa extremidade representa uma junção que tem exatamente um valor neste lado da junção.  | 
|  ![\[Uma imagem de uma linha com uma cruz e um círculo em uma extremidade.\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/images/datafeeds-zero-or-one-to-n.png)  |   **Zero ou um para n**: um conector com essa extremidade representa uma junção que tem zero ou um valores nesse lado da junção.  | 
|  ![\[Uma imagem de uma linha com um círculo e um garfo em uma extremidade.\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/images/datafeeds-optional-many-to-n.png)  |   **Zero ou mais para n**: um conector com essa extremidade representa uma junção que tem zero, um ou muitos valores nesse lado da junção.  | 
|  ![\[Uma imagem de uma linha com uma cruz e um garfo em uma extremidade.\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/images/datafeeds-one-or-more-to-n.png)  |   **Um ou mais para n**: um conector com essa extremidade representa uma junção que tem um ou vários valores nesse lado da junção.  | 

# Exemplos de consulta de feed de dados
<a name="data-feed-full-examples"></a>

Esta seção fornece exemplos de consultas complexas usando os feeds de dados fornecidos pelo. AWS Marketplace Esses exemplos são semelhantes aos [Painéis do vendedor](dashboards.md) que você obtém do Portal de gerenciamento do AWS Marketplace. Você pode personalizar essas consultas para criar outros relatórios necessários.

**Topics**
+ [Acordos e renovações](#data-feed-example-agreements)
+ [Receita faturada](#data-feed-example-billed-revenue)
+ [Faturas não cobradas ou desembolsadas](#data-feed-example-collections)
+ [Faturas tributadas](#data-feed-example-tax)
+ [Desembolsos por produto](#data-feed-example-disbursement-by-product)
+ [Relatório de compensação de vendas](#data-feed-example-sales-compensation)

## Acordos e renovações
<a name="data-feed-example-agreements"></a>

Para encontrar seus dados de contrato e renovação, execute um conjunto de consultas como a mostrada no exemplo a seguir. As consultas se complementam para criar o painel de **contratos e renovações**, seção de dados granulares. Você pode usar o exemplo conforme mostrado ou personalizá-lo para seus dados e casos de uso.

Os comentários nas consultas explicam o que as consultas fazem e como modificá-las.

```
      Query currently under development.
```

## Receita faturada
<a name="data-feed-example-billed-revenue"></a>

Para encontrar seus dados de contrato e renovação, execute um conjunto de consultas como a mostrada no exemplo a seguir. As consultas se complementam para criar o relatório de **receita faturada**. Você pode usar o exemplo conforme mostrado ou personalizá-lo para seus dados e casos de uso.

Os comentários nas consultas explicam o que as consultas fazem e como modificá-las.

```
-- Billed revenue report

-- General note: When executing this query we are assuming that the data ingested in the database uses 
-- two time axes (the valid_from column and the update_date column).
-- See documentation for more details: https://docs.aws.amazon.com/marketplace/latest/userguide/data-feed.html#data-feed-details

-- An account_id has several valid_from dates (each representing a separate revision of the data)
-- but because of bi-temporality, an account_id + valid_from tuple can appear multiple times with a different update_date.
-- We are only interested in the most recent tuple (ie, uni-temporal model)
with accounts_with_uni_temporal_data as (
  select
    account_id,
    aws_account_id,
    encrypted_account_id,
    mailing_address_id,
    tax_address_id,
    tax_legal_name,
    from_iso8601_timestamp(valid_from) as valid_from,
    tax_registration_number
  from
    (
      select
        account_id,
        aws_account_id,
        encrypted_account_id,
        mailing_address_id,
        tax_address_id,
        tax_legal_name,
        valid_from,
        delete_date,
        tax_registration_number,
        row_number() over (partition by account_id, valid_from order by from_iso8601_timestamp(update_date) desc) as row_num
      from
        accountfeed_v1
    )
    where
      -- keep latest ...
      row_num = 1
      -- ... and remove the soft-deleted one.
      and (delete_date is null or delete_date = '')
  ),

accounts_with_history as (
  with accounts_with_history_with_extended_valid_from as (
    select
      account_id,
      -- sometimes, this columns gets imported as a "bigint" and loses heading 0s -> casting to a char and re-adding heading 0s (if need be)
      substring('000000000000'||cast(aws_account_id as varchar),-12) as aws_account_id,
      encrypted_account_id,
      mailing_address_id,
      tax_address_id,
      tax_legal_name,
      -- The start time of account valid_from is extended to '1970-01-01 00:00:00', because:
      -- ... in tax report transformations, some tax line items with invoice_date cannot
      -- ... fall into the default valid time range of the associated account
      case
        when lag(valid_from) over (partition by account_id order by valid_from asc) is null
          then cast('1970-01-01 00:00:00' as timestamp)
        else valid_from
      end as valid_from
    from accounts_with_uni_temporal_data
    )
  select
    account_id,
    aws_account_id,
    encrypted_account_id,
    mailing_address_id,
    tax_address_id,
    tax_legal_name,
    valid_from,
    coalesce(
      lead(valid_from) over (partition by account_id order by valid_from asc),
      cast('2999-01-01 00:00:00' as timestamp)
    ) as valid_to
  from
    accounts_with_history_with_extended_valid_from
),

-- An address_id has several valid_from dates (each representing a separate revision of the data)
-- but because of bi-temporality, an account_id + valid_from tuple can appear multiple times with a different update_date.
-- We are only interested in the most recent tuple (ie, uni-temporal model)
address_with_uni_temporal_data as (
  select
    from_iso8601_timestamp(valid_from) as valid_from,
    address_id,
    company_name,
    email_domain,
    country_code,
    state_or_region,
    city,
    postal_code,
    row_num
  from
  (
    select
      valid_from,
      update_date,
      delete_date,
      address_id,
      company_name,
      email_domain,
      country_code,
      state_or_region,
      city,
      postal_code,
      row_number() over (partition by address_id, valid_from order by from_iso8601_timestamp(update_date) desc) as row_num
    from
      addressfeed_v1
  )
  where
    -- keep latest ...
    row_num = 1
    -- ... and remove the soft-deleted one.
    and (delete_date is null or delete_date = '')
),

-- We are only interested in the most recent tuple (BTW: a given address is not supposed to change over time but when bugs ;-) so this query mainly does nothing)
address_with_latest_revision as (
  select
    valid_from,
    address_id,
    company_name,
    email_domain,
    country_code,
    state_or_region,
    city,
    postal_code,
    row_num_latest_revision
  from
  (
    select
      valid_from,
      address_id,
      company_name,
      email_domain,
      country_code,
      state_or_region,
      city,
      postal_code,
      row_number() over (partition by address_id order by valid_from desc) as row_num_latest_revision
    from
      address_with_uni_temporal_data
  )
  where
    row_num_latest_revision = 1
),

accounts_with_history_with_company_name as (
  select
    awh.account_id,
    awh.aws_account_id,
    awh.encrypted_account_id,
    awh.mailing_address_id,
    awh.tax_address_id,
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when address.company_name = '' then null else address.company_name end,
      awh.tax_legal_name) as mailing_company_name,
    address.email_domain,
    awh.valid_from,
    -- For BYOL, the agreement might be accepted (using some external non-AWS system or manual process) days before
    -- that BYOL agreement is entered into AWS Marketplace by the buyer. Therefore, the buyer is permitted to manually
    -- enter a backdated acceptance date, which might predate the point in time when the account was created.
    -- To work around this, we need to adjust the valid_from of the account to be
    -- earlier than the earliest possible backdated BYOL agreement acceptance date.
    case
      when lag(awh.valid_from) over (partition by aws_account_id order by awh.valid_from asc) is null
      then date_add('Day', -212, awh.valid_from)
      -- 212 is the longest delay between acceptance_date of the agreement and the account start_Date
      else awh.valid_from
    end as valid_from_adjusted,
    awh.valid_to
  from accounts_with_history as awh
  left join address_with_latest_revision as address on
    awh.mailing_address_id = address.address_id and awh.mailing_address_id is not null
),

-- An agreement_id has several valid_from dates (each representing an agreement revision)
-- but because of bi-temporality, an agreement_id + valid_from tuple can appear multiple times with a different update_date.
-- We are only interested in the most recent tuple (ie, uni-temporal model)
agreements_with_uni_temporal_data as (
  select
    agreement_id,
    origin_offer_id,
    proposer_account_id,
    acceptor_account_id,
    agreement_revision,
    from_iso8601_timestamp(valid_from) as valid_from,
    from_iso8601_timestamp(start_date) as start_date,
    from_iso8601_timestamp(end_date) as end_date,
    from_iso8601_timestamp(acceptance_date) as acceptance_date,
    agreement_type,
    previous_agreement_id,
    agreement_intent
  from
  (
    select
      --empty value in Athena shows as '', change all '' value to null
      case when agreement_id = '' then null else agreement_id end as agreement_id,
      origin_offer_id,
      proposer_account_id,
      acceptor_account_id,
      agreement_revision,
      valid_from,
      delete_date,
      start_date,
      end_date,
      acceptance_date,
      agreement_type,
      previous_agreement_id,
      agreement_intent,
      row_number() over (partition by agreement_id, valid_from order by from_iso8601_timestamp(update_date) desc) as row_num
    from
      -- TODO change to agreementfeed_v1 when Agreement Feed is GA'ed
      agreementfeed
  )
  where
    -- keep latest ...
    row_num = 1
    -- ... and remove the soft-deleted one.
    and (delete_date is null or delete_date = '')
),

agreements_with_history as (
  with agreements_with_window_functions as (
    select
      agreement_id,
      origin_offer_id as offer_id,
      proposer_account_id,
      acceptor_account_id,
      agreement_revision,
      start_date,
      end_date,
      acceptance_date,
      -- The start time of agreement valid_from is extended to '1970-01-01 00:00:00', because:
      -- ... in usage report transformations, some usage line items with usage_date cannot
      -- ... fall into the default valid time range of the associated agreement
      case
          when lag(valid_from) over (PARTITION BY agreement_id order by valid_from asc) is null
          then timestamp '1970-01-01 00:00:00'
          else valid_from
      end as valid_from,
      coalesce(
          lead(valid_from) over (partition by agreement_id order by valid_from asc),
          timestamp '2999-01-01 00:00:00'
      ) as valid_to,
      rank() over (partition by agreement_id order by valid_from asc) version,
      agreement_type,
      previous_agreement_id,
      agreement_intent
    from
      agreements_with_uni_temporal_data
  )
  select
    agreement_id,
    offer_id,
    proposer_account_id,
    acceptor_account_id,
    agreement_revision,
    start_date,
    end_date,
    acceptance_date,
    valid_from,
    case
        when version=1 and valid_from<timestamp '2023-03-03 06:16:08.743' then timestamp '1970-01-01'
        -- The following 60 minute adjustment is to handle special case where When Renewal happens for a contract
        when version=1 then date_add('minute',-60,valid_from)
        else valid_from
    end as valid_from_adjusted,
    valid_to,
    agreement_type,
    previous_agreement_id,
    agreement_intent
  from
    agreements_with_window_functions
),

-- An offer_id has several valid_from dates (each representing an offer revision)
-- but because of bi-temporality, an offer_id + valid_from tuple can appear multiple times with a different update_date.
-- We are only interested in the most recent tuple (ie, uni-temporal model)
offers_with_uni_temporal_data as (
  select
    from_iso8601_timestamp(valid_from) as valid_from,
    from_iso8601_timestamp(update_date) as update_date,
    from_iso8601_timestamp(delete_date) as delete_date,
    offer_id,
    offer_revision,
    name,
    expiration_date,
    opportunity_id,
    opportunity_name,
    opportunity_description,
    seller_account_id
  from
  (
    select
      valid_from,
      update_date,
      delete_date,
      offer_id,
      offer_revision,
      name,
      expiration_date,
      opportunity_id,
      opportunity_name,
      opportunity_description,
      seller_account_id,
      row_number() over (partition by offer_id, valid_from order by from_iso8601_timestamp(update_date) desc) as row_num
    from
      offerfeed_v1
  )
  where
    -- keep latest ...
    row_num = 1
    -- ... and remove the soft-deleted one.
    and (delete_date is null or delete_date = '')
),

-- Here, we build the validity time range (adding valid_to on top of valid_from) of each offer revision.
-- We will use it to get Offer name at invoice time.
-- NB: If you'd rather get "current" offer name, un-comment "offers_with_latest_revision"
offers_with_history as (
  select
    offer_id,
    offer_revision,
    name,
    opportunity_id,
    opportunity_name,
    opportunity_description,
    valid_from,
    -- When we try to look up an offer revision as at the acceptance date of a BYOL agreement, we run into a problem.
    -- For BYOL, the agreement might be accepted (using some external non-AWS system or manual process) days before
    -- that BYOL agreement is entered into AWS Marketplace by the buyer. Therefore, the buyer is permitted to manually
    -- enter a backdated acceptance date, which might predate the point in time when the first revision of the offer
    -- was created. To work around this, we need to adjust the valid_from on the first revision of the offer to be
    -- earlier than the earliest possible backdated BYOL agreement acceptance date.
    case
      when lag(valid_from) over (partition by offer_id order by valid_from asc) is null and valid_from<cast('2021-04-01' as timestamp)
      then date_add('Day', -3857, valid_from)
      -- 3857 is the longest delay between acceptance_date of an agreement and the first revision of the offer
      when lag(valid_from) over (partition by offer_id order by valid_from asc) is null and valid_from >= cast('2021-04-01' as timestamp)
      then date_add('Day', -1460, valid_from)
      --after 2021 for the two offers we need to adjust for 2 more years
      else valid_from
    end as valid_from_adjusted,
    coalesce(
      lead(valid_from) over (partition by offer_id order by valid_from asc),
      cast('2999-01-01 00:00:00' as timestamp))
    as valid_to
  from offers_with_uni_temporal_data
),
-- provided for reference only if you are interested into get "current" offer name
-- (ie. not used afterwards)
offers_with_latest_revision as (
  select
    offer_id,
    offer_revision,
    name,
    opportunity_name,
    opportunity_description,
    valid_from,
    null valid_to
  from
  (
    select
      offer_id,
      offer_revision,
      name,
      opportunity_name,
      opportunity_description,
      valid_from,
      null valid_to,
      row_number() over (partition by offer_id order by valid_from desc) as row_num_latest_revision
    from
      offers_with_uni_temporal_data
  )
  where
    row_num_latest_revision = 1
),

-- An offer_target_id has several valid_from dates (each representing an offer revision)
-- but because of bi-temporality, an offer_target_id + valid_from tuple can appear multiple times with a different update_date.
-- We are only interested in the most recent tuple (ie, uni-temporal model)
offer_targets_with_uni_temporal_data as (
  select
    from_iso8601_timestamp(valid_from) as valid_from,
    from_iso8601_timestamp(update_date) as update_date,
    from_iso8601_timestamp(delete_date) as delete_date,
    offer_target_id,
    offer_id,
    offer_revision,
    target_type,
    polarity,
    value
  from
  (
    select
      valid_from,
      update_date,
      delete_date,
      offer_target_id,
      offer_id,
      offer_revision,
      target_type,
      polarity,
      value,
      row_number() over (partition by offer_target_id, valid_from order by from_iso8601_timestamp(update_date) desc) as row_num
    from
      offertargetfeed_v1
  )
  where
    -- keep latest ...
    row_num = 1
    -- ... and remove the soft-deleted one.
    and (delete_date is null or delete_date = '')
),

offer_target_type as (
  select
    offer_id,
    offer_revision,
    substring(
      -- The first character indicates the priority (lower value means higher precedence):
      min(
        case
          when offer_target.target_type='BuyerAccounts' then '1Private'
          when offer_target.target_type='ParticipatingPrograms' then '2Program:'||cast(offer_target.value as varchar)
          when offer_target.target_type='CountryCodes' then '3GeoTargeted'
          -- well, there is no other case today, but rather be safe...
          else '4Other Targeting'
        end
      ),
      -- Remove the first character that was only used for th priority in the "min" aggregate function:
      2
    ) as offer_target
  from
    offer_targets_with_uni_temporal_data as offer_target
  group by
    offer_id,
    offer_revision
),

offers_with_history_with_target_type as (
  select
    offer.offer_id,
    offer.offer_revision,
    -- even though today it is not possible to combine several types of targeting in a single offer, let's ensure the query is still predictable if this gets possible in the future
    max(
      case
        when off_tgt.offer_target is null then 'Public'
        else off_tgt.offer_target
      end
    ) as offer_target,
    min(offer.name) as name,
    min(offer.opportunity_name) as opportunity_name,
    min(offer.opportunity_description) as opportunity_description,
    offer.valid_from,
    offer.valid_from_adjusted,
    offer.valid_to,
    offer.opportunity_id
  from
    offers_with_history as offer
  left join offer_target_type as off_tgt on
    offer.offer_id = off_tgt.offer_id
    and offer.offer_revision = off_tgt.offer_revision
  group by
    offer.offer_id,
    offer.offer_revision,
    offer.valid_from,
    offer.valid_from_adjusted,
    offer.valid_to,
    offer.opportunity_id
),

-- provided for reference only if you are interested into get "current" offer targets
-- (ie. not used afterwards)
offers_with_latest_revision_with_target_type as (
  select
    offer.offer_id,
    offer.offer_revision,
    -- even though today it is not possible to combine several types of targeting in a single offer, let's ensure the query is still predictable if this gets possible in the future
    max(
      distinct
      case
        when off_tgt.target_type is null then 'Public'
        when off_tgt.target_type='BuyerAccounts' then 'Private'
        when off_tgt.target_type='ParticipatingPrograms' then 'Program:'||cast(off_tgt.value as varchar)
        when off_tgt.target_type='CountryCodes' then 'GeoTargeted'
        -- well, there is no other case today, but rather be safe...
        else 'Other Targeting'
      end
    ) as offer_target,
    min(offer.name) as name,
    min(offer.opportunity_name) as opportunity_name,
    min(offer.opportunity_description) as opportunity_description,
    offer.valid_from,
    offer.valid_to
  from
    offers_with_latest_revision offer
    -- left joining because public offers don't have targets
    left join offer_targets_with_uni_temporal_data off_tgt on
      offer.offer_id=off_tgt.offer_id and offer.offer_revision=off_tgt.offer_revision
  group by
    offer.offer_id,
    offer.offer_revision,
    -- redundant with offer_revision, as each revision has a dedicated valid_from (but cleaner in the group by)
    offer.valid_from,
    offer.valid_to
),

-- A product_id has several valid_from dates (each representing a product revision),
-- but because of bi-temporality, each product_id + valid_from tuple can appear multiple times with a different update_date.
-- We are only interested in the most recent tuple (ie, uni-temporal model)
products_with_uni_temporal_data as (
  select
    from_iso8601_timestamp(valid_from) as valid_from,
    from_iso8601_timestamp(update_date) as update_date,
    from_iso8601_timestamp(delete_date) as delete_date,
    product_id,
    manufacturer_account_id,
    product_code,
    title
  from
  (
    select
      valid_from,
      update_date,
      delete_date,
      product_id,
      manufacturer_account_id,
      product_code,
      title,
      row_number() over (partition by product_id, valid_from order by from_iso8601_timestamp(update_date) desc) as row_num
    from
      productfeed_v1
  )
  where
    -- keep latest ...
    row_num = 1
    -- ... and remove the soft-deleted one.
    and (delete_date is null or delete_date = '')
),

products_with_history as (
  select
    product_id,
    title,
    valid_from,
    -- Offerv2 can have upto 50 years and Offerv3 is upto 5 years of past date
    case
      when lag(valid_from) over (partition by product_id order by valid_from asc) is null and valid_from<cast('2021-04-01' as timestamp)
        then date_add('Day', -3857, valid_from)
      -- 3827 is the longest delay between acceptance_date of an agreement and the product
      -- we are keeping 3857 as a consistency between the offers and products
      when lag(valid_from) over (partition by product_id order by valid_from asc) is null and valid_from >= cast('2021-04-01' as timestamp)
        then date_add('Day', -2190, valid_from)
      --after 2021 for the two offers we need to adjust for 2 more years
      else valid_from 
    end as valid_from_adjusted,
    coalesce(
      lead(valid_from) over (partition by product_id order by valid_from asc),
      cast('2999-01-01 00:00:00' as timestamp)
    ) as valid_to,
    product_code,
    manufacturer_account_id
  from
    products_with_uni_temporal_data
),

legacy_products as (
  select
    legacy_id,
    new_id
  from
    legacyidmappingfeed_v1
  where
    mapping_type='PRODUCT'
  group by
    legacy_id,
    new_id
),

-- A given billing_event_id represents an accounting event and thus has only one valid_from date,
-- but because of bi-temporality, a billing_event_id (+ its valid_from) can appear multiple times with a different update_date.
-- We are only interested in the most recent tuple (ie, uni-temporal model)
billing_events_with_uni_temporal_data as (
  select
    billing_event_id,
    valid_from,
    update_date,
    delete_date,
    invoice_date,
    transaction_type,
    transaction_reference_id,
    parent_billing_event_id,
    bank_trace_id,
    broker_id,
    product_id,
    disbursement_billing_event_id,
    action,
    from_account_id,
    to_account_id,
    end_user_account_id,
    billing_address_id,
    amount,
    currency,
    balance_impacting,
    --empty value in Athena shows as '', change all '' value to null
    case when agreement_id = '' then null else agreement_id end as agreement_id,
    invoice_id,
    payment_due_date,
    usage_period_start_date,
    usage_period_end_date,
    buyer_transaction_reference_id,
    row_num
  from
  (
    select
      billing_event_id,
      from_iso8601_timestamp(valid_from) as valid_from,
      from_iso8601_timestamp(update_date) as update_date,
      delete_date,
      from_iso8601_timestamp(invoice_date) as invoice_date,
      transaction_type,
      transaction_reference_id,
      parent_billing_event_id,
      -- casting in case data was imported as number
      cast(bank_trace_id as varchar) as bank_trace_id,
      broker_id,
      product_id,
      disbursement_billing_event_id,
      action,
      from_account_id,
      to_account_id,
      end_user_account_id,
      billing_address_id,
      -- casting in case data was imported as varchar
      cast(amount as decimal(38,6)) as amount,
      currency,
      balance_impacting,
      agreement_id,
      invoice_id,
      case when payment_due_date is null or payment_due_date = '' then null else from_iso8601_timestamp(payment_due_date) end as payment_due_date,
      from_iso8601_timestamp(usage_period_start_date) as usage_period_start_date,
      from_iso8601_timestamp(usage_period_end_date) as usage_period_end_date,
      buyer_transaction_reference_id,
      row_number() over (partition by billing_event_id, valid_from order by from_iso8601_timestamp(update_date) desc) as row_num
    from
      billingeventfeed_v1
  )
  where
    -- keep latest ...
    row_num = 1
    -- ... and remove the soft-deleted one.
    and (delete_date is null or delete_date = '')
),

-- Here we select the account_id of the current seller (We identify this by looking for the to_account_id related to revenue transactions).
-- We will use it later to distinguish own agreements from agreements generated by channel partners.
seller_account as (
  select
    from_account_id as seller_account_id
  from
    billing_events_with_uni_temporal_data bill
  where
    -- Assumption here is only seller will pay listing fee. As of 12/21/2021, there are cases that Channel partner have 0 listing fee for CPPO, so the amount could be 0.
    bill.transaction_type like 'AWS_REV_SHARE' and amount <= 0 and action = 'INVOICED'
  group by
    -- from_account_id is always the same for all those "listing fee" transactions == the seller of record himself.
    -- If this view returns more than 1 record, the overall query will fail (on purpose). Please contact AWS Marketplace if this happens.
    from_account_id
),

billing_event_with_business_flags as (
  select
    bl.billing_event_id,
    bl.end_user_account_id,
    bl.agreement_id,
    aggrement.proposer_account_id,
    aggrement.offer_id,
    aggrement.acceptor_account_id,
    case
      -- For AWS and BALANCE_ADJUSTMENT, the billing event feed will show the "AWS Marketplace" account as the
      -- receiver of the funds and the seller as the payer. We are not interested in this information here.
      -- Null values will be ignored by the `max` aggregation function.
      when bl.transaction_type like 'AWS%' then null
      -- For BALANCE_ADJUSTMENT, payer is seller themselves
      when bl.invoice_id is null then bl.to_account_id
      -- We get the payer of the invoice from *any* transaction type that is not AWS and not BALANCE_ADJUSTMENT (because they are the same for a given end user + agreement + product).
      else bl.from_account_id
    end as payer_account_id,
    bl.product_id,
    bl.action,
    bl.transaction_type,
    bl.parent_billing_event_id,
    bl.disbursement_billing_event_id,
    bl.amount,
    bl.currency,
    bl.balance_impacting,
    bl.invoice_date,
    bl.payment_due_date,
    bl.usage_period_start_date,
    bl.usage_period_end_date,
    bl.invoice_id,
    bl.billing_address_id,
    bl.transaction_reference_id,
    bl.buyer_transaction_reference_id,
    case when disbursement.bank_trace_id = 'EMEA_MP_TEST_TRACE_ID' then null else disbursement.bank_trace_id end as bank_trace_id,
    case when disbursement.bank_trace_id = 'EMEA_MP_TEST_TRACE_ID' then null else disbursement.invoice_date end as disbursement_date,
    disbursement.billing_event_id as disbursement_id,
    -- We will use disbursement_id_or_invoiced as part of the PK, so it cannot be null:
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when disbursement.billing_event_id = '' then null else disbursement.billing_event_id end,
      '<invoiced>') as disbursement_id_or_invoiced,
    bl.broker_id,
    case
      when bl.invoice_id is null /* transaction_type = 'BALANCE_ADJUSTMENT' */
        then (select seller_account_id from seller_account) ||':'|| cast(bl.invoice_date as varchar)
      else bl.buyer_transaction_reference_id
        ||'-'|| case when bl.agreement_id is null or bl.agreement_id = '' then ' ' else bl.agreement_id end
        ||'-'|| case when bl.end_user_account_id is null or bl.end_user_account_id = '' then ' ' else bl.end_user_account_id end
        ||'-'|| coalesce(cast(bl.usage_period_start_date as varchar),' ')
        ||'-'|| coalesce(cast(bl.usage_period_end_date as varchar),' ')
    end as internal_buyer_line_item_id,
    bl.buyer_transaction_reference_id <> bl.transaction_reference_id as is_seller_invoice,
    case when bl.transaction_type = 'SELLER_REV_SHARE' and (select seller_account_id from seller_account) <> bl.to_account_id then true else false end as is_cog,
    case when bl.transaction_type in('SELLER_REV_SHARE_CREDIT', 'SELLER_REV_SHARE_REFUND') and (select seller_account_id from seller_account) <> bl.to_account_id then true else false end as is_cog_refund,
    --TODO: replace below logic once we can create a logic the identify reseller/manufacturer without depending on agreement feed
    case when aggrement.proposer_account_id <> (select seller_account_id from seller_account) then true else false end as is_manufacturer_view_of_reseller
  from
    billing_events_with_uni_temporal_data as bl
    left join billing_events_with_uni_temporal_data as disbursement on
      disbursement.transaction_type like 'DISBURSEMENT%'
        and disbursement.action = 'DISBURSED'
        and disbursement.transaction_type IN ('DISBURSEMENT', 'DISBURSEMENT_FAILURE')
        and bl.disbursement_billing_event_id = disbursement.billing_event_id
    left join agreements_with_history as aggrement on
      bl.agreement_id = aggrement.agreement_id
        and bl.invoice_date >= aggrement.valid_from_adjusted
        and bl.invoice_date<aggrement.valid_to
    left join accounts_with_history awh on
      bl.to_account_id = awh.account_id
        and bl.invoice_date >= awh.valid_from
        and bl.invoice_date<awh.valid_to
  where
    bl.transaction_type not like 'DISBURSEMENT%' and
      (bl.agreement_id is null or bl.agreement_id = ''
      or aggrement.agreement_id is not null)
),

-- listagg function in athena does not support partitioning, grouping here and then joining to the main query
seller_invoice_list as (
  select
    internal_buyer_line_item_id,
    listagg(case when not is_seller_invoice then null else invoice_id end,',') within group (order by case when not is_seller_invoice then null else cast(invoice_date as varchar) end) as seller_invoice_id_or_null,
    listagg(case when not is_seller_invoice then null else cast(invoice_date as varchar) end,',') within group (order by case when not is_seller_invoice then null else cast(invoice_date as varchar) end) as seller_invoice_date_or_null
  from
    (
    -- listagg function in athena does not support ordering by another field when distinct is used,
    -- here we first select distinct invoices and then do the listagg order by invoice_date
    select distinct internal_buyer_line_item_id, is_seller_invoice, invoice_id, invoice_date
    from billing_event_with_business_flags) distinct_invoices
  group by internal_buyer_line_item_id
  order by internal_buyer_line_item_id
),

billing_event_with_categorized_transaction as (
-- Use the flags that were created in the previous transformation in more calculated columns:
-- NOTE: This transformation has no joins and no window functions
  select
    billing_event_id,
    end_user_account_id,
    agreement_id,
    proposer_account_id,
    offer_id,
    acceptor_account_id,
    case when is_cog or is_cog_refund then null else payer_account_id end as payer_account_id,
    product_id,
    action,
    transaction_type,
    parent_billing_event_id,
    disbursement_billing_event_id,
    amount,
    currency,
    balance_impacting,
    invoice_date,
    payment_due_date,
    usage_period_start_date,
    usage_period_end_date,
    invoice_id,
    billing_address_id,
    transaction_reference_id,
    buyer_transaction_reference_id,
    bank_trace_id,
    disbursement_date,
    disbursement_id,
    disbursement_id_or_invoiced,
    broker_id,
    bl.internal_buyer_line_item_id,
    is_seller_invoice,
    is_cog,
    is_cog_refund,
    is_manufacturer_view_of_reseller,

    -- Buyer/seller columns:
    case when is_seller_invoice then null else invoice_id end as buyer_invoice_id_or_null,
    seller_invoices.seller_invoice_id_or_null,
    case when is_seller_invoice then null else invoice_date end as buyer_invoice_date_or_null,
    seller_invoices.seller_invoice_date_or_null,

    -- Categorized amounts by transaction type:
    case when transaction_type =   'SELLER_REV_SHARE' and not is_cog then amount else 0 end as gross_revenue,
    case when transaction_type in ('SELLER_REV_SHARE_REFUND','SELLER_REV_SHARE_CREDIT') and not is_cog_refund then amount else 0 end as gross_refund,
    case when transaction_type =   'SELLER_REV_SHARE' and     is_cog then amount else 0 end as cogs,
    case when transaction_type in ('SELLER_REV_SHARE_REFUND','SELLER_REV_SHARE_CREDIT') and     is_cog_refund then amount else 0 end as cogs_refund,
    case when transaction_type =   'AWS_REV_SHARE' then amount else 0 end as aws_rev_share,
    case when transaction_type in ('AWS_REV_SHARE_REFUND','AWS_REV_SHARE_CREDIT') then amount else 0 end as aws_refund_share,
    case when transaction_type =   'AWS_TAX_SHARE' and not is_seller_invoice then amount else 0 end as aws_tax_share,             -- AWS tax share from _buyer_  invoice
    case when transaction_type =   'AWS_TAX_SHARE' and     is_seller_invoice then amount else 0 end as aws_tax_share_listing_fee, -- AWS tax share from _seller_ invoice
    case when transaction_type =   'AWS_TAX_SHARE_REFUND' and not is_seller_invoice then amount else 0 end as aws_tax_share_refund,
    case when transaction_type =   'AWS_TAX_SHARE_REFUND' and     is_seller_invoice then amount else 0 end as aws_tax_share_refund_listing_fee,
    case when transaction_type =   'SELLER_TAX_SHARE' then amount else 0 end as seller_tax_share,
    case when transaction_type =   'SELLER_TAX_SHARE_REFUND' then amount else 0 end as seller_tax_share_refund,
    case when transaction_type =   'BALANCE_ADJUSTMENT' then amount else 0 end as balance_adjustment,
    case when transaction_type =   'SELLER_REV_SHARE_CREDIT' then amount else 0 end as seller_rev_credit,
    case when transaction_type =   'AWS_REV_SHARE_CREDIT' then amount else 0 end as aws_ref_fee_credit
  from
    billing_event_with_business_flags as bl
    left join seller_invoice_list as seller_invoices
      on bl.internal_buyer_line_item_id = seller_invoices.internal_buyer_line_item_id
    ),

line_items_aggregated as (
-- This transformation has the only "group by" in all of these transformations.
-- NOTE: This transformation has no joins and no window functions
  select
    internal_buyer_line_item_id,
    disbursement_id,
    disbursement_id_or_invoiced,
    product_id,
    broker_id,
    currency,
    agreement_id,
    proposer_account_id,
    acceptor_account_id,
    max(payer_account_id) as payer_account_id,
    offer_id,
    end_user_account_id,
    usage_period_start_date,
    usage_period_end_date,
    max(payment_due_date) payment_due_date,
    buyer_transaction_reference_id,
    bank_trace_id,
    disbursement_date,
    max(billing_address_id) as billing_address_id,

    -- Buyer/seller columns:
    max(buyer_invoice_id_or_null) as buyer_invoice_id,
    max(seller_invoice_id_or_null) as seller_invoice_id,
    max(buyer_invoice_date_or_null) as buyer_invoice_date,
    max(seller_invoice_date_or_null) as seller_invoice_date,
  
    -- Categorized amounts by transaction type:
    -- When disbursement_id_or_invoiced = '<invoiced>',    these are invoiced amounts
    -- When disbursement_id_or_invoiced <> '<invoiced>' these are disbursed amounts for _this_ specific disbursement_id
    sum(gross_revenue) as gross_revenue_this_disbursement_id_or_invoiced,
    sum(gross_refund) as gross_refund_this_disbursement_id_or_invoiced,
    sum(cogs) as cogs_this_disbursement_id_or_invoiced,
    sum(cogs_refund) as cogs_refund_this_disbursement_id_or_invoiced,
    sum(aws_rev_share) as aws_rev_share_this_disbursement_id_or_invoiced,
    sum(aws_refund_share) as aws_refund_share_this_disbursement_id_or_invoiced,
    sum(aws_tax_share) as aws_tax_share_this_disbursement_id_or_invoiced,
    sum(aws_tax_share_listing_fee) as aws_tax_share_listing_fee_this_disbursement_id_or_invoiced,
    sum(aws_tax_share_refund) as aws_tax_share_refund_this_disbursement_id_or_invoiced,
    sum(aws_tax_share_refund_listing_fee) as aws_tax_share_refund_listing_fee_this_disbursement_id_or_invoiced,
    sum(seller_tax_share) as seller_tax_share_this_disbursement_id_or_invoiced,
    sum(seller_tax_share_refund) as seller_tax_share_refund_this_disbursement_id_or_invoiced,
    sum(balance_adjustment) as balance_adjustment_this_disbursement_id_or_invoiced,
    sum(seller_rev_credit) as seller_rev_credit_this_disbursement_id_or_invoiced,
    sum(aws_ref_fee_credit) as aws_ref_fee_credit_this_disbursement_id_or_invoiced
  from
    billing_event_with_categorized_transaction as billing_categorized
  group by
    internal_buyer_line_item_id,
    disbursement_id,
    disbursement_id_or_invoiced,
    broker_id,
    -- The following columns are included the in group by but they are intentionally omitted from the PK.
    -- These columns should have the _same_ values for each record in the PK.
    product_id,
    currency,
    agreement_id,
    proposer_account_id,
    acceptor_account_id,
    offer_id,
    end_user_account_id,
    usage_period_start_date,
    usage_period_end_date,
    buyer_transaction_reference_id,
    bank_trace_id,
    disbursement_date
),

-- listagg function in athena does not support partitioning, grouping here and then joining to the main query
disbursement_list as (
  select
    internal_buyer_line_item_id,
    listagg(cast(disbursement_date as varchar),',') within group (order by cast(disbursement_date as varchar)) as disbursement_date_list,
    listagg(bank_trace_id,',') within group (order by cast(disbursement_date as varchar)) as disburse_bank_trace_id_list
    from (
    -- listagg function in athena does not support ordering by another field when distinct is used,
    -- here we first select distinct bank_trace_ids and then do the listagg order by disbursement_date
    select distinct internal_buyer_line_item_id, disbursement_date, bank_trace_id
  from billing_event_with_business_flags) distinct_disbursements
  group by internal_buyer_line_item_id
  order by internal_buyer_line_item_id
),

line_items_with_window_functions as (
--add flag next step compare gross_revenue and gross_revenue_disbursed or gross_refund and gross_refund_disbursed
  select
    line_item.internal_buyer_line_item_id,
    disbursement_id,
    disbursement_id_or_invoiced,
    product_id,
    broker_id,
    currency,
    agreement_id,
    proposer_account_id,
    acceptor_account_id,
    -- when there's aws_rev_Share adjustment/refund to a seller_rev_share invoice, it can happen that for the same aws_rev_share invoice_id, there are multiple disbursement events,
    -- using windows function to map payer_account_id of seller_rev_share to all corresponding aws_rev_Share
    max(payer_account_id) over (partition by line_item.internal_buyer_line_item_id) as payer_account_id,
    offer_id,
    end_user_account_id,
    usage_period_start_date,
    usage_period_end_date,
    payment_due_date,
    bank_trace_id,
    disbursement_date,
    billing_address_id,

    -- Buyer/seller columns:
    max(buyer_invoice_id) over (partition by line_item.internal_buyer_line_item_id) as buyer_invoice_id,
    seller_invoice_id,
    max(buyer_invoice_date) over (partition by line_item.internal_buyer_line_item_id) as buyer_invoice_date,
    seller_invoice_date,

    -- When disbursement_id_or_invoiced = '<invoiced>', these are actually invoiced amounts
    -- When disbursement_id_or_invoiced <> '<invoiced>' these are disbursed amounts for _this_ specific disbursement_id
    gross_revenue_this_disbursement_id_or_invoiced,
    gross_refund_this_disbursement_id_or_invoiced,
    cogs_this_disbursement_id_or_invoiced,
    cogs_refund_this_disbursement_id_or_invoiced,
    aws_rev_share_this_disbursement_id_or_invoiced,
    aws_refund_share_this_disbursement_id_or_invoiced,
    aws_tax_share_this_disbursement_id_or_invoiced,
    aws_tax_share_listing_fee_this_disbursement_id_or_invoiced,
    aws_tax_share_refund_this_disbursement_id_or_invoiced,
    aws_tax_share_refund_listing_fee_this_disbursement_id_or_invoiced,
    seller_tax_share_this_disbursement_id_or_invoiced,
    seller_tax_share_refund_this_disbursement_id_or_invoiced,
    balance_adjustment_this_disbursement_id_or_invoiced,
    seller_rev_credit_this_disbursement_id_or_invoiced,
    aws_ref_fee_credit_this_disbursement_id_or_invoiced,
    -- IMPORTANT: All window functions partitioned by internal_buyer_line_item_id:

    -- Invoiced amounts, categorized by transaction type:
    sum(case when disbursement_id_or_invoiced = '<invoiced>' then gross_revenue_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end)over (partition by line_item.internal_buyer_line_item_id) as gross_revenue_invoiced,
    sum(case when disbursement_id_or_invoiced = '<invoiced>' then gross_refund_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as gross_refund_invoiced,
    sum(case when disbursement_id_or_invoiced = '<invoiced>' then cogs_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as cogs_invoiced,
    sum(case when disbursement_id_or_invoiced = '<invoiced>' then cogs_refund_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as cogs_refund_invoiced,
    sum(case when disbursement_id_or_invoiced = '<invoiced>' then aws_rev_share_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_rev_share_invoiced,
    sum(case when disbursement_id_or_invoiced = '<invoiced>' then aws_refund_share_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_refund_share_invoiced,
    sum(case when disbursement_id_or_invoiced = '<invoiced>' then aws_tax_share_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_tax_share_invoiced,
    sum(case when disbursement_id_or_invoiced = '<invoiced>' then aws_tax_share_listing_fee_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_tax_share_listing_fee_invoiced,
    sum(case when disbursement_id_or_invoiced = '<invoiced>' then aws_tax_share_refund_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_tax_share_refund_invoiced,
    sum(case when disbursement_id_or_invoiced = '<invoiced>' then aws_tax_share_refund_listing_fee_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_tax_share_refund_listing_fee_invoiced,
    sum(case when disbursement_id_or_invoiced = '<invoiced>' then seller_tax_share_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as seller_tax_share_invoiced,
    sum(case when disbursement_id_or_invoiced = '<invoiced>' then seller_tax_share_refund_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as seller_tax_share_refund_invoiced,
    sum(case when disbursement_id_or_invoiced = '<invoiced>' then balance_adjustment_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as balance_adjustment_invoiced,
    sum(case when disbursement_id_or_invoiced = '<invoiced>' then seller_rev_credit_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as seller_rev_credit_invoiced,
    sum(case when disbursement_id_or_invoiced = '<invoiced>' then aws_ref_fee_credit_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_ref_fee_credit_invoiced,

    -- Total disbursed amounts (for all disbursement_id values), categorized by transaction type:
    sum(case when disbursement_id_or_invoiced <> '<invoiced>' then gross_revenue_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as gross_revenue_disbursed,
    sum(case when disbursement_id_or_invoiced <> '<invoiced>' then gross_refund_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as gross_refund_disbursed,
    sum(case when disbursement_id_or_invoiced <> '<invoiced>' then cogs_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as cogs_disbursed,
    sum(case when disbursement_id_or_invoiced <> '<invoiced>' then cogs_refund_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as cogs_refund_disbursed,
    sum(case when disbursement_id_or_invoiced <> '<invoiced>' then aws_rev_share_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_rev_share_disbursed,
    sum(case when disbursement_id_or_invoiced <> '<invoiced>' then aws_refund_share_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_refund_share_disbursed,
    sum(case when disbursement_id_or_invoiced <> '<invoiced>' then aws_tax_share_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_tax_share_disbursed,
    sum(case when disbursement_id_or_invoiced <> '<invoiced>' then aws_tax_share_listing_fee_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_tax_share_listing_fee_disbursed,
    sum(case when disbursement_id_or_invoiced <> '<invoiced>' then aws_tax_share_refund_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_tax_share_refund_disbursed,
    sum(case when disbursement_id_or_invoiced <> '<invoiced>' then aws_tax_share_refund_listing_fee_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_tax_share_refund_listing_fee_disbursed,
    sum(case when disbursement_id_or_invoiced <> '<invoiced>' then seller_tax_share_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as seller_tax_share_disbursed,
    sum(case when disbursement_id_or_invoiced <> '<invoiced>' then seller_tax_share_refund_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as seller_tax_share_refund_disbursed,
    sum(case when disbursement_id_or_invoiced <> '<invoiced>' then balance_adjustment_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as balance_adjustment_disbursed,
    sum(case when disbursement_id_or_invoiced <> '<invoiced>' then seller_rev_credit_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as seller_rev_credit_disbursed,
    sum(case when disbursement_id_or_invoiced <> '<invoiced>' then aws_ref_fee_credit_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_ref_fee_credit_disbursed,

    -- aggregate multiple disbursement
    max(disbursement_date) over (partition by line_item.internal_buyer_line_item_id) as last_disbursement_date,
    first_value(case when disbursement_id_or_invoiced = '<invoiced>' then null else disbursement_id_or_invoiced end) over(partition by line_item.internal_buyer_line_item_id order by coalesce(disbursement_date,cast('1900-01-01' as timestamp)) desc rows between unbounded preceding and unbounded following) as last_disbursement_id,
    first_value(bank_trace_id) over (partition by line_item.internal_buyer_line_item_id order by coalesce(disbursement_date,cast('1900-01-01' as timestamp)) desc rows between unbounded preceding and unbounded following) as last_disburse_bank_trace_id,
    disb_list.disbursement_date_list,
    disb_list.disburse_bank_trace_id_list
  from
    line_items_aggregated as line_item
    left join disbursement_list disb_list
      on line_item.internal_buyer_line_item_id = disb_list.internal_buyer_line_item_id
),

cppo_offer_id as (
  select
    -- Channel partner offers do not exist in offertargetfeed_v1 table (as per legal requirement), causing cppo offer be defined as 'Public' in previous step, we will convert them back to 'Private' in next step
    offer_id
  from
    offers_with_uni_temporal_data
  where
    -- seller_account_id is null means the ISV owns the offer
    seller_account_id is not null
    and seller_account_id <>  (select seller_account_id from seller_account)
  group by
    offer_id
),

line_items_with_window_functions_enrich_offer_product_address as (
  select
    internal_buyer_line_item_id,
    disbursement_id,
    disbursement_id_or_invoiced,
    line.product_id,
    legacy_product.legacy_id as legacy_product_id,
    products.title as product_title,
    line.broker_id,
    line.currency,
    line.end_user_account_id,
    acc_enduser.encrypted_account_id as end_user_encrypted_account_id,
    acc_enduser.aws_account_id as end_user_aws_account_id,
    acc_payer.aws_account_id as payer_aws_account_id,
    acc_payer.encrypted_account_id payer_encrypted_account_id,
    line.agreement_id,
    agreement.agreement_revision,
    line.proposer_account_id,
    case when offer.offer_id like 'aiqoffer-%' then null else agreement.start_date end as Agreement_Start_Date,
    case when offer.offer_id like 'aiqoffer-%' then null else agreement.end_date end as Agreement_End_Date,
    case when offer.offer_id like 'aiqoffer-%' then null else agreement.acceptance_date end as Agreement_Acceptance_Date,
    case when offer.offer_id like 'aiqoffer-%' then null else agreement.valid_from end as agreement_updated_date,
    case when offer.offer_id like 'aiqoffer-%' then null else line.usage_period_start_date end as Usage_Period_Start_Date,
    case when offer.offer_id like 'aiqoffer-%' then null else line.usage_period_end_date end as Usage_Period_End_Date,

    line.acceptor_account_id,
    acc_subscriber.aws_account_id as subscriber_aws_account_id,
    acc_subscriber.encrypted_account_id as subscriber_encrypted_account_id,
    offer.offer_id,
    case
      when offer.offer_id in (
        select distinct offer_id
        from cppo_offer_id)
        then 'Private'
      else offer.offer_target
    end as offer_target,
    offer.name offer_name,
    offer.opportunity_name offer_opportunity_name,
    offer.opportunity_description offer_opportunity_description,
    offer.opportunity_id,
    payment_due_date,
    line.bank_trace_id,
    disbursement_date,
    billing_address_id,
    buyer_invoice_id,
    seller_invoice_id,
    buyer_invoice_date,
    seller_invoice_date,
    gross_revenue_this_disbursement_id_or_invoiced,
    gross_refund_this_disbursement_id_or_invoiced,
    cogs_this_disbursement_id_or_invoiced,
    cogs_refund_this_disbursement_id_or_invoiced,
    aws_rev_share_this_disbursement_id_or_invoiced,
    aws_refund_share_this_disbursement_id_or_invoiced,
    aws_tax_share_this_disbursement_id_or_invoiced,
    aws_tax_share_listing_fee_this_disbursement_id_or_invoiced,
    aws_tax_share_refund_this_disbursement_id_or_invoiced,
    aws_tax_share_refund_listing_fee_this_disbursement_id_or_invoiced,
    seller_tax_share_this_disbursement_id_or_invoiced,
    seller_tax_share_refund_this_disbursement_id_or_invoiced,
    balance_adjustment_this_disbursement_id_or_invoiced,
    seller_rev_credit_this_disbursement_id_or_invoiced,
    aws_ref_fee_credit_this_disbursement_id_or_invoiced,
    gross_revenue_invoiced,
    gross_refund_invoiced,
    cogs_invoiced,
    cogs_refund_invoiced,
    aws_rev_share_invoiced,
    aws_refund_share_invoiced,
    aws_tax_share_invoiced,
    aws_tax_share_listing_fee_invoiced,
    aws_tax_share_refund_invoiced,
    aws_tax_share_refund_listing_fee_invoiced,
    seller_tax_share_invoiced,
    seller_tax_share_refund_invoiced,
    balance_adjustment_invoiced,
    seller_rev_credit_invoiced,
    aws_ref_fee_credit_invoiced,
    gross_revenue_disbursed,
    gross_refund_disbursed,
    cogs_disbursed,
    cogs_refund_disbursed,
    aws_rev_share_disbursed,
    aws_refund_share_disbursed,
    aws_tax_share_disbursed,
    aws_tax_share_listing_fee_disbursed,
    aws_tax_share_refund_disbursed,
    aws_tax_share_refund_listing_fee_disbursed,
    seller_tax_share_disbursed,
    seller_tax_share_refund_disbursed,
    balance_adjustment_disbursed,
    seller_rev_credit_disbursed,
    aws_ref_fee_credit_disbursed,
    last_disbursement_date,
    last_disbursement_id,
    last_disburse_bank_trace_id,
    disbursement_date_list,
    disburse_bank_trace_id_list,
    products.product_code,
    acc_products.aws_account_id as manufacturer_aws_account_id,
    products.manufacturer_account_id,
    --add subscriber and payer addressID, payer address preference order: tax address > billing address > mailing address,  subscriber address preference order: tax address >  mailing address
    coalesce (
      --empty value in Athena shows as '', change all '' value to null in order to follow the preference order logic above
      case when acc_subscriber.tax_address_id ='' then null else acc_subscriber.tax_address_id end,
      case when acc_subscriber.mailing_address_id = '' then null else acc_subscriber.mailing_address_id end) as subscriber_address_id,
    coalesce (
      case when acc_payer.tax_address_id = '' then null else acc_payer.tax_address_id end,
      case when line.billing_address_id = '' then null else line.billing_address_id end,
      case when acc_payer.mailing_address_id = '' then null else acc_payer.mailing_address_id end) as payer_address_id,
    coalesce (
      case when acc_enduser.tax_address_id = '' then null else acc_enduser.tax_address_id end,
      case when line.billing_address_id = '' then null else line.billing_address_id end,
      case when acc_enduser.mailing_address_id = '' then null else acc_enduser.mailing_address_id end) as end_user_address_id
  from
    line_items_with_window_functions as line
  left join agreements_with_history as agreement on
      line.agreement_id = agreement.agreement_id and line.buyer_invoice_date >= agreement.valid_from_adjusted and line.buyer_invoice_date<agreement.valid_to
  left join offers_with_history_with_target_type as offer on
        line.offer_id = offer.offer_id and line.buyer_invoice_date >= offer.valid_from and line.buyer_invoice_date<offer.valid_to
  left join products_with_history as products on
        line.product_id = products.product_id and line.buyer_invoice_date >= products.valid_from_adjusted and line.buyer_invoice_date<products.valid_to
  left join legacy_products as legacy_product on
        line.product_id = legacy_product.new_id
  left join accounts_with_history_with_company_name as acc_payer on
        line.payer_account_id = acc_payer.account_id and line.buyer_invoice_date >= acc_payer.valid_from and line.buyer_invoice_date<acc_payer.valid_to
  left join accounts_with_history_with_company_name as acc_enduser on
        line.end_user_account_id = acc_enduser.account_id and line.buyer_invoice_date >= acc_enduser.valid_from and line.buyer_invoice_date<acc_enduser.valid_to
  left join accounts_with_history_with_company_name as acc_subscriber on
        line.acceptor_account_id = acc_subscriber.account_id and line.buyer_invoice_date >= acc_subscriber.valid_from and line.buyer_invoice_date<acc_subscriber.valid_to
  left join accounts_with_history_with_company_name as acc_products on
        products.manufacturer_account_id = acc_products.account_id and line.buyer_invoice_date >= acc_products.valid_from and line.buyer_invoice_date<acc_products.valid_to

),

line_items_with_window_functions_enrich_offer_product_address_name as (
  select
    line.internal_buyer_line_item_id,
    disbursement_id,
    disbursement_id_or_invoiced,
    product_id,
    legacy_product_id,
    product_title,
    broker_id,
    currency,
    end_user_address_id,
    end_user_account_id,
    end_user_encrypted_account_id,
    end_user_aws_account_id,
    add_enduser.company_name end_user_company_name,
    add_enduser.email_domain end_user_email_domain,
    add_enduser.city end_user_city,
    add_enduser.state_or_region end_user_state,
    add_enduser.country_code end_user_country,
    add_enduser.postal_code end_user_postal_code,
    payer_aws_account_id,
    payer_encrypted_account_id,
    payer_address_id,
    add_payer.company_name payer_company_name,
    add_payer.email_domain payer_email_domain,
    add_payer.city payer_city,
    add_payer.state_or_region payer_state,
    add_payer.country_code payer_country,
    add_payer.postal_code payer_postal_code,
    agreement_id,
    agreement_revision,
    agreement_start_date,
    agreement_end_date,
    agreement_acceptance_date,
    agreement_updated_date,
    case when proposer_account_id = (select seller_account_id from seller_account) then null else acc_proposer.aws_account_id end as reseller_aws_account_id,
    case when proposer_account_id = (select seller_account_id from seller_account) then null else acc_proposer.mailing_company_name end as reseller_company_name,
    usage_period_start_date,
    usage_period_end_date,
    proposer_account_id,
    acc_proposer.aws_account_id as proposer_aws_account_id,
    acceptor_account_id,
    subscriber_aws_account_id,
    subscriber_encrypted_account_id,
    subscriber_address_id,
    add_subscriber.company_name subscriber_company_name,
    add_subscriber.email_domain subscriber_email_domain,
    add_subscriber.city subscriber_city,
    add_subscriber.state_or_region subscriber_state,
    add_subscriber.country_code subscriber_country,
    add_subscriber.postal_code subscriber_postal_code,
    offer_id,
    offer_target,
    offer_name,
    offer_opportunity_name,
    offer_opportunity_description,
    opportunity_id,
    payment_due_date,
    bank_trace_id,
    disbursement_date,
    billing_address_id,
    max(buyer_invoice_id)as buyer_invoice_id,
    max(seller_invoice_id)as seller_invoice_id,
    max(buyer_invoice_date)as buyer_invoice_date,
    max(seller_invoice_date)as seller_invoice_date,
    gross_revenue_this_disbursement_id_or_invoiced,
    gross_refund_this_disbursement_id_or_invoiced,
    cogs_this_disbursement_id_or_invoiced,
    cogs_refund_this_disbursement_id_or_invoiced,
    aws_rev_share_this_disbursement_id_or_invoiced,
    aws_refund_share_this_disbursement_id_or_invoiced,
    aws_tax_share_this_disbursement_id_or_invoiced,
    aws_tax_share_listing_fee_this_disbursement_id_or_invoiced,
    aws_tax_share_refund_this_disbursement_id_or_invoiced,
    aws_tax_share_refund_listing_fee_this_disbursement_id_or_invoiced,
    seller_tax_share_this_disbursement_id_or_invoiced,
    seller_tax_share_refund_this_disbursement_id_or_invoiced,
    balance_adjustment_this_disbursement_id_or_invoiced,
    seller_rev_credit_this_disbursement_id_or_invoiced,
    aws_ref_fee_credit_this_disbursement_id_or_invoiced,
    (gross_revenue_this_disbursement_id_or_invoiced + gross_refund_this_disbursement_id_or_invoiced + aws_rev_share_this_disbursement_id_or_invoiced + aws_refund_share_this_disbursement_id_or_invoiced + seller_tax_share_this_disbursement_id_or_invoiced + seller_tax_share_refund_this_disbursement_id_or_invoiced
      + cogs_this_disbursement_id_or_invoiced + cogs_refund_this_disbursement_id_or_invoiced + aws_tax_share_listing_fee_this_disbursement_id_or_invoiced + aws_tax_share_refund_listing_fee_this_disbursement_id_or_invoiced) as seller_net_revenue_this_disbursement_id_or_invoiced,
    gross_revenue_invoiced,
    gross_refund_invoiced,
    cogs_invoiced,
    cogs_refund_invoiced,
    aws_rev_share_invoiced,
    aws_refund_share_invoiced,
    aws_tax_share_invoiced,
    aws_tax_share_listing_fee_invoiced,
    aws_tax_share_refund_invoiced,
    aws_tax_share_refund_listing_fee_invoiced,
    seller_tax_share_invoiced,
    seller_tax_share_refund_invoiced,
    balance_adjustment_invoiced,
    seller_rev_credit_invoiced,
    aws_ref_fee_credit_invoiced,
    gross_revenue_disbursed,
    gross_refund_disbursed,
    cogs_disbursed,
    cogs_refund_disbursed,
    aws_rev_share_disbursed,
    aws_refund_share_disbursed,
    aws_tax_share_disbursed,
    aws_tax_share_listing_fee_disbursed,
    aws_tax_share_refund_disbursed,
    aws_tax_share_refund_listing_fee_disbursed,
    seller_tax_share_disbursed,
    seller_tax_share_refund_disbursed,
    balance_adjustment_disbursed,
    seller_rev_credit_disbursed,
    aws_ref_fee_credit_disbursed,
    (gross_revenue_invoiced + gross_revenue_disbursed) as uncollected_gross_revenue,
    -- net revenue = gross revenue - listing fee - tax - cogs
    (gross_revenue_invoiced + gross_refund_invoiced + aws_rev_share_invoiced + aws_refund_share_invoiced + seller_tax_share_invoiced + seller_tax_share_refund_invoiced + cogs_invoiced + cogs_refund_invoiced + aws_tax_share_listing_fee_invoiced + aws_tax_share_refund_listing_fee_invoiced) as seller_net_revenue,
    (gross_revenue_invoiced + gross_refund_invoiced + aws_rev_share_invoiced + aws_refund_share_invoiced + seller_tax_share_invoiced + seller_tax_share_refund_invoiced + cogs_invoiced + cogs_refund_invoiced + aws_tax_share_listing_fee_invoiced + aws_tax_share_refund_listing_fee_invoiced
      + gross_revenue_disbursed + gross_refund_disbursed + aws_rev_share_disbursed + aws_refund_share_disbursed + seller_tax_share_disbursed + seller_tax_share_refund_disbursed + cogs_disbursed + cogs_refund_disbursed + aws_tax_share_listing_fee_disbursed + aws_tax_share_refund_listing_fee_disbursed) as uncollected_seller_net_revenue,
    last_disbursement_date,
    last_disbursement_id,
    last_disburse_bank_trace_id,
    disbursement_date_list,
    disburse_bank_trace_id_list,
    product_code,
    manufacturer_aws_account_id,
    manufacturer_account_id,
    acc_manu.mailing_company_name as manufacturer_company_name,
    cast(null as varchar) as AR_Period,
    case
      when (
        (gross_revenue_invoiced <>0 and gross_revenue_invoiced = -1 * gross_revenue_disbursed)
        or (gross_refund_invoiced <> 0 and gross_refund_invoiced = -1 * gross_refund_disbursed)
        or (balance_adjustment_invoiced <> 0 and balance_adjustment_invoiced = -1 * balance_adjustment_disbursed)
        or (seller_tax_share_refund_invoiced <> 0 and seller_tax_share_refund_invoiced = -1 * seller_tax_share_refund_disbursed)
        or (gross_revenue_invoiced = 0 and gross_refund_invoiced = 0 and balance_adjustment_invoiced = 0 and seller_tax_share_refund_invoiced = 0 and last_disbursement_id is not null)) then 'Yes'
      when gross_revenue_disbursed = 0 and gross_refund_disbursed = 0 and balance_adjustment_disbursed = 0 and seller_tax_share_disbursed = 0 and seller_tax_share_refund_disbursed = 0 then 'No'
      else 'Partial'
    end as Disbursement_Flag
  from line_items_with_window_functions_enrich_offer_product_address as line
  left join accounts_with_history_with_company_name as acc_manu on
    line.manufacturer_account_id = acc_manu.account_id and line.buyer_invoice_date >= acc_manu.valid_from_adjusted and line.buyer_invoice_date <= acc_manu.valid_to
  left join accounts_with_history_with_company_name as acc_proposer on
    line.proposer_account_id = acc_proposer.account_id and line.buyer_invoice_date >= acc_proposer.valid_from and line.buyer_invoice_date<acc_proposer.valid_to
  left join address_with_latest_revision as add_payer on
    line.payer_address_id = add_payer.address_id
  left join address_with_latest_revision as add_subscriber on
    line.subscriber_address_id = add_subscriber.address_id
  left join address_with_latest_revision as add_enduser on
    line.end_user_address_id = add_enduser.address_id
  group by
    line.internal_buyer_line_item_id,
    disbursement_id,
    disbursement_id_or_invoiced,
    product_id,
    legacy_product_id,
    product_title,
    broker_id,
    currency,
    end_user_address_id,
    end_user_account_id,
    end_user_encrypted_account_id,
    end_user_aws_account_id,
    add_enduser.company_name,
    add_enduser.email_domain,
    add_enduser.city,
    add_enduser.state_or_region,
    add_enduser.country_code,
    add_enduser.postal_code,
    payer_aws_account_id,
    payer_encrypted_account_id,
    payer_address_id,
    add_payer.company_name,
    add_payer.email_domain,
    add_payer.city,
    add_payer.state_or_region,
    add_payer.country_code,
    add_payer.postal_code,
    agreement_id,
    agreement_revision,
    case when proposer_account_id = (select seller_account_id from seller_account) then null else acc_proposer.aws_account_id end,
    case when proposer_account_id = (select seller_account_id from seller_account) then null else acc_proposer.mailing_company_name end,
    agreement_start_date,
    agreement_end_date,
    agreement_acceptance_date,
    agreement_updated_date,
    usage_period_start_date,
    usage_period_end_date,
    acceptor_account_id,
    subscriber_aws_account_id,
    subscriber_encrypted_account_id,
    subscriber_address_id,
    add_subscriber.company_name,
    add_subscriber.email_domain,
    add_subscriber.city,
    add_subscriber.state_or_region,
    add_subscriber.country_code,
    add_subscriber.postal_code,
    offer_id,
    offer_target,
    offer_name,
    offer_opportunity_name,
    offer_opportunity_description,
    opportunity_id,
    payment_due_date,
    bank_trace_id,
    disbursement_date,
    billing_address_id,
    gross_revenue_this_disbursement_id_or_invoiced,
    gross_refund_this_disbursement_id_or_invoiced,
    cogs_this_disbursement_id_or_invoiced,
    cogs_refund_this_disbursement_id_or_invoiced,
    aws_rev_share_this_disbursement_id_or_invoiced,
    aws_refund_share_this_disbursement_id_or_invoiced,
    aws_tax_share_this_disbursement_id_or_invoiced,
    aws_tax_share_listing_fee_this_disbursement_id_or_invoiced,
    aws_tax_share_refund_this_disbursement_id_or_invoiced,
    aws_tax_share_refund_listing_fee_this_disbursement_id_or_invoiced,
    seller_tax_share_this_disbursement_id_or_invoiced,
    seller_tax_share_refund_this_disbursement_id_or_invoiced,
    balance_adjustment_this_disbursement_id_or_invoiced,
    seller_rev_credit_this_disbursement_id_or_invoiced,
    aws_ref_fee_credit_this_disbursement_id_or_invoiced,
    gross_revenue_invoiced,
    gross_refund_invoiced,
    cogs_invoiced,
    cogs_refund_invoiced,
    aws_rev_share_invoiced,
    aws_refund_share_invoiced,
    aws_tax_share_invoiced,
    aws_tax_share_listing_fee_invoiced,
    aws_tax_share_refund_invoiced,
    aws_tax_share_refund_listing_fee_invoiced,
    seller_tax_share_invoiced,
    seller_tax_share_refund_invoiced,
    balance_adjustment_invoiced,
    seller_rev_credit_invoiced,
    aws_ref_fee_credit_invoiced,
    gross_revenue_disbursed,
    gross_refund_disbursed,
    cogs_disbursed,
    cogs_refund_disbursed,
    aws_rev_share_disbursed,
    aws_refund_share_disbursed,
    aws_tax_share_disbursed,
    aws_tax_share_listing_fee_disbursed,
    aws_tax_share_refund_disbursed,
    aws_tax_share_refund_listing_fee_disbursed,
    seller_tax_share_disbursed,
    seller_tax_share_refund_disbursed,
    balance_adjustment_disbursed,
    seller_rev_credit_disbursed,
    aws_ref_fee_credit_disbursed,
    last_disbursement_date,
    last_disbursement_id,
    last_disburse_bank_trace_id,
    disbursement_date_list,
    disburse_bank_trace_id_list,
    product_code,
    manufacturer_aws_account_id,
    manufacturer_account_id,
    acc_manu.mailing_company_name,
    proposer_account_id,
    acc_proposer.aws_account_id
),

billed_revenue as (
  select
    ------------------
    -- Invoice Info --
    ------------------
    buyer_invoice_date as Invoice_Date,
    Payment_Due_Date as Payment_Due_Date,
    concat(
      'Net ',
      case
        when abs(date_diff('Day', Payment_due_date, buyer_invoice_date))>180 then '180+'
        else cast(abs(date_diff('Day', Payment_due_date, buyer_invoice_date)) as varchar)
        end,
      ' days'
    ) as payment_terms,
    buyer_invoice_id as Invoice_ID,
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when seller_invoice_id = '' then null else seller_invoice_id end,
      'Not applicable') as Listing_Fee_Invoice_ID,

    ---------------------------
    --End user Information --
    ---------------------------
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when End_User_Company_Name = '' then null else End_User_Company_Name end,
      'Not available') as End_User_Company_Name,
    End_User_AWS_Account_ID,
    End_User_Encrypted_Account_ID,
    End_User_Email_Domain,
    End_User_City,
    End_User_State as End_User_State_or_Region,
    End_User_Country,
    End_User_Postal_Code,
    End_User_Address_ID,

    ---------------------------
    --Subscriber Information --
    ---------------------------
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      when Subscriber_Company_Name is null or Subscriber_Company_Name = '' then 'Not provided'
      else Subscriber_Company_Name
      end as Subscriber_Company_Name,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      else Subscriber_AWS_Account_ID
      end as Subscriber_AWS_Account_ID,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      else Subscriber_Encrypted_Account_ID
      end as Subscriber_Encrypted_Account_ID,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      when Subscriber_Email_Domain is null or Subscriber_Email_Domain = '' then 'Not provided'
      else Subscriber_Email_Domain
      end as Subscriber_Email_Domain,
    case
      when Agreement_id is null or Agreement_ID = '' then 'Not available'
      when Subscriber_City is null or Subscriber_City = '' then 'Not provided'
      else Subscriber_City
      end as Subscriber_City,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      when Subscriber_State is null or Subscriber_State = '' then 'Not provided'
      else Subscriber_State
      end as Subscriber_State_or_Region,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      when Subscriber_Country is null or Subscriber_Country = '' then 'Not provided'
      else Subscriber_Country
      end as Subscriber_Country,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      when Subscriber_Postal_Code is null or Subscriber_Postal_Code = '' then 'Not provided'
      else Subscriber_Postal_Code
      end as Subscriber_Postal_Code,
    case
      when Agreement_ID is null or Agreement_ID = '' then 'Not available'
      when Subscriber_Address_ID is null or Subscriber_Address_ID = '' then 'Not provided'
      else Subscriber_Address_ID
      end as Subscriber_Address_ID,

    ----------------------
    -- Procurement Info --
    ----------------------
     -- product title at time of invoice. It is possible that the title changes over time and therefore there may be multiple product titles mapped to a single product id.
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when Product_Title = '' then null else Product_Title end,
      'Not provided') as Product_Title,
    -- offer name at time of invoice. It is possible that the name changes over time therefore there may be multiple offer names mapped to a single offer id.
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      when (Offer_Name is null or Offer_Name = '') and Offer_Target = 'Public' then 'Not applicable'
      else Offer_Name
      end as Offer_Name,
    case
      when Agreement_Id is null or Agreement_ID = ''
      then 'Not available'
      else Offer_ID
      end as Offer_ID,
    -- offer target at time of invoice.,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      else Offer_Target
      end as Offer_Visibility,
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when Agreement_ID = '' then null else Agreement_ID end,
      'Not available') as Agreement_ID,
    Agreement_Start_Date,
    Agreement_Acceptance_Date,
    Agreement_End_Date,
    Usage_Period_Start_Date,
    Usage_Period_End_Date,

    -----------------------
    -- Disbursement Info --
    -----------------------
    case
      when Disbursement_Flag = 'Yes' then 'Disbursed'
      when Disbursement_Flag = 'No' then 'Not Disbursed'
      else 'Other'
      end as Disbursement_Status,
    last_disbursement_date as disbursement_date,
    case
      when Disbursement_Flag = 'No' then 'Not applicable'
      when disburse_bank_trace_id_list is null or disburse_bank_trace_id_list = '' then 'Not available'
      else disburse_bank_trace_id_list
    end as disburse_bank_trace_id,

    --------------
    -- Revenues --
    --------------
    -- We are rounding the sums using 2 decimal precision
    -- Note that the rounding method might differ between SQL implementations.
    -- The monthly revenue report is using RoundingMode.HALF_UP. This might create tiny discrepancies between this SQL output
    -- and the legacy report
    round(gross_revenue_invoiced,2) as Gross_Revenue,
    round(gross_refund_invoiced,2) as Gross_Refund,
    round(aws_rev_share_invoiced,2) as Listing_Fee,
    round(aws_refund_share_invoiced,2) as Listing_Fee_Refund,
    truncate(
      case
        when gross_revenue_invoiced != 0 then abs(aws_rev_share_invoiced/gross_revenue_invoiced)
        when gross_refund_invoiced != 0 then abs(aws_refund_share_invoiced/gross_refund_invoiced)
        else 0
      end
      ,4) as Listing_Fee_Percentage,
    round(seller_tax_share_invoiced,2) as Seller_Tax_Share,
    round(seller_tax_share_refund_invoiced,2) as Seller_Tax_Share_Refund,
    round(aws_tax_share_invoiced,2) as AWS_Tax_Share,
    round(aws_tax_share_refund_invoiced,2) as AWS_Tax_Share_Refund,
    round(aws_tax_share_listing_fee_invoiced,2) as AWS_Tax_Share_Listing_Fee,
    round(aws_tax_share_refund_listing_fee_invoiced,2) as AWS_Tax_Share_Refund_Listing_Fee,
    round(cogs_invoiced,2) as Wholesale_cost,
    round(cogs_refund_invoiced,2) as Wholesale_cost_Refund,
    round(seller_net_revenue,2) as Seller_Net_Revenue,
    currency as Currency,

    substring(internal_buyer_line_item_id,1,strpos(internal_buyer_line_item_id,'-')-1) as Transaction_Reference_ID,
    broker_id as AWS_seller_of_record,

    -----------------
    -- Resale info --
    -----------------
    case
      when Opportunity_Id is null or Opportunity_Id = '' then
        case
          when Offer_Target = 'Public' then 'Not applicable'
          when (Offer_Target is null or Offer_Target = '') and (Agreement_Id is not null and Agreement_Id != '') then 'Not applicable'
          else null
        end
      else Opportunity_Id
    end as Resale_authorization_ID,
    case
      when Offer_Opportunity_Name is null or Offer_Opportunity_Name = '' then
        case
          when Offer_Target = 'Public' then 'Not applicable'
          when (Offer_Target is null or Offer_Target = '') and (Agreement_Id is not null and Agreement_Id != '') then 'Not applicable'
          else null
        end
      else Offer_Opportunity_Name
    end as Resale_authorization_name,
    case
      when Offer_Opportunity_Description is null or Offer_Opportunity_Description = '' then
        case
         when Offer_Target = 'Public' then 'Not applicable'
         when (Offer_Target is null or Offer_Target = '') and (Agreement_Id is not null and Agreement_Id != '') then 'Not applicable'
         else null
        end
      else Offer_Opportunity_Name
    end as Resale_authorization_description,
    case
      when (Reseller_AWS_Account_ID is not null and Reseller_AWS_Account_ID != '')
        and (Reseller_Company_Name is null or Reseller_Company_Name = '') then 'Not available'
      when (Reseller_AWS_Account_ID is null or Reseller_AWS_Account_ID = '')
        and (opportunity_id is null or opportunity_id = '') then 'Not applicable'
      when (select seller_account_id from seller_account) <> manufacturer_aws_account_id
        and (Reseller_AWS_Account_ID is null or Reseller_AWS_Account_ID = '') then 'Not applicable'
      else Reseller_Company_Name
    end as Reseller_Company_Name,
    case
      when (Reseller_AWS_Account_ID is null or Reseller_AWS_Account_ID = '')
        and (Opportunity_Id is null or Opportunity_Id = '') then 'Not applicable'
      when (select seller_account_id from seller_account) <> manufacturer_aws_account_id
        and (Reseller_AWS_Account_ID is null or Reseller_AWS_Account_ID = '') then 'Not applicable'
      else Reseller_AWS_Account_ID
    end as Reseller_AWS_Account_ID,

    -----------------------
    -- Payer Information --
    -----------------------
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when Payer_Company_Name = '' then null else Payer_Company_Name end,
      'Not available') as Payer_Company_Name,
    Payer_AWS_Account_ID,
    Payer_Encrypted_Account_ID,
    Payer_Email_Domain,
    Payer_City,
    Payer_State as Payer_State_or_Region,
    Payer_Country,
    Payer_Postal_Code,
    Payer_Address_ID,

    ---------------------
    -- ISV Information --
    ---------------------
    manufacturer_aws_account_id as ISV_Account_ID,
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when Manufacturer_Company_Name = '' then null else Manufacturer_Company_Name end,
      'Not available') as ISV_Company_Name,

    ---------------------
    -- Products info --
    ---------------------
    Legacy_Product_ID,
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when Product_ID = '' then null else Product_ID end,
      'Not provided') as Product_ID,
    Product_Code
  from
    line_items_with_window_functions_enrich_offer_product_address_name as line
  where disbursement_id_or_invoiced = '<invoiced>'

)

select *
from billed_revenue
where invoice_date >= date_add('DAY', -90, current_date)
--where invoice_date between cast('2023-01-01' as timestamp) and cast('2024-03-01' as timestamp)
```

## Faturas não cobradas ou desembolsadas
<a name="data-feed-example-collections"></a>

Para encontrar seus dados de contrato e renovação, execute um conjunto de consultas como a mostrada no exemplo a seguir. As consultas se baseiam umas nas outras para criar o relatório de **cobranças e desembolsos**. Você pode usar o exemplo conforme mostrado ou personalizá-lo para seus dados e casos de uso.

Os comentários nas consultas explicam o que as consultas fazem e como modificá-las.

```
-- Collections and disbursements report

-- General note: When running this query, we assume that the data ingested in the database uses
-- two time axes (the valid_from column and the update_date column).
-- See documentation for more details: https://docs.aws.amazon.com/marketplace/latest/userguide/data-feed.html#data-feed-details

-- An account_id has several valid_from dates (each representing a separate revision of the data)
-- but because of bi-temporality, an account_id + valid_from tuple can appear multiple times with a different update_date.
-- We are only interested in the most recent tuple (ie, uni-temporal model)
with accounts_with_uni_temporal_data as (
  select
    account_id,
    aws_account_id,
    encrypted_account_id,
    mailing_address_id,
    tax_address_id,
    tax_legal_name,
    from_iso8601_timestamp(valid_from) as valid_from,
    tax_registration_number
  from
    (
      select
        account_id,
        aws_account_id,
        encrypted_account_id,
        mailing_address_id,
        tax_address_id,
        tax_legal_name,
        valid_from,
        delete_date,
        tax_registration_number,
        row_number() over (partition by account_id, valid_from order by from_iso8601_timestamp(update_date) desc) as row_num
      from
        accountfeed_v1
    )
    where
      -- keep latest ...
      row_num = 1
      -- ... and remove the soft-deleted one.
      and (delete_date is null or delete_date = '')
  ),

accounts_with_history as (
  with accounts_with_history_with_extended_valid_from as (
    select
      account_id,
      -- sometimes, this columns gets imported as a "bigint" and loses heading 0s -> casting to a char and re-adding heading 0s (if need be)
      substring('000000000000'||cast(aws_account_id as varchar),-12) as aws_account_id,
      encrypted_account_id,
      mailing_address_id,
      tax_address_id,
      tax_legal_name,
      -- The start time of account valid_from is extended to '1970-01-01 00:00:00', because:
      -- ... in tax report transformations, some tax line items with invoice_date cannot
      -- ... fall into the default valid time range of the associated account
      case
        when lag(valid_from) over (partition by account_id order by valid_from asc) is null
          then cast('1970-01-01 00:00:00' as timestamp)
        else valid_from
      end as valid_from
    from accounts_with_uni_temporal_data
    )
  select
    account_id,
    aws_account_id,
    encrypted_account_id,
    mailing_address_id,
    tax_address_id,
    tax_legal_name,
    valid_from,
    coalesce(
      lead(valid_from) over (partition by account_id order by valid_from asc),
      cast('2999-01-01 00:00:00' as timestamp)
    ) as valid_to
  from
    accounts_with_history_with_extended_valid_from
),

-- An address_id has several valid_from dates (each representing a separate revision of the data)
-- but because of bi-temporality, an account_id + valid_from tuple can appear multiple times with a different update_date.
-- We are only interested in the most recent tuple (ie, uni-temporal model)
address_with_uni_temporal_data as (
  select
    from_iso8601_timestamp(valid_from) as valid_from,
    address_id,
    company_name,
    email_domain,
    country_code,
    state_or_region,
    city,
    postal_code,
    row_num
  from
  (
    select
      valid_from,
      update_date,
      delete_date,
      address_id,
      company_name,
      email_domain,
      country_code,
      state_or_region,
      city,
      postal_code,
      row_number() over (partition by address_id, valid_from order by from_iso8601_timestamp(update_date) desc) as row_num
    from
      addressfeed_v1
  )
  where
    -- keep latest ...
    row_num = 1
    -- ... and remove the soft-deleted one.
    and (delete_date is null or delete_date = '')
),

-- We are only interested in the most recent tuple (BTW: a given address is not supposed to change over time but when bugs ;-) so this query mainly does nothing)
address_with_latest_revision as (
  select
    valid_from,
    address_id,
    company_name,
    email_domain,
    country_code,
    state_or_region,
    city,
    postal_code,
    row_num_latest_revision
  from
  (
    select
      valid_from,
      address_id,
      company_name,
      email_domain,
      country_code,
      state_or_region,
      city,
      postal_code,
      row_number() over (partition by address_id order by valid_from desc) as row_num_latest_revision
    from
      address_with_uni_temporal_data
  )
  where
    row_num_latest_revision = 1
),

accounts_with_history_with_company_name as (
  select
    awh.account_id,
    awh.aws_account_id,
    awh.encrypted_account_id,
    awh.mailing_address_id,
    awh.tax_address_id,
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when address.company_name = '' then null else address.company_name end,
      awh.tax_legal_name) as mailing_company_name,
    address.email_domain,
    awh.valid_from,
    -- For BYOL, the agreement might be accepted (using some external non-AWS system or manual process) days before
    -- that BYOL agreement is entered into AWS Marketplace by the buyer. Therefore, the buyer is permitted to manually
    -- enter a backdated acceptance date, which might predate the point in time when the account was created.
    -- To work around this, we need to adjust the valid_from of the account to be
    -- earlier than the earliest possible backdated BYOL agreement acceptance date.
    case
      when lag(awh.valid_from) over (partition by aws_account_id order by awh.valid_from asc) is null
      then date_add('Day', -212, awh.valid_from)
      -- 212 is the longest delay between acceptance_date of the agreement and the account start_Date
      else awh.valid_from
    end as valid_from_adjusted,
    awh.valid_to
  from accounts_with_history as awh
  left join address_with_latest_revision as address on
    awh.mailing_address_id = address.address_id and awh.mailing_address_id is not null
),

-- An agreement_id has several valid_from dates (each representing an agreement revision)
-- but because of bi-temporality, an agreement_id + valid_from tuple can appear multiple times with a different update_date.
-- We are only interested in the most recent tuple (ie, uni-temporal model)
agreements_with_uni_temporal_data as (
  select
    agreement_id,
    origin_offer_id,
    proposer_account_id,
    acceptor_account_id,
    agreement_revision,
    from_iso8601_timestamp(valid_from) as valid_from,
    from_iso8601_timestamp(start_date) as start_date,
    from_iso8601_timestamp(end_date) as end_date,
    from_iso8601_timestamp(acceptance_date) as acceptance_date,
    agreement_type,
    previous_agreement_id,
    agreement_intent
  from
  (
    select
      --empty value in Athena shows as '', change all '' value to null
      case when agreement_id = '' then null else agreement_id end as agreement_id,
      origin_offer_id,
      proposer_account_id,
      acceptor_account_id,
      agreement_revision,
      valid_from,
      delete_date,
      start_date,
      end_date,
      acceptance_date,
      agreement_type,
      previous_agreement_id,
      agreement_intent,
      row_number() over (partition by agreement_id, valid_from order by from_iso8601_timestamp(update_date) desc) as row_num
    from
      -- TODO change to agreementfeed_v1 when Agreement Feed is GA'ed
      agreementfeed
  )
  where
    -- keep latest ...
    row_num = 1
    -- ... and remove the soft-deleted one.
    and (delete_date is null or delete_date = '')
),

agreements_with_history as (
  with agreements_with_window_functions as (
    select
      agreement_id,
      origin_offer_id as offer_id,
      proposer_account_id,
      acceptor_account_id,
      agreement_revision,
      start_date,
      end_date,
      acceptance_date,
      -- The start time of agreement valid_from is extended to '1970-01-01 00:00:00', because:
      -- ... in usage report transformations, some usage line items with usage_date cannot
      -- ... fall into the default valid time range of the associated agreement
      case
          when lag(valid_from) over (PARTITION BY agreement_id order by valid_from asc) is null
          then timestamp '1970-01-01 00:00:00'
          else valid_from
      end as valid_from,
      coalesce(
          lead(valid_from) over (partition by agreement_id order by valid_from asc),
          timestamp '2999-01-01 00:00:00'
      ) as valid_to,
      rank() over (partition by agreement_id order by valid_from asc) version,
      agreement_type,
      previous_agreement_id,
      agreement_intent
    from
      agreements_with_uni_temporal_data
  )
  select
    agreement_id,
    offer_id,
    proposer_account_id,
    acceptor_account_id,
    agreement_revision,
    start_date,
    end_date,
    acceptance_date,
    valid_from,
    case
        when version=1 and valid_from < timestamp '2023-03-03 06:16:08.743' then timestamp '1970-01-01'
        -- The following 60 minute adjustment is to handle special case where When Renewal happens for a contract
        when version=1 then date_add('minute',-60,valid_from)
        else valid_from
    end as valid_from_adjusted,
    valid_to,
    agreement_type,
    previous_agreement_id,
    agreement_intent
  from
    agreements_with_window_functions
),

-- An offer_id has several valid_from dates (each representing an offer revision)
-- but because of bi-temporality, an offer_id + valid_from tuple can appear multiple times with a different update_date.
-- We are only interested in the most recent tuple (ie, uni-temporal model)
offers_with_uni_temporal_data as (
  select
    from_iso8601_timestamp(valid_from) as valid_from,
    from_iso8601_timestamp(update_date) as update_date,
    from_iso8601_timestamp(delete_date) as delete_date,
    offer_id,
    offer_revision,
    name,
    expiration_date,
    opportunity_id,
    opportunity_name,
    opportunity_description,
    seller_account_id
  from
  (
    select
      valid_from,
      update_date,
      delete_date,
      offer_id,
      offer_revision,
      name,
      expiration_date,
      opportunity_id,
      opportunity_name,
      opportunity_description,
      seller_account_id,
      row_number() over (partition by offer_id, valid_from order by from_iso8601_timestamp(update_date) desc) as row_num
    from
      offerfeed_v1
  )
  where
    -- keep latest ...
    row_num = 1
    -- ... and remove the soft-deleted one.
    and (delete_date is null or delete_date = '')
),

-- Here, we build the validity time range (adding valid_to on top of valid_from) of each offer revision.
-- We will use it to get Offer name at invoice time.
-- NB: If you'd rather get "current" offer name, un-comment "offers_with_latest_revision"
offers_with_history as (
  select
    offer_id,
    offer_revision,
    name,
    opportunity_id,
    opportunity_name,
    opportunity_description,
    valid_from,
    -- When we try to look up an offer revision as at the acceptance date of a BYOL agreement, we run into a problem.
    -- For BYOL, the agreement might be accepted (using some external non-AWS system or manual process) days before
    -- that BYOL agreement is entered into AWS Marketplace by the buyer. Therefore, the buyer is permitted to manually
    -- enter a backdated acceptance date, which might predate the point in time when the first revision of the offer
    -- was created. To work around this, we need to adjust the valid_from on the first revision of the offer to be
    -- earlier than the earliest possible backdated BYOL agreement acceptance date.
    case
      when lag(valid_from) over (partition by offer_id order by valid_from asc) is null and valid_from < cast('2021-04-01' as timestamp)
      then date_add('Day', -3857, valid_from)
      -- 3857 is the longest delay between acceptance_date of an agreement and the first revision of the offer
      when lag(valid_from) over (partition by offer_id order by valid_from asc) is null and valid_from >= cast('2021-04-01' as timestamp)
      then date_add('Day', -1460, valid_from)
      --after 2021 for the two offers we need to adjust for 2 more years
      else valid_from
    end as valid_from_adjusted,
    coalesce(
      lead(valid_from) over (partition by offer_id order by valid_from asc),
      cast('2999-01-01 00:00:00' as timestamp))
    as valid_to
  from offers_with_uni_temporal_data
),
-- provided for reference only if you are interested into get "current" offer name
-- (ie. not used afterwards)
offers_with_latest_revision as (
  select
    offer_id,
    offer_revision,
    name,
    opportunity_name,
    opportunity_description,
    valid_from,
    null valid_to
  from
  (
    select
      offer_id,
      offer_revision,
      name,
      opportunity_name,
      opportunity_description,
      valid_from,
      null valid_to,
      row_number() over (partition by offer_id order by valid_from desc) as row_num_latest_revision
    from
      offers_with_uni_temporal_data
  )
  where
    row_num_latest_revision = 1
),

-- An offer_target_id has several valid_from dates (each representing an offer revision)
-- but because of bi-temporality, an offer_target_id + valid_from tuple can appear multiple times with a different update_date.
-- We are only interested in the most recent tuple (ie, uni-temporal model)
offer_targets_with_uni_temporal_data as (
  select
    from_iso8601_timestamp(valid_from) as valid_from,
    from_iso8601_timestamp(update_date) as update_date,
    from_iso8601_timestamp(delete_date) as delete_date,
    offer_target_id,
    offer_id,
    offer_revision,
    target_type,
    polarity,
    value
  from
  (
    select
      valid_from,
      update_date,
      delete_date,
      offer_target_id,
      offer_id,
      offer_revision,
      target_type,
      polarity,
      value,
      row_number() over (partition by offer_target_id, valid_from order by from_iso8601_timestamp(update_date) desc) as row_num
    from
      offertargetfeed_v1
  )
  where
    -- keep latest ...
    row_num = 1
    -- ... and remove the soft-deleted one.
    and (delete_date is null or delete_date = '')
),

offer_target_type as (
  select
    offer_id,
    offer_revision,
    substring(
      -- The first character indicates the priority (lower value means higher precedence):
      min(
        case
          when offer_target.target_type='BuyerAccounts' then '1Private'
          when offer_target.target_type='ParticipatingPrograms' then '2Program:'||cast(offer_target.value as varchar)
          when offer_target.target_type='CountryCodes' then '3GeoTargeted'
          -- well, there is no other case today, but rather be safe...
          else '4Other Targeting'
        end
      ),
      -- Remove the first character that was only used for th priority in the "min" aggregate function:
      2
    ) as offer_target
  from
    offer_targets_with_uni_temporal_data as offer_target
  group by
    offer_id,
    offer_revision
),

offers_with_history_with_target_type as (
  select
    offer.offer_id,
    offer.offer_revision,
    -- even though today it is not possible to combine several types of targeting in a single offer, let's ensure the query is still predictable if this gets possible in the future
    max(
      case
        when off_tgt.offer_target is null then 'Public'
        else off_tgt.offer_target
      end
    ) as offer_target,
    min(offer.name) as name,
    min(offer.opportunity_name) as opportunity_name,
    min(offer.opportunity_description) as opportunity_description,
    offer.valid_from,
    offer.valid_from_adjusted,
    offer.valid_to,
    offer.opportunity_id
  from
    offers_with_history as offer
  left join offer_target_type as off_tgt on
    offer.offer_id = off_tgt.offer_id
    and offer.offer_revision = off_tgt.offer_revision
  group by
    offer.offer_id,
    offer.offer_revision,
    offer.valid_from,
    offer.valid_from_adjusted,
    offer.valid_to,
    offer.opportunity_id
),

-- provided for reference only if you are interested into get "current" offer targets
-- (ie. not used afterwards)
offers_with_latest_revision_with_target_type as (
  select
    offer.offer_id,
    offer.offer_revision,
    -- even though today it is not possible to combine several types of targeting in a single offer, let's ensure the query is still predictable if this gets possible in the future
    max(
      distinct
      case
        when off_tgt.target_type is null then 'Public'
        when off_tgt.target_type='BuyerAccounts' then 'Private'
        when off_tgt.target_type='ParticipatingPrograms' then 'Program:'||cast(off_tgt.value as varchar)
        when off_tgt.target_type='CountryCodes' then 'GeoTargeted'
        -- well, there is no other case today, but rather be safe...
        else 'Other Targeting'
      end
    ) as offer_target,
    min(offer.name) as name,
    min(offer.opportunity_name) as opportunity_name,
    min(offer.opportunity_description) as opportunity_description,
    offer.valid_from,
    offer.valid_to
  from
    offers_with_latest_revision offer
    -- left joining because public offers don't have targets
    left join offer_targets_with_uni_temporal_data off_tgt on
      offer.offer_id=off_tgt.offer_id and offer.offer_revision=off_tgt.offer_revision
  group by
    offer.offer_id,
    offer.offer_revision,
    -- redundant with offer_revision, as each revision has a dedicated valid_from (but cleaner in the group by)
    offer.valid_from,
    offer.valid_to
),

-- A product_id has several valid_from dates (each representing a product revision),
-- but because of bi-temporality, each product_id + valid_from tuple can appear multiple times with a different update_date.
-- We are only interested in the most recent tuple (ie, uni-temporal model)
products_with_uni_temporal_data as (
  select
    from_iso8601_timestamp(valid_from) as valid_from,
    from_iso8601_timestamp(update_date) as update_date,
    from_iso8601_timestamp(delete_date) as delete_date,
    product_id,
    manufacturer_account_id,
    product_code,
    title
  from
  (
    select
      valid_from,
      update_date,
      delete_date,
      product_id,
      manufacturer_account_id,
      product_code,
      title,
      row_number() over (partition by product_id, valid_from order by from_iso8601_timestamp(update_date) desc) as row_num
    from
      productfeed_v1
  )
  where
    -- keep latest ...
    row_num = 1
    -- ... and remove the soft-deleted one.
    and (delete_date is null or delete_date = '')
),

products_with_history as (
  select
    product_id,
    title,
    valid_from,
    -- Offerv2 can have upto 50 years and Offerv3 is upto 5 years of past date
    case
      when lag(valid_from) over (partition by product_id order by valid_from asc) is null and valid_from < cast('2021-04-01' as timestamp)
        then date_add('Day', -3857, valid_from)
      -- 3827 is the longest delay between acceptance_date of an agreement and the product
      -- we are keeping 3857 as a consistency between the offers and products
      when lag(valid_from) over (partition by product_id order by valid_from asc) is null and valid_from >= cast('2021-04-01' as timestamp)
        then date_add('Day', -2190, valid_from)
      --after 2021 for the two offers we need to adjust for 2 more years
      else valid_from 
    end as valid_from_adjusted,
    coalesce(
      lead(valid_from) over (partition by product_id order by valid_from asc),
      cast('2999-01-01 00:00:00' as timestamp)
    ) as valid_to,
    product_code,
    manufacturer_account_id
  from
    products_with_uni_temporal_data
),

legacy_products as (
  select
    legacy_id,
    new_id
  from
    legacyidmappingfeed_v1
  where
    mapping_type='PRODUCT'
  group by
    legacy_id,
    new_id
),

-- A given billing_event_id represents an accounting event and thus has only one valid_from date,
-- but because of bi-temporality, a billing_event_id (+ its valid_from) can appear multiple times with a different update_date.
-- We are only interested in the most recent tuple (ie, uni-temporal model)
billing_events_with_uni_temporal_data as (
  select
    billing_event_id,
    valid_from,
    update_date,
    delete_date,
    invoice_date,
    transaction_type,
    transaction_reference_id,
    parent_billing_event_id,
    bank_trace_id,
    broker_id,
    product_id,
    disbursement_billing_event_id,
    action,
    from_account_id,
    to_account_id,
    end_user_account_id,
    billing_address_id,
    amount,
    currency,
    balance_impacting,
    --empty value in Athena shows as '', change all '' value to null
    case when agreement_id = '' then null else agreement_id end as agreement_id,
    invoice_id,
    payment_due_date,
    usage_period_start_date,
    usage_period_end_date,
    buyer_transaction_reference_id,
    row_num
  from
  (
    select
      billing_event_id,
      from_iso8601_timestamp(valid_from) as valid_from,
      from_iso8601_timestamp(update_date) as update_date,
      delete_date,
      from_iso8601_timestamp(invoice_date) as invoice_date,
      transaction_type,
      transaction_reference_id,
      parent_billing_event_id,
      -- casting in case data was imported as number
      cast(bank_trace_id as varchar) as bank_trace_id,
      broker_id,
      product_id,
      disbursement_billing_event_id,
      action,
      from_account_id,
      to_account_id,
      end_user_account_id,
      billing_address_id,
      -- casting in case data was imported as varchar
      cast(amount as decimal(38,6)) as amount,
      currency,
      balance_impacting,
      agreement_id,
      invoice_id,
      case when payment_due_date is null or payment_due_date = '' then null else from_iso8601_timestamp(payment_due_date) end as payment_due_date,
      from_iso8601_timestamp(usage_period_start_date) as usage_period_start_date,
      from_iso8601_timestamp(usage_period_end_date) as usage_period_end_date,
      buyer_transaction_reference_id,
      row_number() over (partition by billing_event_id, valid_from order by from_iso8601_timestamp(update_date) desc) as row_num
    from
      billingeventfeed_v1
  )
  where
    -- keep latest ...
    row_num = 1
    -- ... and remove the soft-deleted one.
    and (delete_date is null or delete_date = '')
),

-- Here we select the account_id of the current seller (We identify this by looking for the to_account_id related to revenue transactions).
-- We will use it later to distinguish own agreements from agreements generated by channel partners.
seller_account as (
  select
    from_account_id as seller_account_id
  from
    billing_events_with_uni_temporal_data bill
  where
    -- Assumption here is only seller will pay listing fee. As of 12/21/2021, there are cases that Channel partner have 0 listing fee for CPPO, so the amount could be 0.
    bill.transaction_type like 'AWS_REV_SHARE' and amount <= 0 and action = 'INVOICED'
  group by
    -- from_account_id is always the same for all those "listing fee" transactions == the seller of record himself.
    -- If this view returns more than 1 record, the overall query will fail (on purpose). Please contact AWS Marketplace if this happens.
    from_account_id
),

billing_event_with_business_flags as (
  select
    bl.billing_event_id,
    bl.end_user_account_id,
    bl.agreement_id,
    aggrement.proposer_account_id,
    aggrement.offer_id,
    aggrement.acceptor_account_id,
    case
      -- For AWS and BALANCE_ADJUSTMENT, the billing event feed will show the "AWS Marketplace" account as the
      -- receiver of the funds and the seller as the payer. We are not interested in this information here.
      -- Null values will be ignored by the `max` aggregation function.
      when bl.transaction_type like 'AWS%' then null
      -- For BALANCE_ADJUSTMENT, payer is seller themselves
      when bl.invoice_id is null then bl.to_account_id
      -- We get the payer of the invoice from *any* transaction type that is not AWS and not BALANCE_ADJUSTMENT (because they are the same for a given end user + agreement + product).
      else bl.from_account_id
    end as payer_account_id,
    bl.product_id,
    bl.action,
    bl.transaction_type,
    bl.parent_billing_event_id,
    bl.disbursement_billing_event_id,
    bl.amount,
    bl.currency,
    bl.balance_impacting,
    bl.invoice_date,
    bl.payment_due_date,
    bl.usage_period_start_date,
    bl.usage_period_end_date,
    bl.invoice_id,
    bl.billing_address_id,
    bl.transaction_reference_id,
    bl.buyer_transaction_reference_id,
    case when disbursement.bank_trace_id = 'EMEA_MP_TEST_TRACE_ID' then null else disbursement.bank_trace_id end as bank_trace_id,
    case when disbursement.bank_trace_id = 'EMEA_MP_TEST_TRACE_ID' then null else disbursement.invoice_date end as disbursement_date,
    disbursement.billing_event_id as disbursement_id,
    -- We will use disbursement_id_or_invoiced as part of the PK, so it cannot be null:
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when disbursement.billing_event_id = '' then null else disbursement.billing_event_id end,
      '<invoiced>') as disbursement_id_or_invoiced,
    bl.broker_id,
    case
      when bl.invoice_id is null /* transaction_type = 'BALANCE_ADJUSTMENT' */
        then (select seller_account_id from seller_account) ||':'|| cast(bl.invoice_date as varchar)
      else bl.buyer_transaction_reference_id
        ||'-'|| case when bl.agreement_id is null or bl.agreement_id = '' then ' ' else bl.agreement_id end
        ||'-'|| case when bl.end_user_account_id is null or bl.end_user_account_id = '' then ' ' else bl.end_user_account_id end
        ||'-'|| coalesce(cast(bl.usage_period_start_date as varchar),' ')
        ||'-'|| coalesce(cast(bl.usage_period_end_date as varchar),' ')
    end as internal_buyer_line_item_id,
    bl.buyer_transaction_reference_id <> bl.transaction_reference_id as is_seller_invoice,
    case when bl.transaction_type = 'SELLER_REV_SHARE' and (select seller_account_id from seller_account) <> bl.to_account_id then true else false end as is_cog,
    case when bl.transaction_type in('SELLER_REV_SHARE_CREDIT', 'SELLER_REV_SHARE_REFUND') and (select seller_account_id from seller_account) <> bl.to_account_id then true else false end as is_cog_refund,
    --TODO: replace below logic once we can create a logic the identify reseller/manufacturer without depending on agreement feed
    case when aggrement.proposer_account_id <> (select seller_account_id from seller_account) then true else false end as is_manufacturer_view_of_reseller
  from
    billing_events_with_uni_temporal_data as bl
    left join billing_events_with_uni_temporal_data as disbursement on
      disbursement.transaction_type like 'DISBURSEMENT%'
        and disbursement.action = 'DISBURSED'
        and disbursement.transaction_type IN ('DISBURSEMENT', 'DISBURSEMENT_FAILURE')
        and bl.disbursement_billing_event_id = disbursement.billing_event_id
    left join agreements_with_history as aggrement on
      bl.agreement_id = aggrement.agreement_id
        and bl.invoice_date >= aggrement.valid_from_adjusted
        and bl.invoice_date < aggrement.valid_to
    left join accounts_with_history awh on
      bl.to_account_id = awh.account_id
        and bl.invoice_date >= awh.valid_from
        and bl.invoice_date < awh.valid_to
  where
    bl.transaction_type not like 'DISBURSEMENT%' and
      (bl.agreement_id is null or bl.agreement_id = ''
      or aggrement.agreement_id is not null)
),

-- listagg function in athena does not support partitioning, grouping here and then joining to the main query
seller_invoice_list as (
  select
    internal_buyer_line_item_id,
    listagg(case when not is_seller_invoice then null else invoice_id end,',') within group (order by case when not is_seller_invoice then null else cast(invoice_date as varchar) end) as seller_invoice_id_or_null,
    listagg(case when not is_seller_invoice then null else cast(invoice_date as varchar) end,',') within group (order by case when not is_seller_invoice then null else cast(invoice_date as varchar) end) as seller_invoice_date_or_null
  from
    (
    -- listagg function in athena does not support ordering by another field when distinct is used,
    -- here we first select distinct invoices and then do the listagg order by invoice_date
    select distinct internal_buyer_line_item_id, is_seller_invoice, invoice_id, invoice_date
    from billing_event_with_business_flags) distinct_invoices
  group by internal_buyer_line_item_id
  order by internal_buyer_line_item_id
),

billing_event_with_categorized_transaction as (
-- Use the flags that were created in the previous transformation in more calculated columns:
-- NOTE: This transformation has no joins and no window functions
  select
    billing_event_id,
    end_user_account_id,
    agreement_id,
    proposer_account_id,
    offer_id,
    acceptor_account_id,
    case when is_cog or is_cog_refund then null else payer_account_id end as payer_account_id,
    product_id,
    action,
    transaction_type,
    parent_billing_event_id,
    disbursement_billing_event_id,
    amount,
    currency,
    balance_impacting,
    invoice_date,
    payment_due_date,
    usage_period_start_date,
    usage_period_end_date,
    invoice_id,
    billing_address_id,
    transaction_reference_id,
    buyer_transaction_reference_id,
    bank_trace_id,
    disbursement_date,
    disbursement_id,
    disbursement_id_or_invoiced,
    broker_id,
    bl.internal_buyer_line_item_id,
    is_seller_invoice,
    is_cog,
    is_cog_refund,
    is_manufacturer_view_of_reseller,

    -- Buyer/seller columns:
    case when is_seller_invoice then null else invoice_id end as buyer_invoice_id_or_null,
    seller_invoices.seller_invoice_id_or_null,
    case when is_seller_invoice then null else invoice_date end as buyer_invoice_date_or_null,
    seller_invoices.seller_invoice_date_or_null,

    -- Categorized amounts by transaction type:
    case when transaction_type =   'SELLER_REV_SHARE' and not is_cog then amount else 0 end as gross_revenue,
    case when transaction_type in ('SELLER_REV_SHARE_REFUND','SELLER_REV_SHARE_CREDIT') and not is_cog_refund then amount else 0 end as gross_refund,
    case when transaction_type =   'SELLER_REV_SHARE' and     is_cog then amount else 0 end as cogs,
    case when transaction_type in ('SELLER_REV_SHARE_REFUND','SELLER_REV_SHARE_CREDIT') and     is_cog_refund then amount else 0 end as cogs_refund,
    case when transaction_type =   'AWS_REV_SHARE' then amount else 0 end as aws_rev_share,
    case when transaction_type in ('AWS_REV_SHARE_REFUND','AWS_REV_SHARE_CREDIT') then amount else 0 end as aws_refund_share,
    case when transaction_type =   'AWS_TAX_SHARE' and not is_seller_invoice then amount else 0 end as aws_tax_share,             -- AWS tax share from _buyer_  invoice
    case when transaction_type =   'AWS_TAX_SHARE' and     is_seller_invoice then amount else 0 end as aws_tax_share_listing_fee, -- AWS tax share from _seller_ invoice
    case when transaction_type =   'AWS_TAX_SHARE_REFUND' and not is_seller_invoice then amount else 0 end as aws_tax_share_refund,
    case when transaction_type =   'AWS_TAX_SHARE_REFUND' and     is_seller_invoice then amount else 0 end as aws_tax_share_refund_listing_fee,
    case when transaction_type =   'SELLER_TAX_SHARE' then amount else 0 end as seller_tax_share,
    case when transaction_type =   'SELLER_TAX_SHARE_REFUND' then amount else 0 end as seller_tax_share_refund,
    case when transaction_type =   'BALANCE_ADJUSTMENT' then amount else 0 end as balance_adjustment,
    case when transaction_type =   'SELLER_REV_SHARE_CREDIT' then amount else 0 end as seller_rev_credit,
    case when transaction_type =   'AWS_REV_SHARE_CREDIT' then amount else 0 end as aws_ref_fee_credit
  from
    billing_event_with_business_flags as bl
    left join seller_invoice_list as seller_invoices
      on bl.internal_buyer_line_item_id = seller_invoices.internal_buyer_line_item_id
    ),

line_items_aggregated as (
-- This transformation has the only "group by" in all of these transformations.
-- NOTE: This transformation has no joins and no window functions
  select
    internal_buyer_line_item_id,
    disbursement_id,
    disbursement_id_or_invoiced,
    product_id,
    broker_id,
    currency,
    agreement_id,
    proposer_account_id,
    acceptor_account_id,
    max(payer_account_id) as payer_account_id,
    offer_id,
    end_user_account_id,
    usage_period_start_date,
    usage_period_end_date,
    max(payment_due_date) payment_due_date,
    buyer_transaction_reference_id,
    bank_trace_id,
    disbursement_date,
    max(billing_address_id) as billing_address_id,

    -- Buyer/seller columns:
    max(buyer_invoice_id_or_null) as buyer_invoice_id,
    max(seller_invoice_id_or_null) as seller_invoice_id,
    max(buyer_invoice_date_or_null) as buyer_invoice_date,
    max(seller_invoice_date_or_null) as seller_invoice_date,
  
    -- Categorized amounts by transaction type:
    -- When disbursement_id_or_invoiced = '<invoiced>',    these are invoiced amounts
    -- When disbursement_id_or_invoiced <> ''<invoiced>' these are disbursed amounts for _this_ specific disbursement_id
    sum(gross_revenue) as gross_revenue_this_disbursement_id_or_invoiced,
    sum(gross_refund) as gross_refund_this_disbursement_id_or_invoiced,
    sum(cogs) as cogs_this_disbursement_id_or_invoiced,
    sum(cogs_refund) as cogs_refund_this_disbursement_id_or_invoiced,
    sum(aws_rev_share) as aws_rev_share_this_disbursement_id_or_invoiced,
    sum(aws_refund_share) as aws_refund_share_this_disbursement_id_or_invoiced,
    sum(aws_tax_share) as aws_tax_share_this_disbursement_id_or_invoiced,
    sum(aws_tax_share_listing_fee) as aws_tax_share_listing_fee_this_disbursement_id_or_invoiced,
    sum(aws_tax_share_refund) as aws_tax_share_refund_this_disbursement_id_or_invoiced,
    sum(aws_tax_share_refund_listing_fee) as aws_tax_share_refund_listing_fee_this_disbursement_id_or_invoiced,
    sum(seller_tax_share) as seller_tax_share_this_disbursement_id_or_invoiced,
    sum(seller_tax_share_refund) as seller_tax_share_refund_this_disbursement_id_or_invoiced,
    sum(balance_adjustment) as balance_adjustment_this_disbursement_id_or_invoiced,
    sum(seller_rev_credit) as seller_rev_credit_this_disbursement_id_or_invoiced,
    sum(aws_ref_fee_credit) as aws_ref_fee_credit_this_disbursement_id_or_invoiced
  from
    billing_event_with_categorized_transaction as billing_categorized
  group by
    internal_buyer_line_item_id,
    disbursement_id,
    disbursement_id_or_invoiced,
    broker_id,
    -- The following columns are included the in group by but they are intentionally omitted from the PK.
    -- These columns should have the _same_ values for each record in the PK.
    product_id,
    currency,
    agreement_id,
    proposer_account_id,
    acceptor_account_id,
    offer_id,
    end_user_account_id,
    usage_period_start_date,
    usage_period_end_date,
    buyer_transaction_reference_id,
    bank_trace_id,
    disbursement_date
),

-- listagg function in athena does not support partitioning, grouping here and then joining to the main query
disbursement_list as (
  select
    internal_buyer_line_item_id,
    listagg(cast(disbursement_date as varchar),',') within group (order by cast(disbursement_date as varchar)) as disbursement_date_list,
    listagg(bank_trace_id,',') within group (order by cast(disbursement_date as varchar)) as disburse_bank_trace_id_list
    from (
    -- listagg function in athena does not support ordering by another field when distinct is used,
    -- here we first select distinct bank_trace_ids and then do the listagg order by disbursement_date
    select distinct internal_buyer_line_item_id, disbursement_date, bank_trace_id
  from billing_event_with_business_flags) distinct_disbursements
  group by internal_buyer_line_item_id
  order by internal_buyer_line_item_id
),

line_items_with_window_functions as (
--add flag next step compare gross_revenue and gross_revenue_disbursed or gross_refund and gross_refund_disbursed
  select
    line_item.internal_buyer_line_item_id,
    disbursement_id,
    disbursement_id_or_invoiced,
    product_id,
    broker_id,
    currency,
    agreement_id,
    proposer_account_id,
    acceptor_account_id,
    -- when there's aws_rev_Share adjustment/refund to a seller_rev_share invoice, it can happen that for the same aws_rev_share invoice_id, there are multiple disbursement events,
    -- using windows function to map payer_account_id of seller_rev_share to all corresponding aws_rev_Share
    max(payer_account_id) over (partition by line_item.internal_buyer_line_item_id) as payer_account_id,
    offer_id,
    end_user_account_id,
    usage_period_start_date,
    usage_period_end_date,
    payment_due_date,
    bank_trace_id,
    disbursement_date,
    billing_address_id,

    -- Buyer/seller columns:
    max(buyer_invoice_id) over (partition by line_item.internal_buyer_line_item_id) as buyer_invoice_id,
    seller_invoice_id,
    max(buyer_invoice_date) over (partition by line_item.internal_buyer_line_item_id) as buyer_invoice_date,
    seller_invoice_date,

    -- When disbursement_id_or_invoiced = ''<invoiced>', these are actually invoiced amounts
    -- When disbursement_id_or_invoiced <> ''<invoiced>' these are disbursed amounts for _this_ specific disbursement_id
    gross_revenue_this_disbursement_id_or_invoiced,
    gross_refund_this_disbursement_id_or_invoiced,
    cogs_this_disbursement_id_or_invoiced,
    cogs_refund_this_disbursement_id_or_invoiced,
    aws_rev_share_this_disbursement_id_or_invoiced,
    aws_refund_share_this_disbursement_id_or_invoiced,
    aws_tax_share_this_disbursement_id_or_invoiced,
    aws_tax_share_listing_fee_this_disbursement_id_or_invoiced,
    aws_tax_share_refund_this_disbursement_id_or_invoiced,
    aws_tax_share_refund_listing_fee_this_disbursement_id_or_invoiced,
    seller_tax_share_this_disbursement_id_or_invoiced,
    seller_tax_share_refund_this_disbursement_id_or_invoiced,
    balance_adjustment_this_disbursement_id_or_invoiced,
    seller_rev_credit_this_disbursement_id_or_invoiced,
    aws_ref_fee_credit_this_disbursement_id_or_invoiced,
    -- IMPORTANT: All window functions partitioned by internal_buyer_line_item_id:

    -- Invoiced amounts, categorized by transaction type:
    sum(case when disbursement_id_or_invoiced = ''<invoiced>' then gross_revenue_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end)over (partition by line_item.internal_buyer_line_item_id) as gross_revenue_invoiced,
    sum(case when disbursement_id_or_invoiced = ''<invoiced>' then gross_refund_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as gross_refund_invoiced,
    sum(case when disbursement_id_or_invoiced = ''<invoiced>' then cogs_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as cogs_invoiced,
    sum(case when disbursement_id_or_invoiced = ''<invoiced>' then cogs_refund_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as cogs_refund_invoiced,
    sum(case when disbursement_id_or_invoiced = ''<invoiced>' then aws_rev_share_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_rev_share_invoiced,
    sum(case when disbursement_id_or_invoiced = ''<invoiced>' then aws_refund_share_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_refund_share_invoiced,
    sum(case when disbursement_id_or_invoiced = ''<invoiced>' then aws_tax_share_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_tax_share_invoiced,
    sum(case when disbursement_id_or_invoiced = ''<invoiced>' then aws_tax_share_listing_fee_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_tax_share_listing_fee_invoiced,
    sum(case when disbursement_id_or_invoiced = ''<invoiced>' then aws_tax_share_refund_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_tax_share_refund_invoiced,
    sum(case when disbursement_id_or_invoiced = ''<invoiced>' then aws_tax_share_refund_listing_fee_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_tax_share_refund_listing_fee_invoiced,
    sum(case when disbursement_id_or_invoiced = ''<invoiced>' then seller_tax_share_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as seller_tax_share_invoiced,
    sum(case when disbursement_id_or_invoiced = ''<invoiced>' then seller_tax_share_refund_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as seller_tax_share_refund_invoiced,
    sum(case when disbursement_id_or_invoiced = ''<invoiced>' then balance_adjustment_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as balance_adjustment_invoiced,
    sum(case when disbursement_id_or_invoiced = ''<invoiced>' then seller_rev_credit_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as seller_rev_credit_invoiced,
    sum(case when disbursement_id_or_invoiced = ''<invoiced>' then aws_ref_fee_credit_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_ref_fee_credit_invoiced,

    -- Total disbursed amounts (for all disbursement_id values), categorized by transaction type:
    sum(case when disbursement_id_or_invoiced '<> ''<invoiced>' then gross_revenue_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as gross_revenue_disbursed,
    sum(case when disbursement_id_or_invoiced '<> ''<invoiced>' then gross_refund_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as gross_refund_disbursed,
    sum(case when disbursement_id_or_invoiced '<> ''<invoiced>' then cogs_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as cogs_disbursed,
    sum(case when disbursement_id_or_invoiced '<> ''<invoiced>' then cogs_refund_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as cogs_refund_disbursed,
    sum(case when disbursement_id_or_invoiced '<> ''<invoiced>' then aws_rev_share_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_rev_share_disbursed,
    sum(case when disbursement_id_or_invoiced '<> ''<invoiced>' then aws_refund_share_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_refund_share_disbursed,
    sum(case when disbursement_id_or_invoiced '<> ''<invoiced>' then aws_tax_share_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_tax_share_disbursed,
    sum(case when disbursement_id_or_invoiced '<> ''<invoiced>' then aws_tax_share_listing_fee_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_tax_share_listing_fee_disbursed,
    sum(case when disbursement_id_or_invoiced '<> ''<invoiced>' then aws_tax_share_refund_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_tax_share_refund_disbursed,
    sum(case when disbursement_id_or_invoiced '<> ''<invoiced>' then aws_tax_share_refund_listing_fee_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_tax_share_refund_listing_fee_disbursed,
    sum(case when disbursement_id_or_invoiced '<> ''<invoiced>' then seller_tax_share_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as seller_tax_share_disbursed,
    sum(case when disbursement_id_or_invoiced '<> ''<invoiced>' then seller_tax_share_refund_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as seller_tax_share_refund_disbursed,
    sum(case when disbursement_id_or_invoiced '<> ''<invoiced>' then balance_adjustment_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as balance_adjustment_disbursed,
    sum(case when disbursement_id_or_invoiced '<> ''<invoiced>' then seller_rev_credit_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as seller_rev_credit_disbursed,
    sum(case when disbursement_id_or_invoiced '<> ''<invoiced>' then aws_ref_fee_credit_this_disbursement_id_or_invoiced else cast(0 as decimal(38,6)) end) over (partition by line_item.internal_buyer_line_item_id) as aws_ref_fee_credit_disbursed,

    -- aggregate multiple disbursement
    max(disbursement_date) over (partition by line_item.internal_buyer_line_item_id) as last_disbursement_date,
    first_value(case when disbursement_id_or_invoiced = ''<invoiced>' then null else disbursement_id_or_invoiced end) over(partition by line_item.internal_buyer_line_item_id order by coalesce(disbursement_date,cast('1900-01-01' as timestamp)) desc rows between unbounded preceding and unbounded following) as last_disbursement_id,
    first_value(bank_trace_id) over (partition by line_item.internal_buyer_line_item_id order by coalesce(disbursement_date,cast('1900-01-01' as timestamp)) desc rows between unbounded preceding and unbounded following) as last_disburse_bank_trace_id,
    disb_list.disbursement_date_list,
    disb_list.disburse_bank_trace_id_list
  from
    line_items_aggregated as line_item
    left join disbursement_list disb_list
      on line_item.internal_buyer_line_item_id = disb_list.internal_buyer_line_item_id
),

cppo_offer_id as (
  select
    -- Channel partner offers do not exist in offertargetfeed_v1 table (as per legal requirement), causing cppo offer be defined as 'Public' in previous step, we will convert them back to 'Private' in next step
    offer_id
  from
    offers_with_uni_temporal_data
  where
    -- seller_account_id is null means the ISV owns the offer
    seller_account_id is not null
    and seller_account_id '<>  (select seller_account_id from seller_account)
  group by
    offer_id
),

line_items_with_window_functions_enrich_offer_product_address as (
  select
    internal_buyer_line_item_id,
    disbursement_id,
    disbursement_id_or_invoiced,
    line.product_id,
    legacy_product.legacy_id as legacy_product_id,
    products.title as product_title,
    line.broker_id,
    line.currency,
    line.end_user_account_id,
    acc_enduser.encrypted_account_id as end_user_encrypted_account_id,
    acc_enduser.aws_account_id as end_user_aws_account_id,
    acc_payer.aws_account_id as payer_aws_account_id,
    acc_payer.encrypted_account_id payer_encrypted_account_id,
    line.agreement_id,
    agreement.agreement_revision,
    line.proposer_account_id,
    case when offer.offer_id like 'aiqoffer-%' then null else agreement.start_date end as Agreement_Start_Date,
    case when offer.offer_id like 'aiqoffer-%' then null else agreement.end_date end as Agreement_End_Date,
    case when offer.offer_id like 'aiqoffer-%' then null else agreement.acceptance_date end as Agreement_Acceptance_Date,
    case when offer.offer_id like 'aiqoffer-%' then null else agreement.valid_from end as agreement_updated_date,
    case when offer.offer_id like 'aiqoffer-%' then null else line.usage_period_start_date end as Usage_Period_Start_Date,
    case when offer.offer_id like 'aiqoffer-%' then null else line.usage_period_end_date end as Usage_Period_End_Date,

    line.acceptor_account_id,
    acc_subscriber.aws_account_id as subscriber_aws_account_id,
    acc_subscriber.encrypted_account_id as subscriber_encrypted_account_id,
    offer.offer_id,
    case
      when offer.offer_id in (
        select distinct offer_id
        from cppo_offer_id)
        then 'Private'
      else offer.offer_target
    end as offer_target,
    offer.name offer_name,
    offer.opportunity_name offer_opportunity_name,
    offer.opportunity_description offer_opportunity_description,
    offer.opportunity_id,
    payment_due_date,
    line.bank_trace_id,
    disbursement_date,
    billing_address_id,
    buyer_invoice_id,
    seller_invoice_id,
    buyer_invoice_date,
    seller_invoice_date,
    gross_revenue_this_disbursement_id_or_invoiced,
    gross_refund_this_disbursement_id_or_invoiced,
    cogs_this_disbursement_id_or_invoiced,
    cogs_refund_this_disbursement_id_or_invoiced,
    aws_rev_share_this_disbursement_id_or_invoiced,
    aws_refund_share_this_disbursement_id_or_invoiced,
    aws_tax_share_this_disbursement_id_or_invoiced,
    aws_tax_share_listing_fee_this_disbursement_id_or_invoiced,
    aws_tax_share_refund_this_disbursement_id_or_invoiced,
    aws_tax_share_refund_listing_fee_this_disbursement_id_or_invoiced,
    seller_tax_share_this_disbursement_id_or_invoiced,
    seller_tax_share_refund_this_disbursement_id_or_invoiced,
    balance_adjustment_this_disbursement_id_or_invoiced,
    seller_rev_credit_this_disbursement_id_or_invoiced,
    aws_ref_fee_credit_this_disbursement_id_or_invoiced,
    gross_revenue_invoiced,
    gross_refund_invoiced,
    cogs_invoiced,
    cogs_refund_invoiced,
    aws_rev_share_invoiced,
    aws_refund_share_invoiced,
    aws_tax_share_invoiced,
    aws_tax_share_listing_fee_invoiced,
    aws_tax_share_refund_invoiced,
    aws_tax_share_refund_listing_fee_invoiced,
    seller_tax_share_invoiced,
    seller_tax_share_refund_invoiced,
    balance_adjustment_invoiced,
    seller_rev_credit_invoiced,
    aws_ref_fee_credit_invoiced,
    gross_revenue_disbursed,
    gross_refund_disbursed,
    cogs_disbursed,
    cogs_refund_disbursed,
    aws_rev_share_disbursed,
    aws_refund_share_disbursed,
    aws_tax_share_disbursed,
    aws_tax_share_listing_fee_disbursed,
    aws_tax_share_refund_disbursed,
    aws_tax_share_refund_listing_fee_disbursed,
    seller_tax_share_disbursed,
    seller_tax_share_refund_disbursed,
    balance_adjustment_disbursed,
    seller_rev_credit_disbursed,
    aws_ref_fee_credit_disbursed,
    last_disbursement_date,
    last_disbursement_id,
    last_disburse_bank_trace_id,
    disbursement_date_list,
    disburse_bank_trace_id_list,
    products.product_code,
    acc_products.aws_account_id as manufacturer_aws_account_id,
    products.manufacturer_account_id,
    --add subscriber and payer addressID, payer address preference order: tax address>billing address>mailing address,  subscriber address preference order: tax address> mailing address
    coalesce (
      --empty value in Athena shows as '', change all '' value to null in order to follow the preference order logic above
      case when acc_subscriber.tax_address_id ='' then null else acc_subscriber.tax_address_id end,
      case when acc_subscriber.mailing_address_id = '' then null else acc_subscriber.mailing_address_id end) as subscriber_address_id,
    coalesce (
      case when acc_payer.tax_address_id = '' then null else acc_payer.tax_address_id end,
      case when line.billing_address_id = '' then null else line.billing_address_id end,
      case when acc_payer.mailing_address_id = '' then null else acc_payer.mailing_address_id end) as payer_address_id,
    coalesce (
      case when acc_enduser.tax_address_id = '' then null else acc_enduser.tax_address_id end,
      case when line.billing_address_id = '' then null else line.billing_address_id end,
      case when acc_enduser.mailing_address_id = '' then null else acc_enduser.mailing_address_id end) as end_user_address_id
  from
    line_items_with_window_functions as line
  left join agreements_with_history as agreement on
      line.agreement_id = agreement.agreement_id and line.buyer_invoice_date >= agreement.valid_from_adjusted and line.buyer_invoice_date < agreement.valid_to
  left join offers_with_history_with_target_type as offer on
        line.offer_id = offer.offer_id and line.buyer_invoice_date >= offer.valid_from and line.buyer_invoice_date < offer.valid_to
  left join products_with_history as products on
        line.product_id = products.product_id and line.buyer_invoice_date >= products.valid_from_adjusted and line.buyer_invoice_date < products.valid_to
  left join legacy_products as legacy_product on
        line.product_id = legacy_product.new_id
  left join accounts_with_history_with_company_name as acc_payer on
        line.payer_account_id = acc_payer.account_id and line.buyer_invoice_date >= acc_payer.valid_from and line.buyer_invoice_date < acc_payer.valid_to
  left join accounts_with_history_with_company_name as acc_enduser on
        line.end_user_account_id = acc_enduser.account_id and line.buyer_invoice_date >= acc_enduser.valid_from and line.buyer_invoice_date < acc_enduser.valid_to
  left join accounts_with_history_with_company_name as acc_subscriber on
        line.acceptor_account_id = acc_subscriber.account_id and line.buyer_invoice_date >= acc_subscriber.valid_from and line.buyer_invoice_date < acc_subscriber.valid_to
  left join accounts_with_history_with_company_name as acc_products on
        products.manufacturer_account_id = acc_products.account_id and line.buyer_invoice_date >= acc_products.valid_from and line.buyer_invoice_date < acc_products.valid_to

),

line_items_with_window_functions_enrich_offer_product_address_name as (
  select
    line.internal_buyer_line_item_id,
    disbursement_id,
    disbursement_id_or_invoiced,
    product_id,
    legacy_product_id,
    product_title,
    broker_id,
    currency,
    end_user_address_id,
    end_user_account_id,
    end_user_encrypted_account_id,
    end_user_aws_account_id,
    add_enduser.company_name end_user_company_name,
    add_enduser.email_domain end_user_email_domain,
    add_enduser.city end_user_city,
    add_enduser.state_or_region end_user_state,
    add_enduser.country_code end_user_country,
    add_enduser.postal_code end_user_postal_code,
    payer_aws_account_id,
    payer_encrypted_account_id,
    payer_address_id,
    add_payer.company_name payer_company_name,
    add_payer.email_domain payer_email_domain,
    add_payer.city payer_city,
    add_payer.state_or_region payer_state,
    add_payer.country_code payer_country,
    add_payer.postal_code payer_postal_code,
    agreement_id,
    agreement_revision,
    agreement_start_date,
    agreement_end_date,
    agreement_acceptance_date,
    agreement_updated_date,
    case when proposer_account_id = (select seller_account_id from seller_account) then null else acc_proposer.aws_account_id end as reseller_aws_account_id,
    case when proposer_account_id = (select seller_account_id from seller_account) then null else acc_proposer.mailing_company_name end as reseller_company_name,
    usage_period_start_date,
    usage_period_end_date,
    proposer_account_id,
    acc_proposer.aws_account_id as proposer_aws_account_id,
    acceptor_account_id,
    subscriber_aws_account_id,
    subscriber_encrypted_account_id,
    subscriber_address_id,
    add_subscriber.company_name subscriber_company_name,
    add_subscriber.email_domain subscriber_email_domain,
    add_subscriber.city subscriber_city,
    add_subscriber.state_or_region subscriber_state,
    add_subscriber.country_code subscriber_country,
    add_subscriber.postal_code subscriber_postal_code,
    offer_id,
    offer_target,
    offer_name,
    offer_opportunity_name,
    offer_opportunity_description,
    opportunity_id,
    payment_due_date,
    bank_trace_id,
    disbursement_date,
    billing_address_id,
    max(buyer_invoice_id)as buyer_invoice_id,
    max(seller_invoice_id)as seller_invoice_id,
    max(buyer_invoice_date)as buyer_invoice_date,
    max(seller_invoice_date)as seller_invoice_date,
    gross_revenue_this_disbursement_id_or_invoiced,
    gross_refund_this_disbursement_id_or_invoiced,
    cogs_this_disbursement_id_or_invoiced,
    cogs_refund_this_disbursement_id_or_invoiced,
    aws_rev_share_this_disbursement_id_or_invoiced,
    aws_refund_share_this_disbursement_id_or_invoiced,
    aws_tax_share_this_disbursement_id_or_invoiced,
    aws_tax_share_listing_fee_this_disbursement_id_or_invoiced,
    aws_tax_share_refund_this_disbursement_id_or_invoiced,
    aws_tax_share_refund_listing_fee_this_disbursement_id_or_invoiced,
    seller_tax_share_this_disbursement_id_or_invoiced,
    seller_tax_share_refund_this_disbursement_id_or_invoiced,
    balance_adjustment_this_disbursement_id_or_invoiced,
    seller_rev_credit_this_disbursement_id_or_invoiced,
    aws_ref_fee_credit_this_disbursement_id_or_invoiced,
    (gross_revenue_this_disbursement_id_or_invoiced + gross_refund_this_disbursement_id_or_invoiced + aws_rev_share_this_disbursement_id_or_invoiced + aws_refund_share_this_disbursement_id_or_invoiced + seller_tax_share_this_disbursement_id_or_invoiced + seller_tax_share_refund_this_disbursement_id_or_invoiced
      + cogs_this_disbursement_id_or_invoiced + cogs_refund_this_disbursement_id_or_invoiced + aws_tax_share_listing_fee_this_disbursement_id_or_invoiced + aws_tax_share_refund_listing_fee_this_disbursement_id_or_invoiced) as seller_net_revenue_this_disbursement_id_or_invoiced,
    gross_revenue_invoiced,
    gross_refund_invoiced,
    cogs_invoiced,
    cogs_refund_invoiced,
    aws_rev_share_invoiced,
    aws_refund_share_invoiced,
    aws_tax_share_invoiced,
    aws_tax_share_listing_fee_invoiced,
    aws_tax_share_refund_invoiced,
    aws_tax_share_refund_listing_fee_invoiced,
    seller_tax_share_invoiced,
    seller_tax_share_refund_invoiced,
    balance_adjustment_invoiced,
    seller_rev_credit_invoiced,
    aws_ref_fee_credit_invoiced,
    gross_revenue_disbursed,
    gross_refund_disbursed,
    cogs_disbursed,
    cogs_refund_disbursed,
    aws_rev_share_disbursed,
    aws_refund_share_disbursed,
    aws_tax_share_disbursed,
    aws_tax_share_listing_fee_disbursed,
    aws_tax_share_refund_disbursed,
    aws_tax_share_refund_listing_fee_disbursed,
    seller_tax_share_disbursed,
    seller_tax_share_refund_disbursed,
    balance_adjustment_disbursed,
    seller_rev_credit_disbursed,
    aws_ref_fee_credit_disbursed,
    (gross_revenue_invoiced + gross_revenue_disbursed) as uncollected_gross_revenue,
    -- net revenue = gross revenue - listing fee - tax - cogs
    (gross_revenue_invoiced + gross_refund_invoiced + aws_rev_share_invoiced + aws_refund_share_invoiced + seller_tax_share_invoiced + seller_tax_share_refund_invoiced + cogs_invoiced + cogs_refund_invoiced + aws_tax_share_listing_fee_invoiced + aws_tax_share_refund_listing_fee_invoiced) as seller_net_revenue,
    (gross_revenue_invoiced + gross_refund_invoiced + aws_rev_share_invoiced + aws_refund_share_invoiced + seller_tax_share_invoiced + seller_tax_share_refund_invoiced + cogs_invoiced + cogs_refund_invoiced + aws_tax_share_listing_fee_invoiced + aws_tax_share_refund_listing_fee_invoiced
      + gross_revenue_disbursed + gross_refund_disbursed + aws_rev_share_disbursed + aws_refund_share_disbursed + seller_tax_share_disbursed + seller_tax_share_refund_disbursed + cogs_disbursed + cogs_refund_disbursed + aws_tax_share_listing_fee_disbursed + aws_tax_share_refund_listing_fee_disbursed) as uncollected_seller_net_revenue,
    last_disbursement_date,
    last_disbursement_id,
    last_disburse_bank_trace_id,
    disbursement_date_list,
    disburse_bank_trace_id_list,
    product_code,
    manufacturer_aws_account_id,
    manufacturer_account_id,
    acc_manu.mailing_company_name as manufacturer_company_name,
    cast(null as varchar) as AR_Period,
    case
      when (
        (gross_revenue_invoiced '<>0 and gross_revenue_invoiced = -1 * gross_revenue_disbursed)
        or (gross_refund_invoiced '<> 0 and gross_refund_invoiced = -1 * gross_refund_disbursed)
        or (balance_adjustment_invoiced '<> 0 and balance_adjustment_invoiced = -1 * balance_adjustment_disbursed)
        or (seller_tax_share_refund_invoiced '<> 0 and seller_tax_share_refund_invoiced = -1 * seller_tax_share_refund_disbursed)
        or (gross_revenue_invoiced = 0 and gross_refund_invoiced = 0 and balance_adjustment_invoiced = 0 and seller_tax_share_refund_invoiced = 0 and last_disbursement_id is not null)) then 'Yes'
      when gross_revenue_disbursed = 0 and gross_refund_disbursed = 0 and balance_adjustment_disbursed = 0 and seller_tax_share_disbursed = 0 and seller_tax_share_refund_disbursed = 0 then 'No'
      else 'Partial'
    end as Disbursement_Flag
  from line_items_with_window_functions_enrich_offer_product_address as line
  left join accounts_with_history_with_company_name as acc_manu on
    line.manufacturer_account_id = acc_manu.account_id and line.buyer_invoice_date >= acc_manu.valid_from_adjusted and line.buyer_invoice_date <= acc_manu.valid_to
  left join accounts_with_history_with_company_name as acc_proposer on
    line.proposer_account_id = acc_proposer.account_id and line.buyer_invoice_date >= acc_proposer.valid_from and line.buyer_invoice_date < acc_proposer.valid_to
  left join address_with_latest_revision as add_payer on
    line.payer_address_id = add_payer.address_id
  left join address_with_latest_revision as add_subscriber on
    line.subscriber_address_id = add_subscriber.address_id
  left join address_with_latest_revision as add_enduser on
    line.end_user_address_id = add_enduser.address_id
  group by
    line.internal_buyer_line_item_id,
    disbursement_id,
    disbursement_id_or_invoiced,
    product_id,
    legacy_product_id,
    product_title,
    broker_id,
    currency,
    end_user_address_id,
    end_user_account_id,
    end_user_encrypted_account_id,
    end_user_aws_account_id,
    add_enduser.company_name,
    add_enduser.email_domain,
    add_enduser.city,
    add_enduser.state_or_region,
    add_enduser.country_code,
    add_enduser.postal_code,
    payer_aws_account_id,
    payer_encrypted_account_id,
    payer_address_id,
    add_payer.company_name,
    add_payer.email_domain,
    add_payer.city,
    add_payer.state_or_region,
    add_payer.country_code,
    add_payer.postal_code,
    agreement_id,
    agreement_revision,
    case when proposer_account_id = (select seller_account_id from seller_account) then null else acc_proposer.aws_account_id end,
    case when proposer_account_id = (select seller_account_id from seller_account) then null else acc_proposer.mailing_company_name end,
    agreement_start_date,
    agreement_end_date,
    agreement_acceptance_date,
    agreement_updated_date,
    usage_period_start_date,
    usage_period_end_date,
    acceptor_account_id,
    subscriber_aws_account_id,
    subscriber_encrypted_account_id,
    subscriber_address_id,
    add_subscriber.company_name,
    add_subscriber.email_domain,
    add_subscriber.city,
    add_subscriber.state_or_region,
    add_subscriber.country_code,
    add_subscriber.postal_code,
    offer_id,
    offer_target,
    offer_name,
    offer_opportunity_name,
    offer_opportunity_description,
    opportunity_id,
    payment_due_date,
    bank_trace_id,
    disbursement_date,
    billing_address_id,
    gross_revenue_this_disbursement_id_or_invoiced,
    gross_refund_this_disbursement_id_or_invoiced,
    cogs_this_disbursement_id_or_invoiced,
    cogs_refund_this_disbursement_id_or_invoiced,
    aws_rev_share_this_disbursement_id_or_invoiced,
    aws_refund_share_this_disbursement_id_or_invoiced,
    aws_tax_share_this_disbursement_id_or_invoiced,
    aws_tax_share_listing_fee_this_disbursement_id_or_invoiced,
    aws_tax_share_refund_this_disbursement_id_or_invoiced,
    aws_tax_share_refund_listing_fee_this_disbursement_id_or_invoiced,
    seller_tax_share_this_disbursement_id_or_invoiced,
    seller_tax_share_refund_this_disbursement_id_or_invoiced,
    balance_adjustment_this_disbursement_id_or_invoiced,
    seller_rev_credit_this_disbursement_id_or_invoiced,
    aws_ref_fee_credit_this_disbursement_id_or_invoiced,
    gross_revenue_invoiced,
    gross_refund_invoiced,
    cogs_invoiced,
    cogs_refund_invoiced,
    aws_rev_share_invoiced,
    aws_refund_share_invoiced,
    aws_tax_share_invoiced,
    aws_tax_share_listing_fee_invoiced,
    aws_tax_share_refund_invoiced,
    aws_tax_share_refund_listing_fee_invoiced,
    seller_tax_share_invoiced,
    seller_tax_share_refund_invoiced,
    balance_adjustment_invoiced,
    seller_rev_credit_invoiced,
    aws_ref_fee_credit_invoiced,
    gross_revenue_disbursed,
    gross_refund_disbursed,
    cogs_disbursed,
    cogs_refund_disbursed,
    aws_rev_share_disbursed,
    aws_refund_share_disbursed,
    aws_tax_share_disbursed,
    aws_tax_share_listing_fee_disbursed,
    aws_tax_share_refund_disbursed,
    aws_tax_share_refund_listing_fee_disbursed,
    seller_tax_share_disbursed,
    seller_tax_share_refund_disbursed,
    balance_adjustment_disbursed,
    seller_rev_credit_disbursed,
    aws_ref_fee_credit_disbursed,
    last_disbursement_date,
    last_disbursement_id,
    last_disburse_bank_trace_id,
    disbursement_date_list,
    disburse_bank_trace_id_list,
    product_code,
    manufacturer_aws_account_id,
    manufacturer_account_id,
    acc_manu.mailing_company_name,
    proposer_account_id,
    acc_proposer.aws_account_id
),
invoiced_not_disbursed as(
  select
    --we will filter on rownum =1 in next step,
    -- means internal_buyer_line_item_id, there's only '<invoiced> record, no disbursement_id linked
    *,
    max(case when disbursement_id_or_invoiced = ''<invoiced>' then 1 else 2 end)
      over (partition by internal_buyer_line_item_id) rownum
  from line_items_with_window_functions_enrich_offer_product_address_name as line_items

),
collections_and_disbursements as (
  select
    ------------------
    -- Invoice Info --
    ------------------
    buyer_invoice_date as Invoice_Date,
    Payment_Due_Date as Payment_Due_Date,
    concat(
      'Net ',
      case
        when abs(date_diff('Day', Payment_due_date, buyer_invoice_date))>180 then '180+'
        else cast(abs(date_diff('Day', Payment_due_date, buyer_invoice_date)) as varchar)
        end,
      ' days'
    ) as payment_terms,
    buyer_invoice_id as Invoice_ID,
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when seller_invoice_id = '' then null else seller_invoice_id end,
      'Not applicable') as Listing_Fee_Invoice_ID,

    ---------------------------
    --End user Information --
    ---------------------------
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when End_User_Company_Name = '' then null else End_User_Company_Name end,
      'Not available') as End_User_Company_Name,
    End_User_AWS_Account_ID,
    End_User_Encrypted_Account_ID,
    End_User_Email_Domain,
    End_User_City,
    End_User_State as End_User_State_or_Region,
    End_User_Country,
    End_User_Postal_Code,
    End_User_Address_ID,

    ---------------------------
    --Subscriber Information --
    ---------------------------
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      when Subscriber_Company_Name is null or Subscriber_Company_Name = '' then 'Not provided'
      else Subscriber_Company_Name
    end as Subscriber_Company_Name,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      else Subscriber_AWS_Account_ID
    end as Subscriber_AWS_Account_ID,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      else Subscriber_Encrypted_Account_ID
    end as Subscriber_Encrypted_Account_ID,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      when Subscriber_Email_Domain is null or Subscriber_Email_Domain = '' then 'Not provided'
      else Subscriber_Email_Domain
    end as Subscriber_Email_Domain,
    case
      when Agreement_id is null or Agreement_ID = '' then 'Not available'
      when Subscriber_City is null or Subscriber_City = '' then 'Not provided'
      else Subscriber_City
    end as Subscriber_City,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      when Subscriber_State is null or Subscriber_State = '' then 'Not provided'
      else Subscriber_State
    end as Subscriber_State_or_Region,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      when Subscriber_Country is null or Subscriber_Country = '' then 'Not provided'
      else Subscriber_Country
    end as Subscriber_Country,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      when Subscriber_Postal_Code is null or Subscriber_Postal_Code = '' then 'Not provided'
      else Subscriber_Postal_Code
    end as Subscriber_Postal_Code,
    case
      when Agreement_ID is null or Agreement_ID = '' then 'Not available'
      when Subscriber_Address_ID is null or Subscriber_Address_ID = '' then 'Not provided'
      else Subscriber_Address_ID
    end as Subscriber_Address_ID,

    ----------------------
    -- Procurement Info --
    ----------------------
    -- product title at time of invoice. It is possible that the title changes over time and therefore there may be multiple product titles mapped to a single product id.
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when Product_Title = '' then null else Product_Title end,
      'Not provided') as Product_Title,
    -- offer name at time of invoice. It is possible that the name changes over time therefore there may be multiple offer names mapped to a single offer id.
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      when (Offer_Name is null or Offer_Name = '') and Offer_Target = 'Public' then 'Not applicable'
      else Offer_Name
    end as Offer_Name,
    case
      when Agreement_Id is null or Agreement_ID = ''
      then 'Not available'
      else Offer_ID
    end as Offer_ID,
    -- offer visibility at time of invoice.,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      else Offer_Target
    end as Offer_Visibility,
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when Agreement_ID = '' then null else Agreement_ID end,
      'Not available') as Agreement_ID,
    Agreement_Start_Date,
    Agreement_Acceptance_Date,
    Agreement_End_Date,

    Usage_Period_Start_Date,
    Usage_Period_End_Date,

    -----------------------
    -- Disbursement Info --
    -----------------------
    case
      when Disbursement_Flag = 'Yes' then 'Disbursed'
      when Disbursement_Flag = 'No' then 'Not Disbursed'
      else 'Other'
    end as Disbursement_Status,
    last_disbursement_date as disbursement_date,
    case
      when Disbursement_Flag = 'Yes' then date_diff('DAY', date_trunc('DAY',payment_due_date), date_trunc('DAY',last_disbursement_date))
      else null
    end as Disbursement_Time,
    case
      when Disbursement_Flag = 'No' then 'Not applicable'
      when bank_trace_id is null or bank_trace_id = '' then 'Not available'
      else bank_trace_id
    end as disburse_bank_trace_id,

    --------------
    -- Revenues --
    --------------
    -- We are rounding the sums using 2 decimal precision
    -- Note that the rounding method might differ between SQL implementations.
    -- The monthly revenue report is using RoundingMode.HALF_UP. This might create tiny discrepancies between this SQL output
    -- and the legacy report
    round(-1 * gross_revenue_this_disbursement_id_or_invoiced,2) as Gross_Revenue,
    round(-1 * gross_refund_this_disbursement_id_or_invoiced,2) as Gross_Refund,
    round(-1 * aws_rev_share_this_disbursement_id_or_invoiced,2) as Listing_Fee,
    round(-1 * aws_refund_share_this_disbursement_id_or_invoiced,2) as Listing_Fee_Refund,
    truncate(
      case
        when gross_revenue_this_disbursement_id_or_invoiced != 0 then abs(aws_rev_share_this_disbursement_id_or_invoiced/gross_revenue_this_disbursement_id_or_invoiced)
        when gross_refund_this_disbursement_id_or_invoiced != 0 then abs(aws_refund_share_this_disbursement_id_or_invoiced/gross_refund_this_disbursement_id_or_invoiced)
        else 0
      end
      ,4) as Listing_Fee_Percentage,
    round(-1 * seller_tax_share_this_disbursement_id_or_invoiced,2) as Seller_Tax_Share,
    round(-1 * seller_tax_share_refund_this_disbursement_id_or_invoiced,2) as Seller_Tax_Share_Refund,
    round(-1 * aws_tax_share_listing_fee_this_disbursement_id_or_invoiced,2) as AWS_Tax_Share_Listing_Fee,
    round(-1 * aws_tax_share_refund_listing_fee_this_disbursement_id_or_invoiced,2) as AWS_Tax_Share_Refund_Listing_Fee,
    round(-1 * cogs_this_disbursement_id_or_invoiced,2) as Wholesale_cost,
    round(-1 * cogs_refund_this_disbursement_id_or_invoiced,2) as Wholesale_cost_Refund,
    round(-1 * seller_net_revenue_this_disbursement_id_or_invoiced,2) as Seller_Net_Revenue,
    currency as Currency,

    substring(internal_buyer_line_item_id,1,strpos(internal_buyer_line_item_id,'-')-1) as Transaction_Reference_ID,
    broker_id as AWS_seller_of_record,

    -----------------
    -- Resale info --
    -----------------
    case
      when Opportunity_Id is null or Opportunity_Id = '' then
        case
          when Offer_Target = 'Public' then 'Not applicable'
          when (Offer_Target is null or Offer_Target = '') and (Agreement_Id is not null and Agreement_Id != '') then 'Not applicable'
          else null
        end
      else Opportunity_Id
    end as Resale_authorization_ID,
    case
      when Offer_Opportunity_Name is null or Offer_Opportunity_Name = '' then
        case
          when Offer_Target = 'Public' then 'Not applicable'
          when (Offer_Target is null or Offer_Target = '') and (Agreement_Id is not null and Agreement_Id != '') then 'Not applicable'
          else null
        end
      else Offer_Opportunity_Name
    end as Resale_authorization_name,
    case
      when Offer_Opportunity_Description is null or Offer_Opportunity_Description = '' then
        case
          when Offer_Target = 'Public' then 'Not applicable'
          when (Offer_Target is null or Offer_Target = '') and (Agreement_Id is not null and Agreement_Id != '') then 'Not applicable'
          else null
        end
      else Offer_Opportunity_Description
    end as Resale_authorization_description,
    case
      when (Reseller_AWS_Account_ID is not null and Reseller_AWS_Account_ID != '')
        and (Reseller_Company_Name is null or Reseller_Company_Name = '') then 'Not available'
      when (Reseller_AWS_Account_ID is null or Reseller_AWS_Account_ID = '')
        and (opportunity_id is null or opportunity_id = '') then 'Not applicable'
      when (select seller_account_id from seller_account) '<> manufacturer_aws_account_id
        and (Reseller_AWS_Account_ID is null or Reseller_AWS_Account_ID = '') then 'Not applicable'
      else Reseller_Company_Name
    end as Reseller_Company_Name,
    case
      when (Reseller_AWS_Account_ID is null or Reseller_AWS_Account_ID = '')
        and (Opportunity_Id is null or Opportunity_Id = '') then 'Not applicable'
      when (select seller_account_id from seller_account) '<> manufacturer_aws_account_id
        and (Reseller_AWS_Account_ID is null or Reseller_AWS_Account_ID = '') then 'Not applicable'
      else Reseller_AWS_Account_ID
    end as Reseller_AWS_Account_ID,

    -----------------------
    -- Payer Information --
    -----------------------
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when Payer_Company_Name = '' then null else Payer_Company_Name end,
      'Not available') as Payer_Company_Name,
    Payer_AWS_Account_ID, -- "Customer AWS Account Number" in legacy report
    Payer_Encrypted_Account_ID,
    Payer_Email_Domain,
    Payer_City,
    Payer_State as Payer_State_or_Region,
    Payer_Country,
    Payer_Postal_Code,
    Payer_Address_ID,

    ---------------------
    -- ISV Information --
    ---------------------
    manufacturer_aws_account_id as ISV_Account_ID,
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when Manufacturer_Company_Name = '' then null else Manufacturer_Company_Name end,
      'Not available') as ISV_Company_Name,

    ---------------------
    -- Products info --
    ---------------------
    Legacy_Product_ID,
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when Product_ID = '' then null else Product_ID end,
      'Not provided') as Product_ID,
    -- this is to get the legacy product id https://sim.amazon.com/issues/MP-INSIGHTS-2561
    Product_Code,

    case when Disbursement_Flag = 'Yes' then round(-1 * seller_net_revenue_this_disbursement_id_or_invoiced,2) else 0 end as Disbursed_Net_Revenue,
    case when Disbursement_Flag = 'No' then round(-1 * seller_net_revenue_this_disbursement_id_or_invoiced,2) else 0 end as Undisbursed_Net_Revenue,
    case
      when case when Disbursement_Flag = 'Yes' then date_diff('DAY', date_trunc('DAY',payment_due_date), date_trunc('DAY',last_disbursement_date)) else null end <= 0 then 'Not due'
      when case when Disbursement_Flag = 'Yes' then date_diff('DAY', date_trunc('DAY',payment_due_date), date_trunc('DAY',last_disbursement_date)) else null end <=30 then '1-30 days late'
      when case when Disbursement_Flag = 'Yes' then date_diff('DAY', date_trunc('DAY',payment_due_date), date_trunc('DAY',last_disbursement_date)) else null end <=60 then '31-60 days late'
      when case when Disbursement_Flag = 'Yes' then date_diff('DAY', date_trunc('DAY',payment_due_date), date_trunc('DAY',last_disbursement_date)) else null end <=90 then '61-90 days late'
      when case when Disbursement_Flag = 'Yes' then date_diff('DAY', date_trunc('DAY',payment_due_date), date_trunc('DAY',last_disbursement_date)) else null end <=120 then '91-120 days late'
      when case when Disbursement_Flag = 'Yes' then date_diff('DAY', date_trunc('DAY',payment_due_date), date_trunc('DAY',last_disbursement_date)) else null end >=121 then '121+ days late'
      else null
    end as Disbursement_Period
  from
    line_items_with_window_functions_enrich_offer_product_address_name as line
  where disbursement_id_or_invoiced != ''<invoiced>'

  union

  select
    ------------------
    -- Invoice Info --
    ------------------
    buyer_invoice_date as Invoice_Date,
    Payment_Due_Date as Payment_Due_Date,
    concat(
      'Net ',
      case
        when abs(date_diff('Day', Payment_due_date, buyer_invoice_date)) >180 then '180+'
        else cast(abs(date_diff('Day', Payment_due_date, buyer_invoice_date)) as varchar)
      end,
      ' days'
    ) as payment_terms,
    buyer_invoice_id as Invoice_ID,
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when seller_invoice_id = '' then null else seller_invoice_id end,
      'Not applicable') as Listing_Fee_Invoice_ID,

    ---------------------------
    --End user Information --
    ---------------------------
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when End_User_Company_Name = '' then null else End_User_Company_Name end,
      'Not available') as End_User_Company_Name,
    End_User_AWS_Account_ID,
    End_User_Encrypted_Account_ID,
    End_User_Email_Domain,
    End_User_City,
    End_User_State as End_User_State_or_Region,
    End_User_Country,
    End_User_Postal_Code,
    End_User_Address_ID,

    ---------------------------
    --Subscriber Information --
    ---------------------------
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      when Subscriber_Company_Name is null or Subscriber_Company_Name = '' then 'Not provided'
      else Subscriber_Company_Name
    end as Subscriber_Company_Name,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      else Subscriber_AWS_Account_ID
    end as Subscriber_AWS_Account_ID,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      else Subscriber_Encrypted_Account_ID
    end as Subscriber_Encrypted_Account_ID,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      when Subscriber_Email_Domain is null or Subscriber_Email_Domain = '' then 'Not provided'
      else Subscriber_Email_Domain
    end as Subscriber_Email_Domain,
    case
      when Agreement_id is null or Agreement_ID = '' then 'Not available'
      when Subscriber_City is null or Subscriber_City = '' then 'Not provided'
      else Subscriber_City
    end as Subscriber_City,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      when Subscriber_State is null or Subscriber_State = '' then 'Not provided'
      else Subscriber_State
    end as Subscriber_State_or_Region,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      when Subscriber_Country is null or Subscriber_Country = '' then 'Not provided'
      else Subscriber_Country
    end as Subscriber_Country,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      when Subscriber_Postal_Code is null or Subscriber_Postal_Code = '' then 'Not provided'
      else Subscriber_Postal_Code
    end as Subscriber_Postal_Code,
    case
      when Agreement_ID is null or Agreement_ID = '' then 'Not available'
      when Subscriber_Address_ID is null or Subscriber_Address_ID = '' then 'Not provided'
      else Subscriber_Address_ID
    end as Subscriber_Address_ID,

    ----------------------
    -- Procurement Info --
    ----------------------
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when Product_Title = '' then null else Product_Title end,
      'Not provided') as Product_Title,
    -- offer name at time of invoice. It is possible that the name changes over time therefore there may be multiple offer names mapped to a single offer id.
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      when (Offer_Name is null or Offer_Name = '') and Offer_Target = 'Public' then 'Not applicable'
      else Offer_Name
    end as Offer_Name,
    case
      when Agreement_Id is null or Agreement_ID = ''
      then 'Not available'
      else Offer_ID
    end as Offer_ID,
    -- offer visibility at time of invoice.,
    case
      when Agreement_Id is null or Agreement_ID = '' then 'Not available'
      else Offer_Target
    end as Offer_Visibility,
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when Agreement_ID = '' then null else Agreement_ID end,
      'Not available') as Agreement_ID,
    --case when Agreement_Id is null or Agreement_Id = '' then cast(null as timestamp) else Agreement_Start_Date end as Agreement_Start_Date,
    --case when Agreement_Id is null or Agreement_Id = '' then cast(null as timestamp) else Agreement_End_Date end as Agreement_End_Date,
    --case when Agreement_Id is null or Agreement_Id = '' then cast(null as timestamp) else Agreement_Acceptance_Date end as Agreement_Acceptance_Date,
    Agreement_Start_Date,
    Agreement_Acceptance_Date,
    Agreement_End_Date,

    Usage_Period_Start_Date,
    Usage_Period_End_Date,

    -----------------------
    -- Disbursement Info --
    -----------------------
    case
      when Disbursement_Flag = 'Yes' then 'Disbursed'
      when Disbursement_Flag = 'No' then 'Not Disbursed'
      else 'Other'
    end as Disbursement_Status,
    last_disbursement_date as disbursement_date,
    case
      when Disbursement_Flag = 'Yes' then date_diff('DAY', date_trunc('DAY',payment_due_date), date_trunc('DAY',last_disbursement_date))
      else null
    end as Disbursement_Time,
    case
      when Disbursement_Flag = 'No' then 'Not applicable'
      when bank_trace_id is null or bank_trace_id = '' then 'Not available'
      else bank_trace_id
    end as disburse_bank_trace_id,

    --------------
    -- Revenues --
    --------------
    -- We are rounding the sums using 2 decimal precision
    -- Note that the rounding method might differ between SQL implementations.
    -- The monthly revenue report is using RoundingMode.HALF_UP. This might create tiny discrepancies between this SQL output
    -- and the legacy report
    round(gross_revenue_this_disbursement_id_or_invoiced,2) as Gross_Revenue,
    round(gross_refund_this_disbursement_id_or_invoiced,2) as Gross_Refund,
    round(aws_rev_share_this_disbursement_id_or_invoiced,2) as Listing_Fee,
    round(aws_refund_share_this_disbursement_id_or_invoiced,2) as Listing_Fee_Refund,
    truncate(
      case
        when gross_revenue_this_disbursement_id_or_invoiced != 0 then abs(aws_rev_share_this_disbursement_id_or_invoiced/gross_revenue_this_disbursement_id_or_invoiced)
        when gross_refund_this_disbursement_id_or_invoiced != 0 then abs(aws_refund_share_this_disbursement_id_or_invoiced/gross_refund_this_disbursement_id_or_invoiced)
        else 0
      end
      ,4) as Listing_Fee_Percentage,
    round(seller_tax_share_this_disbursement_id_or_invoiced,2) as Seller_Tax_Share,
    round(seller_tax_share_refund_this_disbursement_id_or_invoiced,2) as Seller_Tax_Share_Refund,
    round(aws_tax_share_listing_fee_this_disbursement_id_or_invoiced,2) as AWS_Tax_Share_Listing_Fee,
    round(aws_tax_share_refund_listing_fee_this_disbursement_id_or_invoiced,2) as AWS_Tax_Share_Refund_Listing_Fee,
    round(cogs_this_disbursement_id_or_invoiced,2) as Wholesale_cost,
    round(cogs_refund_this_disbursement_id_or_invoiced,2) as Wholesale_cost_Refund,
    round(seller_net_revenue_this_disbursement_id_or_invoiced,2) as Seller_Net_Revenue,
    currency as Currency,

    substring(internal_buyer_line_item_id,1,strpos(internal_buyer_line_item_id,'-')-1) as Transaction_Reference_ID,
    broker_id as AWS_seller_of_record,

    -----------------
    -- Resale info --
    -----------------
    case
      when Opportunity_Id is null or Opportunity_Id = '' then
        case
          when Offer_Target = 'Public' then 'Not applicable'
          when (Offer_Target is null or Offer_Target = '') and (Agreement_Id is not null and Agreement_Id != '') then 'Not applicable'
          else null
        end
      else Opportunity_Id
    end as Resale_authorization_ID,
    case
      when Offer_Opportunity_Name is null or Offer_Opportunity_Name = '' then
        case
          when Offer_Target = 'Public' then 'Not applicable'
          when (Offer_Target is null or Offer_Target = '') and (Agreement_Id is not null and Agreement_Id != '') then 'Not applicable'
          else null
        end
      else Offer_Opportunity_Name
    end as Resale_authorization_name,
    case
      when Offer_Opportunity_Description is null or Offer_Opportunity_Description = '' then
        case
          when Offer_Target = 'Public' then 'Not applicable'
          when (Offer_Target is null or Offer_Target = '') and (Agreement_Id is not null and Agreement_Id != '') then 'Not applicable'
          else null
        end
      else Offer_Opportunity_Description
    end as Resale_authorization_description,
    case
      when (Reseller_AWS_Account_ID is not null and Reseller_AWS_Account_ID != '')
        and (Reseller_Company_Name is null or Reseller_Company_Name = '') then 'Not available'
      when (Reseller_AWS_Account_ID is null or Reseller_AWS_Account_ID = '')
        and (opportunity_id is null or opportunity_id = '') then 'Not applicable'
      when (select seller_account_id from seller_account) '<> manufacturer_aws_account_id
        and (Reseller_AWS_Account_ID is null or Reseller_AWS_Account_ID = '') then 'Not applicable'
      else Reseller_Company_Name
    end as Reseller_Company_Name,
    case
      when (Reseller_AWS_Account_ID is null or Reseller_AWS_Account_ID = '')
        and (Opportunity_Id is null or Opportunity_Id = '') then 'Not applicable'
      when (select seller_account_id from seller_account) '<> manufacturer_aws_account_id
        and (Reseller_AWS_Account_ID is null or Reseller_AWS_Account_ID = '') then 'Not applicable'
      else Reseller_AWS_Account_ID
    end as Reseller_AWS_Account_ID,

    -----------------------
    -- Payer Information --
    -----------------------
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when Payer_Company_Name = '' then null else Payer_Company_Name end,
      'Not available') as Payer_Company_Name,
    Payer_AWS_Account_ID, -- "Customer AWS Account Number" in legacy report
    Payer_Encrypted_Account_ID,
    Payer_Email_Domain,
    Payer_City,
    Payer_State as Payer_State_or_Region,
    Payer_Country,
    Payer_Postal_Code,
    Payer_Address_ID,

    ---------------------
    -- ISV Information --
    ---------------------
    manufacturer_aws_account_id as ISV_Account_ID,
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when Manufacturer_Company_Name = '' then null else Manufacturer_Company_Name end,
      'Not available') as ISV_Company_Name,

    ---------------------
    -- Products info --
    ---------------------
    -- product title at time of invoice. It is possible that the title changes over time and therefore there may be multiple product titles mapped to a single product id.
    Legacy_Product_ID,
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when Product_ID = '' then null else Product_ID end,
      'Not provided') as Product_ID,
    -- this is to get the legacy product id https://sim.amazon.com/issues/MP-INSIGHTS-2561
    Product_Code,

    case when Disbursement_Flag = 'Yes' then round(seller_net_revenue_this_disbursement_id_or_invoiced,2) else 0 end as Disbursed_Net_Revenue,
    case when Disbursement_Flag = 'No' then round(seller_net_revenue_this_disbursement_id_or_invoiced,2) else 0 end as Undisbursed_Net_Revenue,
    case
      when case when Disbursement_Flag = 'Yes' then date_diff('DAY', date_trunc('DAY',payment_due_date), date_trunc('DAY',last_disbursement_date)) else null end <= 0 then 'Not due'
      when case when Disbursement_Flag = 'Yes' then date_diff('DAY', date_trunc('DAY',payment_due_date), date_trunc('DAY',last_disbursement_date)) else null end <=30 then '1-30 days late'
      when case when Disbursement_Flag = 'Yes' then date_diff('DAY', date_trunc('DAY',payment_due_date), date_trunc('DAY',last_disbursement_date)) else null end <=60 then '31-60 days late'
      when case when Disbursement_Flag = 'Yes' then date_diff('DAY', date_trunc('DAY',payment_due_date), date_trunc('DAY',last_disbursement_date)) else null end <=90 then '61-90 days late'
      when case when Disbursement_Flag = 'Yes' then date_diff('DAY', date_trunc('DAY',payment_due_date), date_trunc('DAY',last_disbursement_date)) else null end <=120 then '91-120 days late'
      when case when Disbursement_Flag = 'Yes' then date_diff('DAY', date_trunc('DAY',payment_due_date), date_trunc('DAY',last_disbursement_date)) else null end >=121 then '121+ days late'
      else null
    end as Disbursement_Period
  from
    invoiced_not_disbursed
  where rownum = 1

)

select *
from collections_and_disbursements
where payment_due_date >= date_add('DAY', -90, current_date)
--where payment_due_date between cast('2023-01-01' as timestamp) and cast('2024-12-31' as timestamp)

--where disbursement_date >= date_add('DAY', -90, current_date)
--where disbursement_date between cast('2023-01-01' as timestamp) and cast('2024-12-31' as timestamp)
```

## Faturas tributadas
<a name="data-feed-example-tax"></a>

Para encontrar seus dados de contrato e renovação, execute um conjunto de consultas como a mostrada no exemplo a seguir. As consultas se complementam para criar o relatório de **Faturamento**. Você pode usar o exemplo conforme mostrado ou personalizá-lo para seus dados e casos de uso.

Os comentários nas consultas explicam o que as consultas fazem e como modificá-las.

```
-- Taxation report

-- General note: When executing this query we are assuming that the data ingested in the database is using
-- two time axes (the valid_from column and the update_date column).
-- See documentation for more details: https://docs.aws.amazon.com/marketplace/latest/userguide/data-feed.html#data-feed-details

-- An account_id has several valid_from dates (each representing a separate revision of the data)
-- but because of bi-temporality, an account_id + valid_from tuple can appear multiple times with a different update_date.
-- We are only interested in the most recent tuple (ie, uni-temporal model)
with accounts_with_uni_temporal_data as (
  select
    account_id,
    aws_account_id,
    encrypted_account_id,
    mailing_address_id,
    tax_address_id,
    tax_legal_name,
    from_iso8601_timestamp(valid_from) as valid_from,
    tax_registration_number
  from
    (
      select
        account_id,
        aws_account_id,
        encrypted_account_id,
        mailing_address_id,
        tax_address_id,
        tax_legal_name,
        valid_from,
        delete_date,
        tax_registration_number,
        row_number() over (partition by account_id, valid_from order by from_iso8601_timestamp(update_date) desc) as row_num
      from
        accountfeed_v1
    )
  where
    -- keep latest ...
    row_num = 1
    -- ... and remove the soft-deleted one.
    and (delete_date is null or delete_date = '')
),

accounts_with_history as (
  with accounts_with_history_with_extended_valid_from as (
    select
      account_id,
      -- sometimes, this columns gets imported as a "bigint" and loses heading 0s -> casting to a char and re-adding heading 0s (if need be)
      substring('000000000000'||cast(aws_account_id as varchar),-12) as aws_account_id,
      encrypted_account_id,
      mailing_address_id,
      tax_address_id,
      tax_legal_name tax_legal_name,
      -- The start time of account valid_from is extended to '1970-01-01 00:00:00', because:
      -- ... in tax report transformations, some tax line items with invoice_date cannot
      -- ... fall into the default valid time range of the associated account
      CASE
        WHEN LAG(valid_from) OVER (PARTITION BY account_id ORDER BY valid_from ASC) IS NULL
            THEN CAST('1970-01-01 00:00:00' as timestamp)
        ELSE valid_from
      END AS valid_from
    from
      (select * from accounts_with_uni_temporal_data ) as account
  )
  select
    account_id,
    aws_account_id,
    encrypted_account_id,
    mailing_address_id,
    tax_address_id,
    tax_legal_name,
    valid_from,
    coalesce(
      lead(valid_from) over (partition by account_id order by valid_from asc),
      cast('2999-01-01 00:00:00' as timestamp)
    ) as valid_to
  from
    accounts_with_history_with_extended_valid_from
),

-- A product_id has several valid_from dates (each representing a product revision),
-- but because of bi-temporality, each product_id + valid_from tuple can appear multiple times with a different update_date.
-- We are only interested in the most recent tuple (ie, uni-temporal model)
products_with_uni_temporal_data as (
  select
    from_iso8601_timestamp(valid_from) as valid_from,
    from_iso8601_timestamp(update_date) as update_date,
    from_iso8601_timestamp(delete_date) as delete_date,
    product_id,
    manufacturer_account_id,
    product_code,
    title
  from
    (
      select
        valid_from,
        update_date,
        delete_date,
        product_id,
        manufacturer_account_id,
        product_code,
        title,
        row_number() over (partition by product_id, valid_from order by from_iso8601_timestamp(update_date) desc) as row_num
      from
       productfeed_v1
      )
  where
    -- keep latest ...
    row_num = 1
    -- ... and remove the soft-deleted one.
    and (delete_date is null or delete_date = '')
),

products_with_history as (
  select
    product_id,
    title,
    valid_from,    
    case
      when lag(valid_from) over (partition by product_id order by valid_from asc) is null and valid_from < cast('2021-04-01' as timestamp)
        then date_add('Day', -3857, valid_from)
      -- 3827 is the longest delay between acceptance_date of an agreement and the product
      -- we are keeping 3857 as a consistency between the offers and products
      when lag(valid_from) over (partition by product_id order by valid_from asc) is null and valid_from >= cast('2021-04-01' as timestamp)
        then date_add('Day', -2190, valid_from)
      --after 2021 for the two offers we need to adjust for 2 more years
      else valid_from end as valid_from_adjusted,
    coalesce(
      lead(valid_from) over (partition by product_id order by valid_from asc),
      cast('2999-01-01 00:00:00' as timestamp)
    ) as valid_to,
    product_code,
    manufacturer_account_id
  from
    products_with_uni_temporal_data
),

-- A tax_item_id has several valid_from dates (each representing a product revision),
-- but because of bi-temporality, each tax_item_id + valid_from tuple can appear multiple times with a different update_date.
-- We are only interested in the most recent tuple (ie, uni-temporal model)
tax_items_with_uni_temporal_data as (
  select
    from_iso8601_timestamp(valid_from) as valid_from,
    from_iso8601_timestamp(update_date) as update_date,
    delete_date,
    cast(tax_item_id as varchar) as tax_item_id,
    cast(invoice_id as varchar) as invoice_id,
    cast(line_item_id as varchar) as line_item_id,
    cast(customer_bill_id as varchar) as customer_bill_id,
    tax_liable_party,
    transaction_type_code,
    product_id,
    product_tax_code,
    from_iso8601_timestamp(invoice_date) as invoice_date,
    taxed_customer_account_id,
    taxed_customer_country,
    taxed_customer_state_or_region,
    taxed_customer_city,
    taxed_customer_postal_code,
    tax_location_code_taxed_jurisdiction,
    tax_type_code,
    jurisdiction_level,
    taxed_jurisdiction,
    display_price_taxability_type,
    tax_jurisdiction_rate,
    tax_amount,
    tax_currency,
    tax_calculation_reason_code,
    date_used_for_tax_calculation,
    customer_exemption_certificate_id,
    customer_exemption_certificate_id_domain,
    customer_exemption_certificate_level,
    customer_exemption_code,
    customer_exemption_domain,
    transaction_reference_id
  from
    (
      select
        valid_from,
        update_date,
        delete_date,
        tax_item_id,
        invoice_id,
        line_item_id,
        customer_bill_id,
        tax_liable_party,
        transaction_type_code,
        product_id,
        product_tax_code,
        invoice_date,
        taxed_customer_account_id,
        taxed_customer_country,
        taxed_customer_state_or_region,
        taxed_customer_city,
        taxed_customer_postal_code,
        tax_location_code_taxed_jurisdiction,
        tax_type_code,
        jurisdiction_level,
        taxed_jurisdiction,
        display_price_taxability_type,
        tax_jurisdiction_rate,
        tax_amount,
        tax_currency,
        tax_calculation_reason_code,
        date_used_for_tax_calculation,
        customer_exemption_certificate_id,
        customer_exemption_certificate_id_domain,
        customer_exemption_certificate_level,
        customer_exemption_code,
        customer_exemption_domain,
        transaction_reference_id,
        row_number() over (partition by tax_item_id, valid_from order by from_iso8601_timestamp(update_date) desc) as row_num
      from
        taxitemfeed_v1
    )
  where
    -- keep latest ...
    row_num = 1
    -- ... and remove the soft-deleted one.
    and (delete_date is null or delete_date = '')
),

taxation as (
  select
    tax_items.invoice_id,
    tax_items.line_item_id,
    tax_items.customer_bill_id,
    tax_items.tax_liable_party,
    tax_items.transaction_type_code,
    tax_items.product_id,
    product_tax_item.title as product_title,
    tax_items.product_tax_code,
    tax_items.invoice_date,
    accounts_with_history.aws_account_id as taxed_customer_account_id,
    tax_items.taxed_customer_country,
    tax_items.taxed_customer_state_or_region,
    tax_items.taxed_customer_city,
    tax_items.taxed_customer_postal_code,
    tax_items.tax_type_code as tax_type,
    tax_items.jurisdiction_level,
    tax_items.taxed_jurisdiction,
    tax_items.display_price_taxability_type,
    tax_items.tax_jurisdiction_rate,
    tax_items.tax_amount,
    tax_items.tax_currency,
    tax_items.tax_calculation_reason_code,
    tax_items.date_used_for_tax_calculation,
    coalesce(
      --empty value in Athena shows as '', change all '' value to null
      case when tax_items.customer_exemption_certificate_id = '' then null else tax_items.customer_exemption_certificate_id end,
      'Not exempt') customer_exemption_certificate_id,
    coalesce(--empty value in Athena shows as '', change all '' value to null
      case when tax_items.customer_exemption_certificate_id_domain = '' then null else tax_items.customer_exemption_certificate_id_domain end,
      'Not exempt') customer_exemption_certificate_id_domain,
    coalesce(--empty value in Athena shows as '', change all '' value to null
      case when tax_items.customer_exemption_certificate_level = '' then null else tax_items.customer_exemption_certificate_level end,
      'Not exempt') customer_exemption_certificate_level,
    coalesce(--empty value in Athena shows as '', change all '' value to null
      case when tax_items.customer_exemption_code = '' then null else tax_items.customer_exemption_code end,
      'Not exempt') customer_exemption_code,
    tax_items.transaction_reference_id
  from
    tax_items_with_uni_temporal_data as tax_items
    left join products_with_history as product_tax_item on
      tax_items.product_id = product_tax_item.product_id and tax_items.invoice_date >= product_tax_item.valid_from_adjusted and tax_items.invoice_date < product_tax_item.valid_to
    left join accounts_with_history as accounts_with_history on
      tax_items.taxed_customer_account_id = accounts_with_history.account_id and tax_items.invoice_date >= accounts_with_history.valid_from and tax_items.invoice_date < accounts_with_history.valid_to

)

select *
from taxation
where invoice_date >= date_add('DAY', -90, current_date)
--where invoice_date between cast('2023-01-01' as timestamp) and cast('2024-12-31' as timestamp)
```

## Desembolsos por produto
<a name="data-feed-example-disbursement-by-product"></a>

Para descobrir os valores desembolsados pelo produto, é possível executar uma série de consultas como a seguinte. 

Esses exemplos de consultas foi feito para criar a lista final de detalhes do produto com desembolsos. Também mostra como obter informações do produto em um momento específico. Você pode usar o exemplo conforme mostrado ou personalizá-lo para seus dados e casos de uso.

Os comentários nas consultas explicam o que as consultas fazem e como modificá-las.

**nota**  
Ao executar essa consulta, presumimos que os dados ingeridos estão usando dois eixos de tempo, as colunas `valid_from` e `update`. Para obter mais informações sobre os eixos, consulte [Armazenamento e estrutura dos feeds de dados AWS Marketplace](data-feed-details.md).

```
    -- Get all the products and keep the latest product_id, valid_from tuple
    with products_with_uni_temporal_data as (
      select
       *
      from
      (
        select
         *,
         ROW_NUMBER() OVER (PARTITION BY product_id, valid_from 
             ORDER BY from_iso8601_timestamp(update_date) desc) 
             as row_num
        from
         productfeed_v1
      )
      where
        -- A product_id can appear multiple times with the same 
        -- valid_from date but with a different update_date column,
        -- making it effectively bi-temporal. By only taking the most
        -- recent tuple, we are converting to a uni-temporal model.
        row_num = 1
    ),

    -- Gets the latest revision of a product
    -- A product can have multiple revisions where some of the 
    -- columns, like the title, can change.
    -- For the purpose of the disbursement report, we want 
    -- to get the latest revision of a product
    products_with_latest_version as (
     select
      *
     from
     (
      select
       *,
       ROW_NUMBER() OVER (PARTITION BY product_id 
           ORDER BY from_iso8601_timestamp(valid_from) desc) 
           as row_num_latest_version
      from
       products_with_uni_temporal_data
     )
     where
      row_num_latest_version = 1
   ),

    -- Get all the accounts and keep the latest account_id, valid_from tuple
    accounts_with_uni_temporal_data as (
      select
       *
      from
      (
        select
         *,
         ROW_NUMBER() OVER (PARTITION BY account_id, valid_from ORDER BY from_iso8601_timestamp(update_date) desc) as row_num
        from
         accountfeed_v1
      )
      where
        -- An account_id can appear multiple times with the same 
        -- valid_from date but with a different update_date column,
        -- making it effectively bi-temporal. By only taking the most
        -- recent tuple, we are converting to a uni-temporal model.
        row_num = 1
    ),

    -- Gets the latest revision of an account
    -- An account can have multiple revisions where some of the 
    -- columns, like the mailing_address_id, can change.
    -- For the purpose of the disbursement report, we want 
    -- to get the latest revision of a product
    accounts_with_latest_version as (
     select
      *
     from
     (
      select
       *,
       ROW_NUMBER() OVER (PARTITION BY account_id 
           ORDER BY from_iso8601_timestamp(valid_from) desc) 
           as row_num_latest_version
      from
       accounts_with_uni_temporal_data
     )
     where
      row_num_latest_version = 1
   ),

    -- Get all the billing events and keep the 
    -- latest billing_event_id, valid_from tuple:
    billing_events_with_uni_temporal_data as (
      select
       *
      from (
        select
          billing_event_id,
          from_iso8601_timestamp(valid_from) as valid_from,
          from_iso8601_timestamp(update_date) as update_date,
          from_iso8601_timestamp(invoice_date) as invoice_date,
          transaction_type,
          transaction_reference_id,
          product_id,
          disbursement_billing_event_id,
          action,
          from_account_id,
          to_account_id,
          end_user_account_id,
          CAST(amount as decimal(20, 10)) invoice_amount,
          bank_trace_id,
          ROW_NUMBER() OVER (PARTITION BY billing_event_id, valid_from 
              ORDER BY from_iso8601_timestamp(update_date) desc) 
              as row_num
        from
          billingeventfeed_v1
        )
      where row_num = 1
    ),

    -- Get all the disbursements
    -- The billing events data is immutable.
    -- It is not required to use time windows based on the 
    -- valid_from column to get the most recent billing event
    disbursement_events as (
      select
        billing_events_raw.billing_event_id as disbursement_id,
        billing_events_raw.invoice_date as disbursement_date,
        billing_events_raw.bank_trace_id
      from
        billing_events_with_uni_temporal_data billing_events_raw
      where
        -- Only interested in disbursements, so filter out
        -- non-disbursements by selecting transaction type 
        -- to be DISBURSEMENT:
        billing_events_raw.transaction_type = 'DISBURSEMENT'
        -- Select a time period, you can adjust the dates 
        -- below if need be. For billing events use the 
        -- invoice date as the point in time of the 
        -- disbursement being initiated:
        and billing_events_raw.invoice_date >= 
            from_iso8601_timestamp('2020-10-01T00:00:00Z')
        and billing_events_raw.invoice_date < 
            from_iso8601_timestamp('2020-11-01T00:00:00Z')
    ),

    -- Get the invoices along with the line items that 
    -- are part of the above filtered disbursements
    disbursed_line_items as (
      select
        line_items.transaction_reference_id,
        line_items.product_id,
        line_items.transaction_type,
        (case
           -- Get the payer of the invoice from any 
           -- transaction type that is not AWS and 
           -- not BALANCE_ADJUSTMENT.
           -- For AWS and BALANCE_ADJUSTMENT, the billing 
           -- event feed will show the "AWS Marketplace" 
           -- account as the receiver of the funds and the 
           -- seller as the payer. Filter those out.
           when line_items.transaction_type 
               not like '%AWS%' and transaction_type 
               not like 'BALANCE_ADJUSTMENT' 
               then line_items.from_account_id
        end) as payer_account_id,
        line_items.end_user_account_id,
        invoice_amount,
        disbursements.disbursement_date,
        disbursements.disbursement_id,
        disbursements.bank_trace_id
      from
        billing_events_with_uni_temporal_data line_items
        -- Each disbursed line item is linked to the parent 
        -- disbursement via the disbursement_billing_event_id
        join disbursement_events disbursements 
          on disbursements.disbursement_id 
          = line_items.disbursement_billing_event_id
      where
        -- we are interested only in the invoice line 
        -- items that are DISBURSED
        line_items.action = 'DISBURSED'
    ),

  -- An invoice can contain multiple line items
  -- Create a pivot table to calculate the different 
  -- amounts that are part of an invoice.
  -- The new row is aggregated at 
  -- transaction_reference_id - end_user_account_id level
  invoice_amounts_aggregated as (
    select
      transaction_reference_id,
      product_id,
      -- a given disbursement id should have the 
      -- same disbursement_date
      max(disbursement_date) as disbursement_date,
      -- Build a pivot table in order to provide all the
      -- data related to a transaction in a single row.
      -- Note that the amounts are negated. This is because 
      -- when an invoice is generated, we give you the 
      -- positive amounts and the disbursement event 
      -- negates the amounts
      sum(case when transaction_type = 'SELLER_REV_SHARE' 
          then -invoice_amount else 0 end) as seller_rev_share,
      sum(case when transaction_type = 'AWS_REV_SHARE'  
          then -invoice_amount else 0 end) as aws_rev_share,
      sum(case when transaction_type = 'SELLER_REV_SHARE_REFUND'  
          then -invoice_amount else 0 end) as seller_rev_refund,
      sum(case when transaction_type = 'AWS_REV_SHARE_REFUND'  
          then -invoice_amount else 0 end) as aws_rev_refund,
      sum(case when transaction_type = 'SELLER_REV_SHARE_CREDIT'  
          then -invoice_amount else 0 end) as seller_rev_credit,
      sum(case when transaction_type = 'AWS_REV_SHARE_CREDIT'  
          then -invoice_amount else 0 end) as aws_rev_credit,
      sum(case when transaction_type = 'SELLER_TAX_SHARE'  
          then -invoice_amount else 0 end) as seller_tax_share,
      sum(case when transaction_type = 'SELLER_TAX_SHARE_REFUND'  
          then -invoice_amount else 0 end) as seller_tax_refund,
      -- This is the account that pays the invoice:
      max(payer_account_id) as payer_account_id,
      -- This is the account that subscribed to the product:
      end_user_account_id as customer_account_id,
      bank_trace_id
    from
      disbursed_line_items
    group by
      transaction_reference_id,
      product_id,
      disbursement_id,
      -- There might be a different end-user for the same 
      -- transaction reference id. Distributed licenses 
      -- is an example
      end_user_account_id,
      bank_trace_id
),

disbursed_amount_by_product as (
  select
    products.title as ProductTitle,
    products.product_code as ProductCode,
    -- We are rounding the sums using 2 decimal precision
    -- Note that the rounding method might differ 
    -- between SQL implementations.
    -- The disbursement seller report is using 
    -- RoundingMode.HALF_UP. This might create 
    -- discrepancies between this SQL output
    -- and the disbursement seller report
    round(invoice_amounts.seller_rev_share, 2) as SellerRev,
    round(invoice_amounts.aws_rev_share, 2) as AWSRefFee,
    round(invoice_amounts.seller_rev_refund, 2) as SellerRevRefund,
    round(invoice_amounts.aws_rev_refund, 2) as AWSRefFeeRefund,
    round(invoice_amounts.seller_rev_credit, 2) as SellerRevCredit,
    round(invoice_amounts.aws_rev_credit, 2) as AWSRefFeeCredit,
    (
        round(invoice_amounts.seller_rev_share, 2) +
        round(invoice_amounts.aws_rev_share, 2) +
        round(invoice_amounts.seller_rev_refund, 2) +
        round(invoice_amounts.aws_rev_refund, 2) +
        round(invoice_amounts.seller_rev_credit, 2) +
        round(invoice_amounts.aws_rev_credit, 2)
    ) as NetAmount,
    invoice_amounts.transaction_reference_id  
          as TransactionReferenceID,
    round(invoice_amounts.seller_tax_share, 2)  
          as SellerSalesTax,
    round(invoice_amounts.seller_tax_refund, 2)  
          as SellerSalesTaxRefund,
    payer_info.aws_account_id  
          as PayerAwsAccountId,
    customer_info.aws_account_id  
          as EndCustomerAwsAccountId,
    invoice_amounts.disbursement_date  
          as DisbursementDate,
    invoice_amounts.bank_trace_id  
          as BankTraceId
  from
    invoice_amounts_aggregated invoice_amounts
    join products_with_latest_version products  
      on products.product_id = invoice_amounts.product_id
    left join accounts_with_latest_version payer_info  
      on payer_info.account_id = invoice_amounts.payer_account_id
    left join accounts_with_latest_version customer_info  
      on customer_info.account_id = invoice_amounts.customer_account_id
)

select * from disbursed_amount_by_product;
```

## Relatório de compensação de vendas
<a name="data-feed-example-sales-compensation"></a>

Para encontrar a receita faturada por cliente, execute uma série de consultas como a que se segue. Esses exemplos de consultas se baseiam umas nas outras para criar a lista final de detalhes do cliente com o valor total cobrado de cada cliente pelo uso do seu software. Você pode usar as consultas conforme mostrado ou personalizá-las para seus dados e casos de uso.

 Os comentários nas consultas explicam o que as consultas fazem e como modificá-las.

**nota**  
Ao executar essa consulta, presumimos que os dados ingeridos estão usando dois eixos de tempo (as colunas `valid_from` e `update`). Para obter mais informações, consulte [Armazenamento e estrutura dos feeds de dados AWS Marketplace](data-feed-details.md).

```
    -- Gets all the products and keeps the latest product_id, 
    -- valid_from tuple.
    with products_with_uni_temporal_data as (
      select
       *
      from
      (
        select
         *,
         ROW_NUMBER() OVER (PARTITION BY product_id, valid_from 
                  ORDER BY from_iso8601_timestamp(update_date) desc) 
                  as row_num
        from
         productfeed_v1
      )
      where
        -- A product_id can appear multiple times with the same 
        -- valid_from date but with a different update_date column,
        -- making it effectively bi-temporal. By only taking the most
        -- recent tuple, we are converting to a uni-temporal model.
        row_num = 1
    ),

    -- Gets the latest revision of a product
    -- A product can have multiple revisions where some of the 
    -- columns, like the title, can change.
    -- For the purpose of the sales compensation report, we want 
    -- to get the latest revision of a product
    products_with_latest_revision as (
     select
      *
     from
     (
      select
       *,
       ROW_NUMBER() OVER (PARTITION BY product_id ORDER BY from_iso8601_timestamp(valid_from) desc) as row_num_latest_revision
      from
       products_with_uni_temporal_data
     )
     where
      row_num_latest_revision = 1
   ),

     -- Gets all the addresses and keeps the latest address_id, 
     -- aws_account_id, and valid_from combination.
     -- We're transitioning from a bi-temporal data model to an 
     -- uni-temporal data_model
     piifeed_with_uni_temporal_data as (
       select
        *
       from
       (
         select
          *,
          ROW_NUMBER() OVER (
             PARTITION BY address_id, aws_account_id, valid_from 
             ORDER BY from_iso8601_timestamp(update_date) desc) 
             as row_num
         from
          piifeed
       )
       where
         -- An address_id can appear multiple times with the same
         -- valid_from date but with a different update_date column.
         -- We are only interested in the most recent.
         row_num = 1
     ),

    -- Gets the latest revision of an address.
    -- An address_id can have multiple revisions where some of 
    -- the columns can change.
    -- For the purpose of the sales compensation report, we want to
    -- get the latest revision of an address + account_id pair.
    pii_with_latest_revision as (
      select
       *
      from
      (
       select
        *,
        ROW_NUMBER() OVER (PARTITION BY address_id, aws_account_id 
              ORDER BY from_iso8601_timestamp(valid_from) desc) 
              as row_num_latest_revision
       from
        piifeed_with_uni_temporal_data
      )
      where
       row_num_latest_revision = 1
    ),

    -- Gets all the accounts and keeps the latest 
    -- account_id, valid_from tuple.
    -- We're transitioning from a bi-temporal data 
    -- model to an uni-temporal data_model.
    accounts_with_uni_temporal_data as (
      select
       *
      from
      (
        select
         *,
         ROW_NUMBER() OVER (PARTITION BY account_id, valid_from 
             ORDER BY from_iso8601_timestamp(update_date) desc) 
             as row_num
        from
         accountfeed_v1
      )
      where
        -- An account_id can appear multiple times with the same 
        -- valid_from date but with a different update_date column.
        -- We are only interested in the most recent tuple.
        row_num = 1
    ),

    -- Gets all the historical dates for an account
    -- An account can have multiple revisions where some of the 
    -- columns like the mailing_address_id can change.
    accounts_with_history as (
     select
      *,
      -- This interval's begin_date
      case
        when
        -- First record for a given account_id
          lag(valid_from, 1) over (partition by account_id 
             order by from_iso8601_timestamp(valid_from) asc) is null
        then
          -- 'force' begin_date a bit earlier because of different 
          -- data propagation times. We'll subtract one day as one
          -- hour is not sufficient
          from_iso8601_timestamp(valid_from) - INTERVAL '1' DAY
        else
          -- not the first line -> return the real date
          from_iso8601_timestamp(valid_from)
      end as begin_date,
      -- This interval's end date.
      COALESCE(
           LEAD(from_iso8601_timestamp(valid_from), 1) 
                OVER (partition by account_id 
                ORDER BY from_iso8601_timestamp(valid_from)),
           from_iso8601_timestamp('9999-01-01T00:00:00Z')
      ) as end_date
     from
       accounts_with_uni_temporal_data
   ),

    -- Gets all the billing events and keeps the latest 
    -- billing_event_id, valid_from tuple.
    -- We're transitioning from a bi-temporal data 
    -- model to an uni-temporal data_model.
    billing_events_with_uni_temporal_data as (
      select
       *
      from (
        select
          billing_event_id,
          from_iso8601_timestamp(valid_from) as valid_from,
          from_iso8601_timestamp(update_date) as update_date,
          from_iso8601_timestamp(invoice_date) as invoice_date,
          transaction_type,
          transaction_reference_id,
          product_id,
          disbursement_billing_event_id,
          action,
          currency,
          from_account_id,
          to_account_id,
          end_user_account_id,
          -- convert an empty billing address to null. This will 
          -- later be used in a COALESCE call
          case
           when billing_address_id <> '' then billing_address_id else null
          end as billing_address_id,
          CAST(amount as decimal(20, 10)) invoice_amount,
          ROW_NUMBER() OVER (PARTITION BY billing_event_id, valid_from 
              ORDER BY from_iso8601_timestamp(update_date) desc) 
              as row_num
        from
          billingeventfeed_v1
        where
          -- The Sales Compensation Report does not contain BALANCE 
          -- ADJUSTMENTS, so we filter them out here
          transaction_type <> 'BALANCE_ADJUSTMENT'
          -- Keep only the transactions that will affect any 
          -- future disbursed amounts.
          and balance_impacting = '1'
        )
      where row_num = 1
    ),

    -- Gets the billing address for all DISBURSED invoices. This 
    -- will be the address of the payer when the invoice was paid.
    -- NOTE: For legal reasons, for CPPO transactions, the 
    -- manufacturer will not see the payer's billing address id
    billing_addresses_for_disbursed_invoices as (
      select
        billing_events_raw.transaction_reference_id,
        billing_events_raw.billing_address_id,
        billing_events_raw.from_account_id
      from
        billing_events_with_uni_temporal_data billing_events_raw
      where
        -- the disbursed items will contain the billing address id
        billing_events_raw.action = 'DISBURSED'
        -- we only want to get the billing address id for the 
        -- transaction line items where the seller is the receiver
        -- of the amount
        and billing_events_raw.transaction_type like 'SELLER_%'
      group by
        billing_events_raw.transaction_reference_id,
        billing_events_raw.billing_address_id,
        billing_events_raw.from_account_id
    ),

  -- An invoice can contain multiple line items.
  -- We create a pivot table to calculate the different amounts 
  -- that are part of an invoice.
  -- The new row is aggregated at 
  -- transaction_reference_id - end_user_account_id level
  invoiced_and_forgiven_transactions as (
    select
      transaction_reference_id,
      product_id,
      -- A transaction will have the same invoice date for all 
      -- of its line items (transaction types)
      max(invoice_date) as invoice_date,
      -- A transaction will have the same billing_address_id 
      -- for all of its line items. Remember that the billing event
      -- is uni temporal and we retrieved only the latest valid_from item
      max(billing_address_id) as billing_address_id,
      --  A transaction will have the same currency for all 
      -- of its line items
      max(currency) as currency,
      -- We're building a pivot table in order to provide all the 
      -- data related to a transaction in a single row
      sum(case when transaction_type = 'SELLER_REV_SHARE' 
            then invoice_amount else 0 end) as seller_rev_share,
      sum(case when transaction_type = 'AWS_REV_SHARE' 
            then invoice_amount else 0 end) as aws_rev_share,
      sum(case when transaction_type = 'SELLER_REV_SHARE_REFUND' 
            then invoice_amount else 0 end) as seller_rev_refund,
      sum(case when transaction_type = 'AWS_REV_SHARE_REFUND' 
            then invoice_amount else 0 end) as aws_rev_refund,
      sum(case when transaction_type = 'SELLER_REV_SHARE_CREDIT' 
            then invoice_amount else 0 end) as seller_rev_credit,
      sum(case when transaction_type = 'AWS_REV_SHARE_CREDIT' 
            then invoice_amount else 0 end) as aws_rev_credit,
      sum(case when transaction_type = 'SELLER_TAX_SHARE' 
            then invoice_amount else 0 end) as seller_tax_share,
      sum(case when transaction_type = 'SELLER_TAX_SHARE_REFUND' 
            then invoice_amount else 0 end) as seller_tax_refund,
      -- this is the account that pays the invoice.
      max(case
        -- Get the payer of the invoice from any transaction type 
        -- that is not AWS and not BALANCE_ADJUSTMENT.
        -- For AWS and BALANCE_ADJUSTMENT, the billing event feed 
        -- will show the "AWS Marketplace" account as the
        -- receiver of the funds and the seller as the payer. We 
        -- are not interested in this information here.
        when
         transaction_type not like '%AWS%' 
           and transaction_type not like 'BALANCE_ADJUSTMENT' 
         then from_account_id
       end) as payer_account_id,
      -- this is the account that subscribed to your product
      end_user_account_id as customer_account_id
    from
      billing_events_with_uni_temporal_data
    where
      -- Get invoiced or forgiven items. Disbursements are 
      -- not part of the sales compensation report
      action in ('INVOICED', 'FORGIVEN')
    group by
      transaction_reference_id,
      product_id,
      -- There might be a different end-user for the same 
      -- transaction reference id. Distributed licenses 
      -- is an example.
      end_user_account_id
),

invoiced_items_with_product_and_billing_address as (
  select
    invoice_amounts.*,
    products.product_code,
    products.title,
    payer_info.aws_account_id as payer_aws_account_id,
    payer_info.account_id as payer_reference_id,
    customer_info.aws_account_id as end_user_aws_account_id,
    (
        invoice_amounts.seller_rev_share +
        invoice_amounts.aws_rev_share +
        invoice_amounts.seller_rev_refund +
        invoice_amounts.aws_rev_refund +
        invoice_amounts.seller_rev_credit +
        invoice_amounts.aws_rev_credit +
        invoice_amounts.seller_tax_share +
        invoice_amounts.seller_tax_refund
    ) as seller_net_revenue,
    -- Try to get the billing address from the DISBURSED event 
    -- (if any). If there is no DISBURSEMENT, get the billing 
    -- address from the INVOICED item. If still no billing address, 
    -- then default to getting the mailing address of the payer.
    coalesce(billing_add.billing_address_id, 
             invoice_amounts.billing_address_id, 
             payer_info.mailing_address_id) 
          as final_billing_address_id
  from
    invoiced_and_forgiven_transactions invoice_amounts
    join products_with_latest_revision products 
        on products.product_id = invoice_amounts.product_id
    left join accounts_with_history payer_info 
        on payer_info.account_id = invoice_amounts.payer_account_id
          -- Get the Payer Information at the time of invoice creation
          and payer_info.begin_date <= invoice_amounts.invoice_date 
          and invoice_amounts.invoice_date < payer_info.end_date
    left join accounts_with_history customer_info 
        on customer_info.account_id = invoice_amounts.customer_account_id
          -- Get the End User Information at the time of invoice creation
          and customer_info.begin_date <= invoice_amounts.invoice_date 
          and invoice_amounts.invoice_date < customer_info.end_date
    left join billing_addresses_for_disbursed_invoices billing_add 
        on billing_add.transaction_reference_id = 
           invoice_amounts.transaction_reference_id
        and billing_add.from_account_id = 
            invoice_amounts.payer_account_id
),

invoices_with_full_address as (
  select
    payer_aws_account_id as "Customer AWS Account Number",
    pii_data.country as "Country",
    pii_data.state_or_region as "State",
    pii_data.city as "City",
    pii_data.postal_code as "Zip Code",
    pii_data.email_domain as "Email Domain",
    product_code as "Product Code",
    title as "Product Title",
    seller_rev_share as "Gross Revenue",
    aws_rev_share as "AWS Revenue Share",
    seller_rev_refund as "Gross Refunds",
    aws_rev_refund as "AWS Refunds Share",
    seller_net_revenue as "Net Revenue",
    currency as "Currency",
    date_format(invoice_date, '%Y-%m')as "AR Period",
    transaction_reference_id as "Transaction Reference ID",
    payer_reference_id as "Payer Reference ID",
    end_user_aws_account_id as "End Customer AWS Account ID"
  from
    invoiced_items_with_product_and_billing_address invoice_amounts
    left join pii_with_latest_revision pii_data 
        on pii_data.aws_account_id = invoice_amounts.payer_aws_account_id
        and pii_data.address_id = invoice_amounts.final_billing_address_id
    -- Filter out FORGIVEN and Field Demonstration Pricing transactions
    where seller_net_revenue <> 0
)

select * from invoices_with_full_address;
```

# Feeds de dados
<a name="data-feeds"></a>

AWS Marketplace fornece vários feeds de dados para ajudar os vendedores a coletar e analisar informações sobre as vendas de seus produtos. Os feeds de dados estão disponíveis para todos os AWS Marketplace vendedores registrados. Como os feeds de dados são gerados em um dia, eles contêm os dados mais atuais disponíveis.

As seções a seguir descrevem cada feed de dados.

**Topics**
+ [Feed de dados da conta](data-feed-account.md)
+ [Feed de dados do endereço](data-feed-address.md)
+ [Feed de dados de contratos](data-feed-agreements.md)
+ [Feed de dados de cobrança do contrato](data-feed-agreement-charge.md)
+ [Feed de dados do termo do contrato](data-feed-agreement-term.md)
+ [Feed de dados do evento de faturamento](data-feed-billing-event.md)
+ [Feed de dados de uso diário](data-feed-daily-usage.md)
+ [Feed de dados do mapeamento legado](data-feed-legacy-mapping.md)
+ [Feed de dados da oferta](data-feed-offer.md)
+ [Feed de dados do produto da oferta](data-feed-offer-product.md)
+ [Feed de dados de destino da oferta](data-feed-offer-target.md)
+ [Feed de dados do produto](data-feed-product.md)
+ [Feed de dados do item fiscal](data-feed-tax-item.md)

# Feed de dados da conta
<a name="data-feed-account"></a>

Este feed de dados fornece informações sobre todas as contas com as quais você interage: a sua própria, as contas de todos os parceiros de canal com quem você trabalha, compradores, pagantes e todas as tributadas. 

Os dados da conta são imutáveis e não estão associados a um número de versão. Alterações nos campos são anexadas, portanto, esse feed de dados pode ter várias linhas com os mesmos valores `account_id` e valores `valid_from` diferentes. Para obter informações sobre os campos de histórico de dados, consulte [Historização dos dados](data-feed-details.md#data-feed-historization).

O feed de dados da conta é atualizado a cada 24 horas, para que novos dados estejam disponíveis diariamente.

A tabela a seguir explica os nomes e as descrições das colunas do feed de dados. 


| Nome da coluna  | Descrição  | 
| --- | --- | 
| account\$1id  | O identificador exclusivo global (GUID) da conta. Pode ser usado para entrar em campos nos feeds de dados `Product`, `Offer_Target`, `Billing_Event` e `Tax_Item`. Consulte esses feeds de dados para obter informações sobre os campos que podem ser usados para entrar. | 
| aws\$1account\$1id  | O número da conta da AWS do vendedor, que é exclusivo por partição da AWS.  | 
| encrypted\$1account\$1id | O ID exclusivo e criptografado de um comprador individual do aplicativo. O valor para encrypted\$1account\$1id é usado pelo Serviço de medição do AWS Marketplace, por exemplo, como o valor para CustomerIdentifier que é retornado pela ação [https://docs.aws.amazon.com/marketplacemetering/latest/APIReference/API_ResolveCustomer.html](https://docs.aws.amazon.com/marketplacemetering/latest/APIReference/API_ResolveCustomer.html).  | 
| mailing\$1address\$1id | A referência do endereço de correspondência para esta conta. | 
| tax\$1address\$1id | A referência do endereço fiscal para esta conta. | 
| tax\$1registration\$1number | Para contas fora dos EUA, o número de registro de imposto para esta conta.  | 
| tax\$1legal\$1name | Para contas fora dos EUA, o nome legal da empresa. Este é o nome usado nas faturas fiscais. | 

## Exemplo de feed de dados da conta
<a name="data-feed-account-sample-data"></a>

Veja a seguir um exemplo do feed de dados da conta. Para facilitar a leitura, as colunas do histórico de dados não são exibidas. Para obter informações sobre os campos de histórico de dados, consulte [Historização dos dados](data-feed-details.md#data-feed-historization).


| account\$1id  | aws\$1account\$1id  | encrypted\$1account\$1id | mailing\$1address\$1id | tax\$1address\$1id | tax\$1registration\$1number | tax\$1legal\$1name | 
| --- | --- | --- | --- | --- | --- | --- | 
| xk0CSmiAm6PQ4QqEog9iiaochIzuPlkMfba7a1oDlZ | 444456660000 | Zf7oMzheGWpH | 25o3k46eN6eViOfFiiqtxwX8e3kaOiPalUiofjyFa3 |  |  |  | 
| 7nyo5jwTRoPlyX81vx9ji04eEwTurO1Ff8biQi88W8 | 555567679999 | 373vuQUqmQ8v | 5oJ6vTjSzMrrF2gvh2Vj9HfqiM800MuLEHmyFY5Lr42s8 | 5oJ6vTjSzMrrF2gvh2Vj9HfqiM800MuLEHmyFY5Lr42s8 | SE823935083345 |  | 
| VIeGa2t9j3MuxioH9wc8lsndXXCgGCGUreeXriocM5 | 73739998888 | 8SPxAYmi8MwX | NLUc5UeiMlGFTrDWCoftDPhDUF1oaSd8xgl5QM8Db7 | V5NhBYBiYogwy0WMhndGU4AfMggmuoTC2j7Pm8ZKKNNyT | DE469558025 |  | 

# Feed de dados do endereço
<a name="data-feed-address"></a>

**Importante**  
O AWS Marketplace interromperá o PIIFeed, que é entregue usando o [serviço de feeds de dados de entrega do vendedor](https://docs.aws.amazon.com/marketplace/latest/userguide/data-feed-service.html), em dezembro de 2023. Use o feed de dados AddressFeed\$1v1 para suas necessidades de dados de endereço. Se você tiver dúvidas ou precisar de suporte, entre em contato com a equipe de [Operações do vendedor do AWS Marketplace](https://aws.amazon.com/marketplace/management/contact-us/).

Este feed de dados fornece informações de contato para todas as contas com as quais você interage: a sua própria, as contas de todos os parceiros de canal com quem você trabalha, compradores, pagantes e todas as tributadas. Cada vez que uma nova transação ocorre, o endereço do cliente para a transação é verificado e, se ele não estiver no feed de dados, uma nova entrada será adicionada ao arquivo do feed de dados.

Os dados de endereço são imutáveis. 

O feed de dados do endereço é atualizado a cada 24 horas, para que novos dados estejam disponíveis diariamente.

A tabela a seguir explica os nomes e as descrições das colunas do feed de dados. 


| Nome da coluna  | Descrição  | 
| --- | --- | 
| address\$1id  | A chave exclusiva do endereço. Pode ser usado para entrar no feed de dados `Billing_Event` no campo `billing_address_id` ou no feed de dados `Account` nos campos `mailing_address_id` ou `tax_address_id`. | 
| email\$1domain  | O domínio do endereço de e-mail registrado para esta conta.  | 
| company\$1name  | O nome da empresa registrado para esta conta.  | 
| country\$1code | O código de país alpha-2 do ISO 3166 registrado para este endereço.  | 
| state\$1or\$1region  | O estado ou a região registrada para este endereço.  | 
| city  | A cidade registrada para este endereço.  | 
| postal\$1code  | O código postal registrado para este endereço.  | 
| address\$1line\$11  | A primeira linha do endereço registrada para este endereço.  | 
| address\$1line\$12  | A segunda linha do endereço registrada para este endereço.  | 
| address\$1line\$13  | A terceira linha do endereço registrada para este endereço.  | 

## Exemplo de feed de dados do endereço
<a name="data-feed-address-sample-data"></a>

Veja a seguir um exemplo do feed de dados do endereço. No feed de dados, essa informação é apresentada em uma única tabela. Por motivo de legibilidade, os dados são exibidos em duas tabelas aqui e as colunas do histórico de dados não são exibidas. Para obter informações sobre os campos de histórico de dados, consulte [Historização dos dados](data-feed-details.md#data-feed-historization). 


| address\$1id  | email\$1domain  | company\$1name  | country\$1code  | state\$1or\$1region  | city  | postal\$1code  | 
| --- | --- | --- | --- | --- | --- | --- | 
| V5NhBYBiYogwy0WMhndGU4AfMggmuoTC2j7Pm8ZKKNNyT | a.com | Empresa de Mateo Jackson | DE |  | Hamburgo | 67568 | 
| G68xdbkZQDVVHzfBGw6yf5yos0A6NiSVWHmH5ViLjf | b.com | Empresa de Mary Major | EUA | OH | Dayton | 57684 | 
| NLUc5UeiMlGFTrDWCoftDPhDUF1oaSd8xgl5QM8Db7 | c.com | Nosso vendedor | EUA | NY | Nova York | 89475 | 




| address\$1line\$11  | address\$1line\$12  | address\$1line\$13  | 
| --- | --- | --- | 
|   |   |  | 
|  |   |  | 
|  | 19º andar |  | 



# Feed de dados de contratos
<a name="data-feed-agreements"></a>

Esse feed de dados fornece informações sobre contratos, que é um contrato assinado entre um proponente (vendedor registrado) e um aceitante (AWS comprador) para começar a usar um produto. Este feed de dados fornece informações sobre todos os contratos das ofertas de produtos que você criou como vendedor de registro.

O feed de dados do Contrato é atualizado a cada 24 horas.

A tabela a seguir lista e descreve itens no feed de dados.


| Coluna | Description | 
| --- | --- | 
| valid\$1from | A primeira data em que o valor da chave primária é válido em relação aos valores de outros campos. | 
| insert\$1date | A data em que um registro foi inserido no feed de dados. | 
| update\$1date | A data em que o registro foi atualizado pela última vez. | 
| delete\$1date | Esta coluna fica sempre em branco. | 
| Status |  O status atual do contrato. Os status aceitos incluem: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/data-feed-agreements.html)  | 
| estimated\$1agreement\$1value | O valor total conhecido que o cliente provavelmente pagará durante todo o ciclo de vida do contrato. | 
| currency\$1code | A moeda do valor total conhecido que o cliente provavelmente pagará durante todo o ciclo de vida do contrato. | 
| agreement\$1id | O identificador exclusivo do acordo. | 
| license\$1ids | Os identificadores de licença associados ao contrato, representados como uma matriz. | 
| proposer\$1account\$1id | O vendedor que propôs isso PurchaseAgreement, representado pelo identificador global exclusivo (GUID) da conta do vendedor. Pode ser usado para entrar no feed de dados da Conta. | 
| acceptor\$1account\$1id | O comprador que aceitou isso PurchaseAgreement, representado pelo identificador exclusivo global (GUID) da conta do comprador. Pode ser usado para entrar no feed de dados da Conta. | 
| offer\$1revision\$1at\$1acceptance | O ID amigável da oferta que corresponde a este contrato. Pode ser usado para se juntar aos feeds de dados de destino da Oferta e da Oferta. | 
| ID do conjunto de ofertas | O identificador do conjunto de ofertas associado à oferta. | 
| start\$1time | A data e hora de início do contrato. | 
| end\$1time | A data e hora de fim do contrato. O campo é nulo para pay-as-you-go contratos, que não têm datas de término. | 
| acceptance\$1time | A data em que você aceitou a oferta e quando o contrato foi criado. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/data-feed-agreements.html)  | 
| intent | A intenção do comprador quando o contrato foi modificado pela última vez. | 
| preceding\$1agreement\$1id | O ID do contrato anterior. | 
| status\$1reason\$1code | O motivo da mudança de status do contrato. | 
| ID da conta do destinatário | A conta do vendedor que está recebendo os dados nos feeds. Pode ser usado para entrar no feed de dados `Account` no campo `account_id`. | 

## Exemplo de feed de dados de contratos
<a name="agreements-feed-example"></a>


| valid\$1from | agreement\$1id | proposer\$1account\$1id | acceptor\$1account\$1id | offer\$1id | offer\$1revision\$1at\$1acceptance | ID do conjunto de ofertas | start\$1time | end\$1time | acceptancet\$1time | intent | preceding\$1agreement\$1id | status | status\$1reason\$1code | estimated\$1agreement\$1value | currency\$1code | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| 2024-06-21 20:58:00.0 | agmt-34g544dfgsd5678adsrgwe5t | 88a3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | 88a3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | offer-krxxxxxxxxxxx | 1 | offerset-yricpu74oqox2 | 2024-06-21 20:58:00.0 | 2025-06-21 20:58:00.0 | 2024-06-21 20:58:00.0 | NOVO |  | ATIVO |  | 1.000 | USD | 

# Feed de dados de cobrança do contrato
<a name="data-feed-agreement-charge"></a>

Esse feed de dados fornece uma visão geral sobre a cobrança associada a um contrato criado por você como vendedor registrado. Atualmente, esse feed de dados fornece apenas informações de cobrança para contratos associados a um termo de cronograma de pagamento.

O feed de dados do Agreement Charge é atualizado a cada 24 horas.

A tabela a seguir lista e descreve itens no feed de dados.


| Coluna | Description | 
| --- | --- | 
| valid\$1from | A primeira data em que o valor da chave primária é válido em relação aos valores de outros campos. | 
| insert\$1date | A data em que um registro foi inserido no feed de dados. | 
| update\$1date | A data em que o registro foi atualizado pela última vez. | 
| delete\$1date | Esta coluna fica sempre em branco. | 
| valor | O valor a ser cobrado. | 
| currency\$1code | A moeda de preço do pagamento. | 
| horário | A data de cobrança programada para a parcela planejada. | 
| agreement\$1id | O identificador exclusivo do acordo. | 
| term\$1id | O identificador exclusivo do termo. | 

## Exemplo de feed de dados do Agreement Charge
<a name="agreement-charge-feed-example"></a>


| valid\$1from | insert\$1date | update\$1date | delete\$1date | valor | currency\$1code | horário | agreement\$1id | term\$1id | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| 2024-12-24 11:31:47.0 | 2025-10-01 01:03:41.0 | 2025-10-01 01:03:41.0 | nulo | 28440,00 | USD | 2025-11-06 00:00:00.000 000 | AGMT-3KK39TBW3J6ID2VAKBP0XXXXX | TERMO-3986E2C7F73768ED4FF7CD8A97B41AC0AE2AA02ADA6B68DEB9349C8604CXXXXXX | 

# Feed de dados do termo do contrato
<a name="data-feed-agreement-term"></a>

Esse feed de dados fornece uma visão geral sobre o termo do contrato associado a um contrato criado por você como vendedor registrado.

O feed de dados do Termo do Contrato é atualizado a cada 24 horas.

A tabela a seguir lista e descreve itens no feed de dados.


| Coluna | Description | 
| --- | --- | 
| valid\$1from | A primeira data em que o valor da chave primária é válido em relação aos valores de outros campos. | 
| insert\$1date | A data em que um registro foi inserido no feed de dados. | 
| update\$1date | A data em que o registro foi atualizado pela última vez. | 
| delete\$1date | A data em que o registro foi excluído. | 
| agreement\$1id | O identificador exclusivo do acordo. | 
| term\$1id | O identificador exclusivo do termo. | 
| tipo\$1termo | O tipo de termo associado ao contrato. Consulte https://docs.aws.amazon.com/marketplace/ latest/APIReference/API \$1Types\$1 AWS\$1M arketplace\$1Agreement\$1Service.html para obter uma lista completa dos termos disponíveis. | 
| configuração\$1termo | Os parâmetros adicionais especificados pelo aceitante ao aceitar o termo. Isso é aplicável para ConfigurableUpfrontPricingTerms RenewalTerms e. | 

## Exemplo de feed de dados do termo do contrato
<a name="agreement-term-feed-example"></a>


| valid\$1from | insert\$1date | update\$1date | delete\$1date | agreement\$1id | term\$1id | tipo\$1termo | configuração\$1termo | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| 2024-12-24 11:31:47.0 | 2025-10-01 01:03:41.0 | 2025-10-01 01:03:41.0 | nulo | AGMT-3KK39TBW3J6ID2VAKBP0XXXXX | TERMO-3986E2C7F73768ED4FF7CD8A97B41AC0AE2AA02ADA6B68DEB9349C8604CXXXXXX | ConfigurableUpfrontPricingTerm | \$1"selectorValue” :"P36M”, "dimensions”: [\$1"dimensionKey” :"Aplicativos”, "dimensionValue” :1\$1]\$1 | 

# Feed de dados do evento de faturamento
<a name="data-feed-billing-event"></a>

Este feed de dados fornece informações sobre eventos de faturamento, inclusive faturamento e desembolsos. 

Por exemplo, você pode usar esse feed de dados para saber quando e qual comprador é cobrado. Também é possível usar o [exemplo de consultas SQL](#data-feeds-billing-event-query-examples) para analisar os dados desse feed de dados.

Este feed de dados contém informações associadas a eventos de faturamento dos quais você é o vendedor do registro. Para acordos feitos por meio de parceiros de canal, este feed de dados contém informações sobre eventos de faturamento entre o fabricante e o vendedor do registro.

O feed de dados do evento de faturamento é atualizado a cada 24 horas, para que novos dados estejam disponíveis diariamente.

Os dados dos eventos de faturamento são imutáveis. 

A tabela a seguir explica os nomes e as descrições das colunas do feed de dados. 


| Nome da coluna  | Description  | 
| --- | --- | 
| billing\$1event\$1id | Um identificador de um evento de faturamento. Este ID é exclusivo no ambiente do vendedor.  | 
| from\$1account\$1id |  A conta que iniciou o evento de faturamento. Se `transaction_type` for `SELLER_REV_SHARE`, é a conta pagante do comprador. Esta é uma chave externa para o feed de dados da [conta](data-feed-account.md). Pode ser usado para entrar no feed de dados `Account` no campo `account_id`.  | 
| to\$1account\$1id | A conta que recebe o valor da transação do produto. Esta é uma chave externa para o feed de dados da conta.Pode ser usado para entrar no feed de dados `Account` no campo `account_id`. | 
| end\$1user\$1account\$1id | A conta que usa o produto. Esta conta pode ser diferente das contas pagante e do comprador.Pode ser usado para entrar no feed de dados `Account` no campo `account_id`. | 
| product\$1id | O identificador do produto. Esta é uma chave externa para o feed de dados do [produto](data-feed-product.md).Pode ser usado para entrar no feed de dados `Product` no campo `product_id`. | 
| ação |  O tipo de ação para este evento. Os valores possíveis são: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/data-feed-billing-event.html)  | 
| transaction\$1type |  O tipo de transação. Para obter exemplos, consulte [Cenários de tributação](#data-feeds-billing-event-tax-examples). Os valores possíveis são:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/data-feed-billing-event.html)  | 
| parent\$1billing\$1event\$1id |  Quando o valor de `broker_id` é `AWS_INC`, o valor de `action` é `DISBURSED` ou `FORGIVEN` e o valor de `transaction_type` é `DISBURSEMENT`, o `parent_billing_event_id` se refere ao `billing_event_id` original que iniciou esse evento de cobrança. Se `action` tiver outro valor, este campo será nulo.  Quando o valor de `broker_id` é `AWS_EUROPE`, o `parent_billing_event_id` se refere ao `billing_event_id` original que iniciou esse evento de cobrança para os seguintes cenários:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/data-feed-billing-event.html) Quando o valor de `broker_id` é `AWS_EUROPE`, o `parent_billing_event_id` se refere ao `billing_event_id` original do evento anterior de cobrança de desembolso bem-sucedido para o seguinte cenário: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/data-feed-billing-event.html) Quando o valor de `broker_id` é `AWS_EUROPE`, esse campo é nulo para todos os cenários restantes.  | 
| disbursement\$1billing\$1event\$1id |  O desembolso relacionado quando o valor de `action` é `DISBURSED` e um dos seguintes aspectos é verdadeiro:  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/data-feed-billing-event.html) Em todos os outros cenários, esse valor é nulo.  | 
| valor | O valor do evento de faturamento.  | 
| currency | O código da moeda no formato ISO 639. | 
| disbursement\$1amount | O valor do pagamento. Para cenários de faturamento duplo, esse campo contém o valor do pagamento. Para cenários de faturamento unificado, esse campo é nulo. | 
| disbursement\$1currency | O código de moeda ISO 639 para o valor do pagamento. Para cenários de faturamento duplo, esse campo contém o código da moeda de pagamento. Para cenários de faturamento unificado, esse campo é nulo. | 
| balance\$1impacting | Se o valor é levado em conta no cálculo dos desembolsos do vendedor. Um valor de 0 indica que o valor é exibido para fins informativos e não tem efeito sobre o saldo. Um valor de 1 indica que esse valor é considerado na determinação dos desembolsos do vendedor.  | 
| invoice\$1date | A data em que a fatura foi criada. | 
| payment\$1due\$1date |  Quando o valor de `action` é `INVOICED`, a data de vencimento da fatura.  | 
| usage\$1period\$1start\$1date | A data inicial do período no registro. | 
| usage\$1period\$1end\$1date | A data final do período no registro. | 
| invoice\$1id |  O ID da AWS fatura.  | 
| billing\$1address\$1id | A referência do endereço de faturamento do pagante no feed de dados do endereço.Pode ser usado para entrar no feed de dados `Address` no campo `address_id`. | 
| transaction\$1reference\$1id |  Um identificador que permite que você faça referência cruzada de dados dos seguintes relatórios: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/data-feed-billing-event.html)  | 
| bank\$1trace\$1id |  Para transações de desembolso (`transaction_type` é `DISBURSEMENT` e a ação é `DISBURSED`), o ID de rastreamento atribuído pelo banco. O ID de rastreamento pode ser usado para correlacionar com relatórios fornecidos pelo banco do vendedor.  | 
| broker\$1id |  Um identificador da entidade comercial que facilitou a transação. Os valores possíveis são: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/data-feed-billing-event.html)  | 
| buyer\$1transaction\$1reference\$1id |  Um identificador que agrupa todos os registros relacionados no feed de faturamento usando `GROUP BY` ou a estrutura de funções de janela em SQL. Esses registros relacionados podem conter a fatura do comprador, a fatura do vendedor e os impostos sobre valor agregado (VATs) sobre a taxa do anúncio.  | 
| data\$1ação |  A data em que o evento da transação ocorreu. A data específica depende do tipo de ação: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/data-feed-billing-event.html)  | 
| ID da conta do destinatário | A conta do vendedor que está recebendo os dados nos feeds. Pode ser usado para entrar no feed de dados `Account` no campo `account_id`. | 
| offer\$1id | A ID amigável da oferta associada ao item da linha da fatura do comprador.Pode ser usado para entrar no feed de dados `Offer` no campo `offer_id`. | 
| data\$1factura\$1do\$1comprador | A data da fatura do item de linha da fatura do comprador associado. | 
| line\$1item\$1id | O ID do item da linha da fatura, na granularidade do desembolso. | 
| ID do item de linha do comprador | O ID do item da linha da fatura do comprador na granularidade do desembolso. | 
| variante\$1de\$1carga | Indica o que está sendo comprado ou vendido.  | 
| lado da carga | Indica se o vendedor está comprando ou vendendo a variante de cobrança.  | 

## Cenários de tributação
<a name="data-feeds-billing-event-tax-examples"></a>

O modelo de tributação que está em vigor para o país e o estado do comprador e do vendedor determina como os impostos são cobrados e enviados. Veja a seguir os cenários possíveis:
+ Os impostos são coletados e remetidos por AWS. Nestes casos, o `transaction_type` é `AWS_TAX_SHARE`. 
+ Os impostos são cobrados pelo vendedor AWS, desembolsados e enviados pelo vendedor às autoridades fiscais. Nestes casos, o `transaction_type` é `SELLER_TAX_SHARE`.
+ Os impostos não são cobrados por AWS. O vendedor deve calcular os impostos e enviá-los para as autoridades fiscais. Nesses casos, AWS Marketplace não realiza cálculos tributários nem recebe informações tributárias. O vendedor paga os impostos da participação na receita.

## Exemplos de feed de dados do evento de faturamento
<a name="data-feed-billing-event-sample-scenario"></a>

Esta seção mostra exemplos do período de dados do evento de faturamento no momento do faturamento e um mês depois. Observe o seguinte em todas as tabelas nesta seção: 
+ Em feeds de dados, os valores `billing_event_id` são strings alfanuméricas de 40 caracteres. Eles são mostrados aqui como strings de dois caracteres por motivo de legibilidade. 
+ No feed de dados, essa informação é apresentada em uma única tabela. Para fins de legibilidade, os dados são mostrados em várias tabelas aqui, e as colunas não são mostradas. 

Para os exemplos nesta seção, suponha o seguinte: 
+ Arnav é comprador.
  + O ID da conta dele é `737399998888`.
  + Ele está na França, que é sujeita às leis de facilitadores do mercado. Para obter mais informações, consulte [Ajuda com impostos da Amazon Web Service](https://aws.amazon.com/tax-help/).
  + Ele comprou `prod-o4grxfafcxxxx` e foi cobrado no valor de 120,60 USD pelo uso mensal desse produto.
  + Ele pagou a fatura dentro de um mês.
+ Jane é fabricante.
  + O ID da conta dela é `111122223333`.
+ Paulo é vendedor de registros.
  + O ID da conta dele é `777788889999`. 
  + Ele mora no Kansas, que não está sujeito às leis de facilitadores do mercado. 

### Feed de dados do evento de faturamento para o vendedor de registro
<a name="billing-event-example-seller-of-record"></a>

Como vendedor de registro, Paulo cobra o comprador, Arnav. 

As tabelas a seguir mostram as informações relevantes no feed de dados de Paulo quando ele cobra Arnav.


| billing\$1event\$1id  | from\$1account\$1id  | to\$1account\$1id  | end\$1user\$1account\$1id | product\$1id | action | transaction\$1type | 
| --- | --- | --- | --- | --- | --- | --- | 
| I0 | 737399998888 | 777788889999 | 737399998888 | prod-o4grxfafcxxxx | FATURADO | SELLER\$1REV\$1SHARE | 
| I1 | 737399998888 | AWS | 737399998888 | prod-o4grxfafcxxxx | FATURADO | AWS\$1TAX\$1COMPARTILHAR | 
| I2 | 777788889999 | 111122223333 | 737399998888 | prod-o4grxfafcxxxx | FATURADO | SELLER\$1REV\$1SHARE | 
| I3 | 777788889999 | AWS | 737399998888 | prod-o4grxfafcxxxx | FATURADO | AWS\$1REV\$1COMPARTILHAR | 




| parent\$1billing\$1event\$1id | disbursement\$1billing\$1event\$1id | amount | currency | invoice\$1date | invoice\$1id | 
| --- | --- | --- | --- | --- | --- | 
|  |  | 100 | USD | 2018-12-31T00:00:00Z | 781216640 | 
|  |  | 20.6 | USD | 2018-12-31T00:00:00Z | 781216640 | 
|  |  | -80 | USD | 2018-12-31T00:04:07Z | 788576665 | 
|  |  | -0.2 | USD | 2018-12-31T00:04:07Z | 788576665 | 

As tabelas a seguir mostram as informações relevantes no feed de dados de Paulo no final do mês, após Arnav fazer o pagamento da fatura.


| billing\$1event\$1id  | from\$1account\$1id  | to\$1account\$1id  | end\$1user\$1account\$1id | product\$1id | action | transaction\$1type | 
| --- | --- | --- | --- | --- | --- | --- | 
| I10 | 737399998888 | 777788889999 | 737399998888 |  | PAGO | SELLER\$1REV\$1SHARE | 
| I12 | 777788889999 | 111122223333 | 737399998888 |  | PAGO | SELLER\$1REV\$1SHARE | 
| I13 | 777788889999 | AWS | 737399998888 | prod-o4grxfafcxxxx | PAGO | AWS\$1REV\$1COMPARTILHAR | 
| I14 | AWS | 777788889999 |  |  | PAGO | DESEMBOLSO | 




| parent\$1billing\$1event\$1id | disbursement\$1billing\$1event\$1id | amount | currency | invoice\$1date | invoice\$1id | 
| --- | --- | --- | --- | --- | --- | 
| I0 | I14 | -100 | USD | 2018-12-31T00:00:00Z | 781216640 | 
| I2 | I14 | 80 | USD | 2018-12-31T00:04:07Z | 788576665 | 
| I3 | I14 | 0.2 | USD | 2018-12-31T00:04:07Z | 788576665 | 
|  |  | 19.8 | USD |  |  | 

### Feed de dados do evento de faturamento para o fabricante
<a name="billing-event-example-manufacturer"></a>

As tabelas a seguir mostram as informações relevantes no feed de dados de Jane quando Paulo cobra Arnav.


| billing\$1event\$1id  | from\$1account\$1id  | to\$1account\$1id  | end\$1user\$1account\$1id | product\$1id | action | transaction\$1type | 
| --- | --- | --- | --- | --- | --- | --- | 
| I5 | 777788889999 | 111122223333 |  | prod-o4grxfafcxxxx | FATURADO | SELLER\$1REV\$1SHARE | 
| I6 | 777788889999 | 111122223333 |  | prod-o4grxfafcxxxx | FATURADO | SELLER\$1TAX\$1SHARE | 
| I7 | 111122223333 | AWS |  | prod-o4grxfafcxxxx | FATURADO | AWS\$1REV\$1COMPARTILHAR | 




| parent\$1billing\$1event\$1id | disbursement\$1billing\$1event\$1id | amount | currency | invoice\$1date | invoice\$1id | 
| --- | --- | --- | --- | --- | --- | 
|  |  | 73.5 |  | 2018-12-31T00:04:07Z | 788576665 | 
|  |  | 6.5 |  | 2018-12-31T00:04:07Z | 788576665 | 
|  |  | -7.35 |  | 2018-12-31T00:04:07Z | 788576665 | 

As tabelas a seguir mostram as informações relevantes no feed de dados de Jane no final do mês, após o pagamento da fatura.


| billing\$1event\$1id  | from\$1account\$1id  | to\$1account\$1id  | end\$1user\$1account\$1id | product\$1id | action | transaction\$1type | 
| --- | --- | --- | --- | --- | --- | --- | 
| I30 | 777788889999 | 111122223333 |  | prod-o4grxfafcxxxx | PAGO | SELLER\$1REV\$1SHARE | 
| I31 | 777788889999 | 111122223333 |  | prod-o4grxfafcxxxx | PAGO | SELLER\$1TAX\$1SHARE | 
| I32 | 111122223333 | AWS |  | prod-o4grxfafcxxxx | PAGO | AWS\$1REV\$1COMPARTILHAR | 
| I33 | AWS | 111122223333 |  |  | PAGO | DESEMBOLSO | 




| parent\$1billing\$1event\$1id | disbursement\$1billing\$1event\$1id | amount | currency | invoice\$1date | invoice\$1id | 
| --- | --- | --- | --- | --- | --- | 
| I5 | I33 | -73.5 | USD |  |  | 
| I6 | I33 | -6.5 | USD |  |  | 
| I7 | I33 | 7.35 | USD |  |  | 
|  |  | 72.65 | USD |  |  | 

## Consultas de exemplo
<a name="data-feeds-billing-event-query-examples"></a>

Conforme descrito em [Coletar e analisar dados com feeds de dados](data-feed-using.md), é possível usar o [Athena](https://docs.aws.amazon.com/athena/latest/ug/what-is.html) para executar consultas nos dados coletados e armazenados como feeds de dados no bucket gerenciado do Amazon S3. Esta seção fornece alguns exemplos de maneiras comuns de fazer isso. Todos os exemplos partem do princípio de que é utilizada uma moeda única.

## Exemplo 1: valor faturado, incluindo impostos
<a name="data-feed-example-query-tax-invoice"></a>

Para descobrir o valor da cobrança dos compradores, incluindo impostos, é possível executar uma consulta como a mostrada no exemplo a seguir. 

```
SELECT sum(amount) FROM billing_event 
WHERE 
  action = 'INVOICED'
  AND
  (
    (transaction_type in ('SELLER_REV_SHARE', 'SELLER_TAX_SHARE')
      -- to discard SELLER_REV_SHARE from Manufacturer to Channel Partner, aka cost of goods
      AND to_account_id='seller-account-id'
    )
  OR transaction_type= 'AWS_TAX_SHARE'
  );
```

## Exemplo 2: valor faturado aos compradores em nome do vendedor
<a name="data-feed-example-query-invoice-for-seller"></a>

Para descobrir o valor da cobrança dos compradores em nome de um vendedor, é possível executar uma consulta como a mostrada no exemplo a seguir.

```
SELECT sum(amount) FROM billing_event 
WHERE
  action = 'INVOICED'
  AND transaction_type in ('SELLER_REV_SHARE', 'SELLER_TAX_SHARE')
  AND to_account_id='seller-account-id'
;
```

## Exemplo 3: O valor AWS pode ser cobrado em nome do vendedor
<a name="data-feed-example-query-aws-collect"></a>

Para descobrir quanto AWS posso cobrar em nome de um vendedor, menos reembolsos, créditos e contas perdoadas, você pode executar uma consulta conforme mostrado no exemplo a seguir.

```
SELECT sum(amount) FROM billing_event 
WHERE
  -- what is invoiced on behalf of SELLER, incl. refunds/ credits and cost of goods
  transaction_type like 'SELLER_%' 
  -- FORGIVEN action records will "negate" related INVOICED
  and action in ('INVOICED','FORGIVEN') 
;
```

## Exemplo 4: valor que o vendedor pode cobrar
<a name="data-feed-example-query-seller-collect"></a>

Para descobrir quanto os vendedores podem cobrar, é possível executar uma consulta como a mostrada no exemplo a seguir. Este exemplo remove as taxas de listagem e os impostos AWS cobrados e adiciona quaisquer ajustes de saldo excepcionais. 

```
SELECT sum(amount) FROM billing_event
WHERE
  (transaction_type like 'SELLER_%' -- what is invoiced on behalf of SELLER
  or transaction_type like 'AWS_REV_%' -- what is owed to AWS
  or transaction_type = 'BALANCE_ADJUSTMENT' -- exceptionnal case
  )
  and action in ('INVOICED','FORGIVEN')
;
```

Você também pode usar a consulta a seguir para coletar as mesmas informações, conforme mostrado no exemplo a seguir.

```
SELECT sum(amount) FROM billing_event
WHERE
  balance_impacting = 1
  and action in ('INVOICED','FORGIVEN')
;
```

O exemplo a seguir mostra as mesmas informações, mas está restrito às transações de 2018 e assume que todos os compradores pagaram suas faturas. 

```
SELECT sum(amount) FROM billing_event
WHERE
  invoice_date between '2018-01-01' and '2018-12-31'
  and balance_impacting = 1
  and action in ('INVOICED','FORGIVEN')
;
```

## Exemplo 5: valor dos desembolsos
<a name="data-feed-example-query-disbursements"></a>

Para descobrir o valor que foi desembolsado, é possível executar uma consulta como a mostrada no exemplo a seguir.

```
select sum(amount) FROM billing_event
WHERE
  action ='DISBURSED'
  and transaction_type like 'DISBURSEMENT%'
;
```

## Exemplo 6: valor pendente para desembolso
<a name="data-feed-example-query-pending-disbursement"></a>

Para descobrir o valor que está pendente para desembolso, é possível executar uma consulta como a mostrada no exemplo a seguir. Essa consulta remove valores que já foram desembolsados. 

```
SELECT sum(amount) FROM billing_event targeted 
WHERE
   (transaction_type like 'SELLER_%'  -- what is invoiced on behalf of SELLER
    or transaction_type like 'AWS_REV_%'  -- what is owed to AWS
    or transaction_type = 'BALANCE_ADJUSTMENT' -- exceptionnal case
   ) 
  -- DISBURSEMENT action records will "negate" 'INVOICED'
  -- but do not take into account failed disbursements
   AND 
    (not exists
      (select 1 
        from billing_event disbursement
          join billing_event failed_disbursement
           on disbursement.billing_event_id=failed_disbursement.parent_billing_event_id
        where
         disbursement.transaction_type='DISBURSEMENT'
         and failed_disbursement.transaction_type='DISBURSEMENT_FAILURE'
         and targeted.disbursement_billing_event_id=disbursement.billing_event_id
      )
    ) 
;
```

Outra maneira de obter as mesmas informações é executar uma consulta para obter o saldo do vendedor, como a mostrada no exemplo a seguir.

```
SELECT sum(amount) FROM billing_event
WHERE
 balance_impacting = 1
;
```

A consulta a seguir estende nosso exemplo. Ela restringe os resultados às transações de 2018 e retorna mais detalhes sobre as transações.

```
select sum(residual_amount_per_transaction)
from
 (SELECT
    max(billed_invoices.amount) invoiced_amount,
    sum(nvl(disbursed_invoices.amount,0)) disbursed_amount,
    -- Exercise left to the reader:
    -- use transaction_type to distinguish listing fee vs seller-owed money
    -- still pending collection
    max(transaction_type) transaction_type,
    max(billed_invoices.amount) 
      + sum(nvl(disbursed_invoices.amount,0)) residual_amount_per_transaction
  FROM billing_event billed_invoices
    -- find related disbursements
    left join billing_event disbursed_invoices
      on disbursed_invoices.action='DISBURSED'
      and disbursed_invoices.parent_billing_event_id=billed_invoices.billing_event_id
  WHERE
    billed_invoices.invoice_date between '2018-01-01' and '2018-12-31'
    and billed_invoices.transaction_type like 'SELLER_%' -- invoiced on behalf of SELLER
    and billed_invoices.action in ('INVOICED','FORGIVEN')
    -- do not take into account failed disbursements
    AND not exists
      (select 1 from billing_event failed_disbursement
       where disbursed_invoices.disbursement_billing_event_id = failed_disbursement.parent_billing_event_id
      )
   GROUP BY billed_invoices.billing_event_id
);
```

## Exemplo 7: saldo do conjunto de faturas
<a name="data-feed-example-query-balance-invoice-set"></a>

Para saber a soma de um conjunto de faturas, é possível executar uma consulta como a mostrada no exemplo a seguir.

```
SELECT invoice_id, sum(amount) FROM billing_event targeted
WHERE
  -- invoice_id is only not null for invoiced records AND disbursed records 
  -- linking them to related disbursement -> no need to filter more precisely
  invoice_id in ('XXX','YYY') 
  -- filter out failed disbursements 
  AND not exists
      (select 1 
        from billing_event disbursement
          join billing_event failed_disbursement
           on disbursement.billing_event_id=failed_disbursement.parent_billing_event_id
        where
         disbursement.transaction_type='DISBURSEMENT'
         and failed_disbursement.transaction_type='DISBURSEMENT_FAILURE'
         and targeted.disbursement_billing_event_id=disbursement.billing_event_id
      ) 
  group by invoice_id;
```

# Feed de dados de uso diário
<a name="data-feed-daily-usage"></a>

Esse feed de dados fornece informações detalhadas de uso diário de seus produtos, incluindo métricas de uso do cliente, receita estimada e detalhes de preços. Os dados ajudam você a monitorar como os clientes estão usando seus produtos e a calcular a receita estimada com base nos padrões de uso.

O feed de dados de uso diário é atualizado a cada 24 horas.

A tabela a seguir lista e descreve itens no feed de dados.


| Coluna | Description | 
| --- | --- | 
| valid\$1from | A primeira data em que o valor da chave primária é válido em relação aos valores de outros campos. | 
| insert\$1date | A data em que um registro foi inserido no feed de dados. | 
| update\$1date | A data em que o registro foi atualizado pela última vez. | 
| delete\$1date | A data em que o registro foi excluído temporariamente. | 
| ID do feed de uso | O identificador exclusivo do registro de uso. Esse é um hash salgado por vendedor que garante a privacidade dos dados e, ao mesmo tempo, mantém a exclusividade do registro. | 
| usage\$1date | A data de uso do cliente, sem o componente de tempo. O tempo é omitido porque o uso é agregado para cada dia. | 
| product\$1id | A identificação amigável do produto. Pode ser usado para unir os `product_id` campos dos feeds de dados Account, Billing\$1Event e Offer\$1Product. | 
| agreement\$1id | O identificador exclusivo do acordo. Se presente, isso sempre começa com`agmnt-`. Esse campo pode ocasionalmente ser nulo ou não corresponder aos itens correspondentes da linha da fatura. | 
| end\$1user\$1account\$1id | A conta que realmente usou o produto, representada pelo identificador global exclusivo (GUID) da conta do usuário final. Pode ser usado para entrar no feed de dados da Conta. Esse é um hash salgado por vendedor, não o ID bruto da conta da AWS. | 
| payer\$1account\$1id | A conta que deve pagar pelo uso do produto, representada pelo identificador global exclusivo (GUID) da conta do pagador. Pode ser usado para entrar no feed de dados da Conta. Esse é um hash salgado por vendedor, não o ID bruto da conta da AWS. | 
| region | A AWS região em que ocorreu o uso do comprador. | 
| chave de dimensão | A chave de dimensão configurada pelo vendedor ao publicar a oferta. | 
| unidade\$1uso | Uma classificação para as unidades de uso, descrevendo o tipo de medida de uso. | 
| usage\$1quantity | O valor de uso do AWS serviço ou tipo de uso associado ao registro de faturamento. O valor é fornecido com até 2 casas decimais. | 
| pricing\$1currency | A moeda da receita estimada. | 
| receita\$1estimada em moeda\$1de\$1precificação | A receita estimada calculada usando `usage_rate_per_unit` `usage_quantity` e. O valor é fornecido com até 2 casas decimais. Para visualizações de ISV sobre o uso de ofertas de revendedores, isso precisa ser multiplicado pela porcentagem de participação na receita. | 
| ID da conta do destinatário | A conta do vendedor que está recebendo os dados nos feeds. | 
| offer\$1id | A identificação amigável da oferta. Isso corresponderá ao offer\$1id do contrato de compra, quando disponível. Pode ser usado para se juntar aos feeds de dados de destino da Oferta e da Oferta. Para fins de consistência, esse campo é sempre diferente de nulo. | 
| taxa\$1de\$1utilização\$1por\$1unidade\$1no\$1moeda\$1precificação | A taxa de uso por unidade que pode ser multiplicada pelo `usage_quantity` para verificar o. `estimated_revenue_in_pricing_currency` O valor é fornecido com até 6 casas decimais. | 
| descrição\$1do\$1item\$1de\$1carga | A descrição completa do item de cobrança, normalmente formatada como offer\$1term\$1description\$1region\$1dimension\$1description para cobranças baseadas no uso. | 

## Exemplo de feed de dados de uso diário
<a name="daily-usage-feed-example"></a>

Veja a seguir um exemplo do feed de dados de uso diário com colunas-chave. Para facilitar a leitura, algumas colunas não são mostradas.


| usage\$1date | product\$1id | agreement\$1id | region | chave de dimensão | unidade\$1uso | usage\$1quantity | pricing\$1currency | receita\$1estimada em moeda\$1de\$1precificação | offer\$1id | taxa\$1de\$1utilização\$1por\$1unidade\$1no\$1moeda\$1precificação | descrição\$1do\$1item\$1de\$1carga | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| 2025-01-15 | prod-abcd1234efgh5678 | agmnt-wxyz9876abcd5432 | us-east-1 | USE1\$1InputTokenCount | unidades | 24,00 | USD | 12,00 | oferta-mnop5432qrst7890 | 0.500000 | Uso do software AWS Marketplace \$1 US-EAST-1 \$1 milhões de tokens de entrada | 
| 2025-01-15 | prod-ijkl9876mnop1234 | agmnt-stuv5432wxyz9876 | us-west-2 | USE1\$1InputTokenCount | unidades | 1000,00 | USD | 5,50 | oferta-abcd9876efgh5432 | 0,005500 | Uso do software AWS Marketplace \$1 US-West-2 \$1 Chamadas de API | 

# Feed de dados do mapeamento legado
<a name="data-feed-legacy-mapping"></a>

Esse feed de dados lista como o produto IDs e a oferta são IDs mapeados para identificadores globais exclusivos legados (GUIDs). Os antigos GUIDs eram usados em relatórios antigos, e os novos IDs são usados em feeds de dados e em AWS Marketplace APIs.

Este feed de dados fornece informações sobre todos os produtos que você criou como vendedor registrado e todos os produtos que está autorizado a revender.

O feed de dados do mapeamento legado é atualizado a cada 24 horas, para que novos dados estejam disponíveis diariamente.

A tabela a seguir explica os nomes e as descrições das colunas do feed de dados. 


| Nome da coluna  | Description  | 
| --- | --- | 
| mapping\$1type | Se este é um ID de produto ou oferta.  | 
| legacy\$1id | O ID legado deste produto ou desta oferta. | 
| new\$1id | O ID amigável deste produto ou desta oferta. Esse ID é usado como chave primária e com todas as ações atuais da API.  | 

## Exemplo de feed de dados do mapeamento legado
<a name="data-feed-legacy-mapping-sample-data"></a>

Veja a seguir um exemplo do feed de dados do mapeamento legado. Para facilitar a leitura, as colunas do histórico de dados não são exibidas. Para obter informações sobre os campos de histórico de dados, consulte [Historização dos dados](data-feed-details.md#data-feed-historization).


| mapping\$1type | legacy\$1id  | new\$1id | 
| --- | --- | --- | 
| OFERTA | 8a806c74-dbd6-403e-9362-bb08f417ff37 | offer-dacpxznflfwin | 
| PRODUTO | 1368541d-890b-4b6c-9bb9-4a55306ab642 | prod-o4grxfafcxxxy | 
| OFERTA | 558d8382-6b3a-4c75-8345-a627b552f5f1 | offer-gszhmle5npzip | 



# Feed de dados da oferta
<a name="data-feed-offer"></a>

O feed de dados da oferta fornece informações sobre todas as ofertas que você criou como vendedor registrado. Se uma única oferta tiver várias revisões, todas as revisões serão incluídas no feed de dados.

Quando você faz uma revisão de oferta e os dados em um campo exposto são alterados, um novo registro é criado no feed de dados para a mesma chave primária (`offer_id` mais `offer_revision`). No entanto, o campo `valid_from` tem um valor diferente. Para obter mais informações sobre as colunas do histórico de feed de dados, consulte [Historização dos dados](data-feed-details.md#data-feed-historization).

O feed de dados da oferta é atualizado a cada 24 horas, para que novos dados estejam disponíveis diariamente.

A tabela a seguir fornece os nomes e as descrições das colunas do feed de dados. 


| Nome da coluna  | Description  | 
| --- | --- | 
| offer\$1id | O identificador amigável da oferta.Pode ser usado para entrar no campo `offer_id` do feed de dados `Offer_Product`. | 
| offer\$1revision | A revisão da oferta. Esse campo e o campo offer\$1id se combinam para formar a chave primária.Com `offer_id`, pode ser usado para entrar nos campos `offer_id` e `offer_revision` do feed de dados `Target_Offer`. | 
| name | O nome definido pelo vendedor da oferta.  | 
| expiration\$1date | A data e a hora em que a oferta expira. | 
| opportunity\$1name | Quaisquer dados da oportunidade vinculados a esta oferta. Se a oferta estiver vinculada a uma oportunidade da AWS , este campo será preenchido. | 
| opportunity\$1description | Qualquer informação descritiva ligada a esta oferta. Se a oferta estiver vinculada a uma oportunidade da AWS , este campo será preenchido. | 
| seller\$1account\$1id | O identificador exclusivo global (GUID) da conta do vendedor. Pode ser usado para entrar no campo account\$1id no feed de dados da conta. | 
| opportunity\$1id | Um identificador da oportunidade só será preenchido se um revendedor estiver vendendo seu produto. Todas as ofertas criadas por diferentes parceiros de canal (ou vendedores) terão o mesmo opportunity\$1id se o produto for o mesmo.  | 
| ID da conta do destinatário | A conta do vendedor que está recebendo os dados nos feeds. Pode ser usado para entrar no feed de dados `Account` no campo `account_id`. | 

## Exemplo de feed de dados da oferta
<a name="data-feed-offer-sample-data"></a>

Veja a seguir um exemplo do feed de dados da oferta. Para facilitar a leitura, as colunas do histórico de dados não são exibidas. Para obter informações sobre os campos de histórico de dados, consulte [Historização dos dados](data-feed-details.md#data-feed-historization).


| offer\$1id  | offer\$1revision | name | expiration\$1date | opportunity\$1name | opportunity\$1description | seller\$1account\$1id | opportunity\$1id | 
| --- | --- | --- | --- | --- | --- | --- | --- | 
| offer-dacpxznflfwin | 1 | Oferta do programa de contrato corporativo | 9999-01-01T00:00:00Z |  |  |  |  | 
| offer-gszhmle5npzip | 1 | Oferta privada criada pelo vendedor | 2020-10-31T00:00:00Z |  |  |  |  | 
| offer-hmzhyle8nphlp | 1 | Oferta do programa de contrato corporativo | 9999-01-01T00:00:00Z |  |  |  |  | 

# Feed de dados do produto da oferta
<a name="data-feed-offer-product"></a>

Uma oferta pode ter vários produtos, e um produto pode ser incluído em diferentes ofertas. Este feed de dados lista informações sobre as relações entre as ofertas e os produtos. 

Este feed de dados fornece informações sobre todas as ofertas de produtos que você criou como vendedor de registro.

Ao adicionar ou remover um produto de uma oferta, você cria uma revisão de oferta. 

O feed de dados do produto da oferta é atualizado a cada 24 horas, para que novos dados estejam disponíveis diariamente.

A tabela a seguir explica os nomes e as descrições das colunas do feed de dados. Para obter informações sobre as colunas do histórico de feed de dados, consulte [Historização dos dados](data-feed-details.md#data-feed-historization).


| Nome da coluna  | Descrição  | 
| --- | --- | 
| offer\$1id | O identificador amigável desta oferta.Pode ser usado para entrar no campo `offer_id` do feed de dados `Offer`. | 
| offer\$1revision | Combina com o campo offer\$1id para formar a chave externa para a revisão da oferta. | 
| product\$1id | O identificador amigável do produto, esta é a chave externa para o produto que esta oferta expõe. Pode ser usado para entrar no campo `product_id` do feed de dados `Product`. | 

## Exemplo de feed de dados do produto da oferta
<a name="data-feed-offer-product-sample-data"></a>

Veja a seguir um exemplo do feed de dados do produto da oferta. 


| offer\$1id  | offer\$1revision | product\$1id | 
| --- | --- | --- | 
| offer-dacpxznflfwin | 10 | prod-o4grxfafcxxxx | 
| offer-gszhmle5npzip | 24 | prod-o4grxfafcxxxy | 

# Feed de dados de destino da oferta
<a name="data-feed-offer-target"></a>

Este feed de dados lista os destinos da revisão de uma oferta para todas as ofertas que você criou como vendedor de registro. Se uma única oferta tiver várias revisões, todas as revisões serão incluídas no feed de dados.

Quando você faz uma revisão de oferta e os dados em um campo exposto são alterados, um novo registro é criado no feed de dados para a mesma chave primária (`offer_id` mais `offer_revision`), mas com um valor diferente para o campo `valid_from`. 

O feed de dados de destino da oferta é atualizado a cada 24 horas, para que novos dados estejam disponíveis diariamente.

A tabela a seguir explica os nomes e as descrições das colunas do feed de dados.


| Nome da coluna  | Descrição  | 
| --- | --- | 
| offer\$1target\$1id | A chave primária do feed. | 
| offer\$1id\$1offer\$1revision | O identificador e a revisão da oferta. Essas duas colunas fazem referência à oferta à qual esse destino se refere.Pode ser usado para entrar nos campos `offer_id` e `offer_revision` do feed de dados `Target`. | 
| target\$1type | Indica se o destinatário da oferta é BuyerAccounts, o que indica uma oferta privada ou ParticipatingPrograms. | 
| polarity | Indica se a oferta se destina a ser feita para o `target_type`. Os valores aceitáveis são os seguintes: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/data-feed-offer-target.html)  | 
| valor | Uma string que representa o destino: um ID de conta da AWS ou um programa que pode ser usado com uma oferta. Por exemplo, [Contrato padrão para o AWS Marketplace (SCMP)](standardized-license-terms.md#standard-contracts) ou [Programa de demonstração de campo (FDP) do AWS Marketplace](field-demonstration-program.md). | 

## Exemplo de feed de dados de destino da oferta
<a name="data-feed-offer-target-sample-data"></a>

Veja a seguir um exemplo do feed de dados de destino da oferta. Para facilitar a leitura, as colunas do histórico de dados não são exibidas. Para obter informações sobre os campos de histórico de dados, consulte [Historização dos dados](data-feed-details.md#data-feed-historization). 


| offer\$1target\$1id  | offer\$1id  | offer\$1revision | target\$1type | polarity | valor | 
| --- | --- | --- | --- | --- | --- | 
| 925ddc73f6a373b7d5544ea3210610803b600 | offer-dacpxznflfwin | 1 | ParticipatingPrograms | PositiveTargeting | EnterpriseContract | 
| 471ff22ae3165278f1fb960d3e14517bcd601 | offer-gszhmle5npzip | 1 | ParticipatingPrograms | PositiveTargeting | FieldDemonstration | 
| 511ff22adfj65278f1fb960d3e14517bcd6e602 | offer-gszhmle5npzip | 1 | ParticipatingPrograms  | PositiveTargeting | EnterpriseContract | 

# Feed de dados do produto
<a name="data-feed-product"></a>

Este feed de dados fornece informações sobre todos os produtos que você criou como vendedor registrado e todos os produtos que está autorizado a revender.

Os dados do produto são mutáveis. Isso significa que quando você altera o valor de um dos campos a seguir, um novo registro é criado no feed de dados com um valor diferente para o campo `valid_from`. Para obter mais informações sobre as colunas do histórico de feed de dados, consulte [Historização dos dados](data-feed-details.md#data-feed-historization). 

O feed de dados do produto é atualizado a cada 24 horas, para que novos dados estejam disponíveis diariamente.

A tabela a seguir explica os nomes e as descrições das colunas do feed de dados. 


| Nome da coluna  | Descrição  | 
| --- | --- | 
| product\$1id | O identificador amigável do produto.Pode ser usado para entrar nos campos `product_id` dos feeds de dados `Account`, `Billing_Event` e `Offer_Product`. | 
| manufacturer\$1account\$1id | O identificador do proprietário do produto. Esta é uma chave externa para o feed de dados da [Conta](data-feed-account.md).Pode ser usado para entrar no campo `account_id` do feed de dados `Account`. | 
| product\$1code | O código do produto de direito existente usado para medir o produto. Esse valor também é usado para unir dados com um relatório ou para fazer referência ao que é fornecido no serviço de marketing do AWS Marketplace. | 
| título | O título do produto.  | 

## Exemplo de feed de dados do produto
<a name="data-feed-product-sample-data"></a>

Veja a seguir um exemplo do feed de dados de destino da oferta. Para facilitar a leitura, as colunas do histórico de dados não são exibidas. Para obter informações sobre os campos de histórico de dados, consulte [Historização dos dados](data-feed-details.md#data-feed-historization). 


| product\$1id  | manufacturer\$1account\$1id  | product\$1code | título | 
| --- | --- | --- | --- | 
| prod-o4grxfafcxxxx | 555568000000 | product\$1code\$11 | Product1 | 
| prod-t3grxfafcxxxy | 444457000000 | product\$1code\$12 | Product2 | 
| prod-x8faxxfafcxxy | 666678000000 | product\$1code\$13 | Product3 | 

# Feed de dados do item fiscal
<a name="data-feed-tax-item"></a>

Esse feed de dados fornece informações sobre cálculos de imposto para uma fatura de cliente.

Pode haver vários itens de linha (`line_item_id`) para um determinado produto (`product_id`) de uma determinada fatura de cliente (`invoice_id`), um ou mais para cada jurisdição fiscal. Isso acontece, por exemplo, com faturas baseadas no uso para clientes que estão usando regras AWS regionais diferentes de AWS entidades diferentes (por exemplo, EUA e Irlanda). Para saber mais sobre onde AWS coleta impostos sobre vendas, IVA ou GST sobre suas vendas e remete esses impostos às autoridades fiscais locais, em nome da AWS, Inc., consulte a Ajuda fiscal [da Amazon Web Service](https://aws.amazon.com/tax-help/).

O feed de dados do item fiscal é atualizado a cada 24 horas, para que novos dados estejam disponíveis diariamente.

Os dados do item fiscal são imutáveis. 

A tabela a seguir explica os nomes e as descrições das colunas do feed de dados. Para obter informações sobre as colunas de histórico de dados, consulte [Historização dos dados](data-feed-details.md#data-feed-historization). 


| Nome da coluna  | Description  | 
| --- | --- | 
| tax\$1item\$1id | Um identificador exclusivo de um registro de item fiscal. | 
| invoice\$1id | O ID da AWS fatura. Você pode usar esse valor com o valor de product\$1id para localizar eventos de cobrança de imposto relacionados. | 
| line\$1item\$1id | Um identificador exclusivo de um item de linha de fatura do cliente. As transações de reembolso têm o mesmo ID do item de linha das transações de impostos encaminhadas. | 
| customer\$1bill\$1id | O identificador exclusivo da fatura do cliente. Os compradores podem compartilhar esse identificador com o vendedor para ajudar a identificar e resolver questões de cálculo de impostos.  | 
| tax\$1liable\$1party | `AWS` ou `Seller`. Se o vendedor for o responsável pelo imposto, os impostos são cobrados. Se AWS for a parte responsável pelo imposto, o imposto sobre vendas é coletado e remetido por. AWS Para obter mais informações, consulte [Vendedores e cobrança de impostos do AWS Marketplace](https://aws.amazon.com/tax-help/marketplace). Se não forem cobrados impostos, nenhum valor será mostrado aqui. O vendedor precisa determinar se alguns impostos foram cobrados para cada fatura, pois o vendedor é responsável pela cobrança de impostos.  | 
| transaction\$1type\$1code | O tipo de transação. Os valores possíveis são: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/data-feed-tax-item.html) As transações de reembolso compartilham o ID do item de linha com as transações originais encaminhadas. | 
| product\$1id | Uma chave externa para o produto.Pode ser usado para entrar no feed de dados `Product` no campo `product_id`. | 
| product\$1tax\$1code | Um código padrão para identificar as propriedades de impostos de um produto. Os vendedores escolhem as propriedades ao criar ou modificar o produto. | 
| invoice\$1date | A data em que a fatura foi criada.  | 
| taxed\$1customer\$1account\$1id | Uma chave externa para a entidade de conta que é tributada.Pode ser usado para entrar no feed de dados `Account` no campo `account_id`. | 
| taxed\$1customer\$1country | O código de país ISO 3166 com 2 caracteres alfanuméricos do endereço utilizado para os cálculos fiscais.  | 
| taxed\$1customer\$1state\$1or\$1region | O estado, a região ou a província usado para cálculos fiscais. | 
| taxed\$1customer\$1city | A cidade usada para cálculos fiscais. | 
| taxed\$1customer\$1postal\$1code | O código postal usado para cálculos fiscais. | 
| tax\$1location\$1code\$1taxed\$1jurisdiction | O Vertex Geocode que está associado ao local tributado.  | 
| tax\$1type\$1code | O tipo de imposto que é aplicado à transação. Os valores possíveis são None, Sales e SellerUse. | 
| jurisdiction\$1level | O nível de jurisdição do endereço que é usado para o local tributário. Os valores possíveis são State, County, City e District. | 
| taxed\$1jurisdiction | O nome da jurisdição fiscal.  | 
| display\$1price\$1taxability\$1type | Se o preço que os compradores veem inclui impostos ou não. Todas as AWS Marketplace ofertas não incluem impostos.  | 
| taxable\$1amount | O valor da transação que é tributável, neste nível de jurisdição. | 
| nontaxable\$1amount | O valor da transação que não é tributável, neste nível de jurisdição. | 
| tax\$1jurisdiction\$1rate | A taxa fiscal que é aplicada, neste nível de jurisdição. | 
| tax\$1amount | O valor do imposto cobrado, neste nível de jurisdição. | 
| tax\$1currency | O código da moeda ISO 4217 com 3 caracteres alfanuméricos para valores acima. | 
| tax\$1calculation\$1reason\$1code | Se a transição é tributável, não tributável, isenta ou taxa zero, organizado de acordo com o nível de jurisdição. | 
| date\$1used\$1for\$1tax\$1calculation | A data que é usada para calcular os impostos da transação. | 
| customer\$1exemption\$1certificate\$1id | O ID do certificado de isenção. | 
| customer\$1exemption\$1certificate\$1id\$1domain | O local onde o certificado está armazenado nos sistemas da Amazon.  | 
| customer\$1exemption\$1certificate\$1level | O nível de jurisdição que forneceu a isenção. | 
| customer\$1exemption\$1code | O código que especifica a isenção, por exemplo, RESALE. | 
| customer\$1exemption\$1domain | O sistema da Amazon usado para capturar as informações de isenção do cliente, se disponível. | 
| transaction\$1reference\$1id | Um identificador que permite que você faça referência cruzada de dados dos seguintes relatórios: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/data-feed-tax-item.html)  | 
| legal\$1amount | O valor do imposto na moeda legal do imposto a ser pago. | 
| legal\$1currency | A moeda legal do imposto a ser pago. | 
| tax\$1invoice\$1id | O identificador da nota fiscal para a linha tributária em casos de faturamento duplo. Este campo será nulo para cenários de faturamento unificado. | 
| tax\$1invoice\$1date | A data da nota fiscal. Este campo será nulo para cenários de faturamento unificado. | 

**nota**  
A partir de 5 de agosto de 2021, os impostos internacionais do Marketplace Facilitator para AWS Marketplace vendas terão entradas no feed de dados do item fiscal. Isso significa que, a partir de 5 de agosto de 2021, espera-se que cada registro de AWS\$1TAX\$1SHARE SELLER\$1TAX\$1SHARE no feed de dados do evento de faturamento tenha um registro correspondente no feed de dados do item fiscal.

## Exemplo de feed de dados de item fiscal
<a name="data-feed-tax-item-sample-data"></a>

Veja a seguir um exemplo do feed de dados de item fiscal. No feed de dados, essa informação é apresentada em uma única tabela. Para fins de legibilidade, os dados são mostrados em várias tabelas aqui, e as colunas não são mostradas. 


| tax\$1item\$1id | invoice\$1id | line\$1item\$1id | customer\$1bill\$1id | 
| --- | --- | --- | --- | 
| 6p2ni6tu041xagvhbyanbgxl3xameha16txjoav\$10001 | 781216640 | 71000000000000000000 | 2210000000000000000 | 
| 6p2ni6tu041xagvhbyanbgxl3xameha16txjoav\$10002 | 781216640 | 53000000000000000000 | 2210000000000000000 | 
| flr4jobxjzww8czdsrq4noue2uxd56j39wxw0k7\$10001 | 250816266 | 76400000000000000000 | 5720000000000000000 | 
| gfkjjobxjzw56jgkrsrqgjtk52uxd56j39wgj567d\$10002 | 280336288 | 76400000000000000000 | 5724390000000000000 | 
| wwk1qpvb8ran3geiw8e3mp6dgs2qj7wpkuwhgk1\$10001 | 451431024 | 99300000000000000000 | 1230000000000000000 | 
| wwk1qpvb8ran3geiw8e3mp6dgs2qj7wpkuwhgk1\$10002 | 451431024 | 99300000000000000000 | 3120000000000000000 | 
| fnohdid8kwgqq9lvii2k30spn3ftgwihbe8h75x\$10001 | 229987654 | 92100000000000000000 | 6390000000000000000 | 




| tax\$1liable\$1party | transaction\$1type\$1code | product\$1id | product\$1tax\$1code | invoice\$1date | 
| --- | --- | --- | --- | --- | 
| Vendedor | AWS | prod-o4grxfafcxxxx | AWSMP\$1SOFTWARE\$1RA | 2018-12-31T00:00:00Z | 
| Vendedor | AWS | prod-o4grxfafcxxxx | AWSMP\$1SOFTWARE\$1RA | 2018-12-31T00:00:00Z | 
| Vendedor | AWS | prod-t3grxfafcxxxy | AWS\$1REMOTESOFTWARE \$1ACCESS | 2018-08-31T00:00:00Z | 
| Vendedor | REFUND | prod-t3grxfafcxxxy | AWS\$1REMOTESOFTWARE \$1ACCESS | 2018-08-31T00:00:00Z | 
| Vendedor | AWS | prod-x8faxxfafcxxy | AWS\$1REMOTESOFTWARE \$1ACCESS | 2018-08-31T00:00:00Z | 
| Vendedor | TAXONLYREFUND | prod-x8faxxfafcxxy | AWS\$1REMOTESOFTWARE \$1ACCESS | 2018-05-31T00:00:00Z | 
| AWS | AWS | prod-wghj8xfafrhgj | AWS\$1REMOTESOFTWARE \$1ACCESS | 2019-07-31T00:00:00Z | 




| taxed\$1customer\$1account\$1id | taxed\$1customer\$1country | taxed\$1customer\$1state\$1or\$1region | taxed\$1customer\$1city | taxed\$1customer\$1postal\$1code | 
| --- | --- | --- | --- | --- | 
| VIeXXCgGCGUreeGA2T9J3MUXIOH9WC8LSNd XRiOCm5 | EUA | GA | MILTON | 48573-4839 | 
| VIeXXCgGCGUreeGA2T9J3MUXIOH9WC8LSNd XRiOCm5 | EUA | GA | MILTON | 48573-4839 | 
| TRo7nyo5jw PLYx81VX9jI04 O1FF8BiQi88w8 eEwTur | EUA | NC | DURHAM | 27517-4834 | 
| TRo7nyo5jw PLYx81VX9jI04 O1FF8BiQi88w8 eEwTur | EUA | NC | DURHAM | 27517-4834 | 
| TRo7nyo5jw PLYx81VX9jI04 O1FF8BiQi88w8 eEwTur | EUA | TX | NÃO APLICÁVEL | 75844-1235 | 
| TRo7nyo5jw PLYx81VX9jI04 O1FF8BiQi88w8 eEwTur | EUA | TX | HOUSTON | 75844-1235 | 
| 192a0421313e41f069b52962ed7babf716291b688 | EUA | CT | NEW HAVEN | 06002-2948 | 




| tax\$1location\$1code\$1taxed\$1jurisdiction | tax\$1type\$1code | jurisdiction\$1level | taxed\$1jurisdiction | display\$1price\$1taxability\$1type | taxable\$1amount | nontaxable\$1amount | 
| --- | --- | --- | --- | --- | --- | --- | 
| 460473664 | Vendas | Estado | GA | Exclusive | 100 | 0 | 
| 66301164 | Vendas | Condado | FULTON | Exclusive | 0 | 100 | 
| 692938178 | SellerUse | Estado | NC | Exclusive | 58,1 | 523,8 | 
| 692938178 | SellerUse | Estado | NC | Exclusive | -58,1 | 523,8 | 
| 356794387 | Vendas | Estado | TX | Exclusive | 1105,14 | 0 | 
| 528887443 | Vendas | Cidade | HOUSTON | Exclusive | -36 | 0 | 
| 171248162 | Vendas | Estado | CT | Exclusive | 0 | 114,55 | 




| tax\$1jurisdication\$1rate | tax\$1amount | tax\$1currency | tax\$1calculation\$1reason\$1code | date\$1used\$1for\$1tax\$1calculation | 
| --- | --- | --- | --- | --- | 
| 0.206 | 20.6 | USD | Tributável | 2018-10-31T00:00:00Z | 
| 0 | 0 | USD | NonTaxable | 2018-10-31T00:00:00Z | 
| 0.1 | 5,8 | USD | Tributável | 2018-07-31T00:00:00Z | 
| 0.1 | -5,8 | USD | Tributável | 2018-07-31T00:00:00Z | 
| 0,06 | 66,3 | USD | Tributável | 2018-07-31T00:00:00Z | 
| 0,01 | -0,36 | USD | NonTaxable | 2018-07-31T00:00:00Z | 
| 0 | 0 | USD | Exempt | 2019-06-30T00:00:00Z | 



# Relatórios complementares
<a name="supplementary-reports"></a>

AWS Marketplace entrega relatórios complementares por meio das [Dados de entrega do vendedor inseridos em AWS Marketplace](data-feed-service.md) contas Amazon S3 de propriedade do vendedor que estão conectadas ao ID da conta AWS Marketplace do vendedor associado às ofertas dos vendedores. AWS Marketplace Para obter mais informações, consulte [Criar um bucket do Amazon Simple Storage Service](https://docs.aws.amazon.com/marketplace/latest/userguide/data-feed-service.html#data-feed-accessing). 

Os relatórios suplementares são publicados diariamente às 16:00 UTC se houvesse novos assinantes no dia anterior. Esses relatórios abrangem o dia anterior, das 13:59 UTC às 16:01 UTC do dia seguinte.

## Relatório de detalhes do contrato
<a name="agreement-details-report"></a>

O relatório de detalhes do contrato ajuda você a oferecer suporte aos clientes que estão no teste gratuito do contrato de software como serviço (SaaS). O relatório inclui detalhes do contrato, como nome do assinante, ID do assinante, ID da oferta, início do contrato e data de término do contrato. 

Você só receberá esse relatório se as informações relevantes estiverem disponíveis. Se você não receber esse relatório e achar que deveria ter recebido, entre em contato com a equipe de [Operações de vendedor do AWS Marketplace](https://aws.amazon.com/marketplace/management/contact-us/).

Você pode acessar esse relatório por meio do bucket Amazon S3 associado ao ID da conta do AWS Marketplace vendedor.

A tabela a seguir lista os nomes das colunas e as descrições do relatório de detalhes do contrato.


**Dados do relatório de teste gratuito do contrato de SaaS**  

| Name (Nome) | Description | 
| --- | --- | 
| vendor\$1display\$1name | O nome do fornecedor que vendeu o produto. | 
| vendor\$1aws\$1account\$1id | A identificação associada ao fornecedor que vendeu o produto. | 
| subscriber\$1aws\$1account\$1id | A identificação associada ao Conta da AWS que está inscrito no produto. | 
| customer\$1id | O identificador exclusivo para o produto de software. | 
| product\$1title | O título do produto. | 
| offer\$1id | O identificador da oferta que o comprador assinou. | 
| offer\$1visibility | Indicação de se a oferta é pública, privada ou de contrato empresarial. | 
| reseller\$1name | O nome do revendedor parceiro de canal. | 
| reseller\$1aws\$1account\$1id | O identificador exclusivo para o revendedor parceiro de canal. | 
| agreement\$1id | Uma referência exclusiva de feed de dados do contrato assinado entre um proponente e um aceitante para começar a usar um produto. | 
| agreement\$1acceptance\$1date | A data em que o acordo foi aceito. | 
| agreement\$1start\$1date | A data de início do contrato. | 
| agreement\$1end\$1date | A data de final do contrato. Para assinaturas atuais, isso é definido metered/pay como 1-JAN-9999. | 
| is\$1free\$1trial\$1offer | Uma sinalização que indica se a oferta ou contrato é uma oferta de avaliação gratuita. | 
| is\$1upgraded\$1after\$1free\$1trial | Uma sinalização que indica se o contrato foi atualizado para um contrato pago. | 
| total\$1contract\$1value | O valor total do contrato. | 

# Painéis do vendedor
<a name="dashboards"></a>

AWS Marketplace fornece painéis desenvolvidos pelo [Amazon Quick](https://docs.aws.amazon.com/quicksight/latest/user/welcome.html) com tabelas, gráficos e informações que ajudam você a acessar e analisar dados financeiros, de vendas e de marketing. Os painéis do vendedor incluem:

**[Painéis para operações financeiras](finance-operations.md)**
+ [Painel de receita faturada](billed-revenue-dashboard.md): fornece informações sobre a receita faturada para fins contábeis e outros relatórios financeiros.
+ [Painel de cobranças e despesas](collections-disbursement-dashboard.md)— Fornece informações sobre fundos AWS coletados e desembolsados em suas contas bancárias desde o desembolso anterior.
+ [Painel fiscal](taxation-dashboard.md): fornece informações sobre impostos para transações de vendedores.

**[Painéis para operações de vendas](sales-operations.md)**
+ [Painel de contratos e renovações](agreements-renewals-dashboard.md): fornece informações sobre contratos e renovações dentro de 24 horas após a assinatura do contrato no AWS Marketplace.
+ [Painel de uso](usage-dashboard.md): fornece visualização e dados refinados para clientes que usam SaaS e produtos baseados em uso de servidor.
+ [Painéis para marketing](marketing-dashboards.md): oferece vários painéis para ajudar você a rastrear os dados de marketing.

**[Painéis para marketing](marketing-dashboards.md)**
+ [Painel de contratos com clientes](customer-agreements-dashboard.md): oferece dados sobre os contratos e os clientes que assinam os produtos.
+ [Painel Desempenho de listagem](listing-performance-dashboard.md)— Fornece dados sobre o tráfego e o comportamento do usuário em suas AWS Marketplace listagens.
+ [Painel Performance de pesquisa](search-performance-dashboard.md)— Fornece dados sobre as palavras-chave aplicadas às AWS Marketplace listagens.

Os painéis estão disponíveis para AWS Marketplace vendedores que tenham as permissões apropriadas.

## Acesso aos painéis
<a name="reports-accessing"></a>

Por padrão, os administradores AWS Marketplace do sistema das contas de vendedores têm acesso a todos os painéis na guia Insights no. Portal de gerenciamento do AWS Marketplace Os administradores do sistema podem criar uma política AWS Identity and Access Management (IAM) para fornecer acesso a painéis específicos a outros usuários da empresa vendedora.

**nota**  
Em setembro de 2023, não daremos mais suporte ao acesso aos painéis do vendedor habilitados pelas permissões legadas do IAM. Atualize as permissões do IAM usando o novo formato do nome do recurso da Amazon (ARN) nos exemplos de código abaixo.

Para obter informações sobre como criar políticas, consulte [Criar políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html).

### Política do painel
<a name="dashboard-policy"></a>

Use uma das políticas a seguir para dar acesso a alguns ou a todos os painéis.

O exemplo a seguir fornece acesso a AWS Marketplace recursos atuais e futuros, incluindo painéis e relatórios. Ele usa todos os feeds de dados atuais e futuros:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "aws-marketplace:GetSellerDashboard"
            ],
            "Resource": [
                "arn:aws:aws-marketplace::111122223333:AWSMarketplace/*"
            ]
        }
    ]
}
```

------

Você também pode fornecer acesso a um ou mais painéis incluindo seus. ARNs O exemplo a seguir mostra como dar acesso a todos os painéis:

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "aws-marketplace:GetSellerDashboard"
            ],
            "Resource": [
                "arn:aws:aws-marketplace::111122223333:AWSMarketplace/ReportingData/BillingEvent_V1/Dashboard/BilledRevenue_V1",
                "arn:aws:aws-marketplace::111122223333:AWSMarketplace/ReportingData/BillingEvent_V1/Dashboard/CollectionsAndDisbursements_V1",
                "arn:aws:aws-marketplace::111122223333:AWSMarketplace/ReportingData/Agreement_V1/Dashboard/AgreementsAndRenewals_V1",
                "arn:aws:aws-marketplace::111122223333:AWSMarketplace/ReportingData/Usage_V1/Dashboard/Usage_V1",
                "arn:aws:aws-marketplace::111122223333:AWSMarketplace/ReportingData/TaxItem_V1/Dashboard/Tax_V1",
                "arn:aws:aws-marketplace::111122223333:AWSMarketplace/ReportingData/Marketing_V1/Dashboard/CustomerAgreements_V1",
                "arn:aws:aws-marketplace::111122223333:AWSMarketplace/ReportingData/Marketing_V1/Dashboard/ListingPerformance_V1",
                "arn:aws:aws-marketplace::111122223333:AWSMarketplace/ReportingData/Marketing_V1/Dashboard/SearchPerformance_V1"
            ]
        }
    ]
}
```

------

Para remover acesso a um painel, exclua-o da seção `Resource` da política.

**nota**  
Para obter informações sobre a criação de políticas AWS Identity and Access Management (IAM), consulte [Criação de políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) no *Guia AWS Identity and Access Management do usuário*.

# Painéis para operações financeiras
<a name="finance-operations"></a>

O AWS Marketplace fornece vários painéis para ajudar você a rastrear seus dados financeiros.

**Topics**
+ [Painel de receita faturada](billed-revenue-dashboard.md)
+ [Painel de cobranças e despesas](collections-disbursement-dashboard.md)
+ [Painel fiscal](taxation-dashboard.md)

# Painel de receita faturada
<a name="billed-revenue-dashboard"></a>

O painel de receita faturada fornece informações sobre todas as vendas faturadas no AWS Marketplace. Espera-se que esse relatório economize tempo e esteja disponível aproximadamente 45 dias antes do antigo [relatório de receita mensal faturada](https://docs.aws.amazon.com/marketplace/latest/userguide/monthly-billed-revenue-report.html). O relatório antigo é entregue no 15º dia de cada mês, o que atrasa a visibilidade das cobranças do mês anterior.

Para abrir esse painel, faça login no [Portal de gerenciamento do AWS Marketplace](https://aws.amazon.com/marketplace/management/), escolha **Insights**, **Operações financeiras** e a guia **Receita faturada**.

**Topics**
+ [Frequência de atualização do painel de receita faturada](#publication-schedule)
+ [Seção 1: controles](#billed-revenue-dashboard-controls)
+ [Seção 2: Filtros](#section-2-invoice-date-range)
+ [Seção 3: métricas chave](#section-3-metrics)
+ [Seção 4: tendências](#section-3-metrics)
+ [Seção 5: detalhamentos](#section-4-breakdowns)
+ [Seção 6: dados granulares](#section-5-new-product-subscribers)

## Frequência de atualização do painel de receita faturada
<a name="publication-schedule"></a>

Os painéis são atualizados diariamente à meia-noite UTC. Se uma fatura for criada em 10 de maio *antes* da meia-noite UTC, a atualização em 11 de maio exibirá a fatura. Se uma fatura for criada em 10 de maio *depois* da meia-noite UTC, a atualização em 12 de maio exibirá a fatura. Se os dados mais recentes de faturamento ou pagamento recebidos dos sistemas upstream atrasarem, poderá haver um atraso de um a dois dias para que os dados mais recentes sejam refletidos nos painéis.

Se você não encontrar a fatura esperada do cliente, use o procedimento a seguir antes de entrar em contato com seu contato AWS Marketplace de desenvolvimento comercial.

**Para solucionar problemas de falta de faturas de clientes no painel de receita faturada**

1. Confirme se a oferta foi aceita pelo cliente usando uma ou mais das seguintes ferramentas:
   + [Notificação para AWS Marketplace eventos](https://docs.aws.amazon.com/marketplace/latest/userguide/notifications.html)
   + [Portal de gerenciamento do AWS Marketplace guia de contratos](https://docs.aws.amazon.com/marketplace/latest/userguide/private-offers-upgrades-and-renewals.html#private-offers-upgrades-and-renewals-process)

1. (Para ofertas privadas) Depois de confirmar que o cliente aceitou a oferta, revise o cronograma e os valores da fatura da oferta:
   + Para ofertas privadas, verifique a guia Portal de gerenciamento do AWS Marketplace **Ofertas**.
   + Para ofertas privadas de parceiros de canal, verifique a guia Portal de gerenciamento do AWS Marketplace **Parceiros** para ver um cronograma de pagamento personalizado dentro da oportunidade de parceiro.

1. Considere se a transação usa um [modelo de preço de uso](https://docs.aws.amazon.com/marketplace/latest/userguide/pricing.html#usage-pricing), em que os clientes são cobrados no segundo e no terceiro dias de cada mês pelo mês anterior de uso.

## Seção 1: controles
<a name="billed-revenue-dashboard-controls"></a>

Esta seção do painel fornece filtros para refinar os dados do painel de receita faturada. Por exemplo, você pode selecionar um filtro em um campo das [notificações de AWS Marketplace eventos para](https://docs.aws.amazon.com/marketplace/latest/userguide/notifications.html) confirmar o faturamento de um ID específico da conta do cliente, nome da empresa assinante ou ID da oferta. Você também pode adicionar um filtro a uma análise, como o intervalo de datas que você deseja incluir em qualquer elemento visual. Os filtros selecionados nos controles atualizam os dados exibidos nas seções de métricas, tendências, detalhamentos e dados granulares.

Para obter mais informações sobre filtragem, consulte [Filtrando dados no Quick no Guia Rápido](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html) *do Usuário*.

### Descrição dos controles
<a name="control-descriptions"></a>


| Nome do controle | Description | 
| --- | --- | 
| ID do assinante Conta da AWS  | O ID da conta que está inscrita no produto. | 
| Nome da empresa assinante  | O nome da conta que está inscrita no produto. | 
| Título do produto | O título do produto.  | 
| ID da oferta | O identificador da oferta que o comprador assinou. | 
| Visibilidade da oferta | Se a oferta é pública, privada ou de contrato empresarial. | 
| ID do conjunto de ofertas | O identificador do conjunto de ofertas associado à oferta. | 
| ID do contrato | Uma referência exclusiva de feed de dados do contrato assinado entre um proponente e um aceitante para começar a usar um produto. | 
| AWS vendedor de discos | Um identificador da entidade comercial que facilitou a transação. Os possíveis valores incluem:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/billed-revenue-dashboard.html) | 
| ID do pagador Conta da AWS  | O ID da conta para a qual as cobranças são faturadas. | 
| Nome da empresa pagadora | O nome da empresa da conta para a qual as cobranças são faturadas. | 
| Empresa do revendedor |  O nome comercial da conta de revendedor autorizada a vender o produto de um fabricante de software.  | 
| ID do revendedor Conta da AWS  | O ID da conta que comprou um produto ou serviço no atacado de um ISV para revender a um cliente. | 
| ID de autorização de revenda | O identificador exclusivo para uma oportunidade registrada. | 
| Nome de autorização de revenda | O nome exclusivo para uma oportunidade registrada. | 
| País de assinante | O código de país de dois caracteres associado à conta inscrita no produto. | 
| Estado ou região do assinante | O estado ou região do endereço de faturamento associado à conta. que assinou o produto. | 
| ID de referência da transação | Um identificador exclusivo para a transação que ajuda você a correlacionar transações em relatórios AWS Marketplace antigos. | 

## Seção 2: Filtros
<a name="section-2-invoice-date-range"></a>

Esta seção do painel fornece filtros para refinar os registros com base na moeda da oferta e no intervalo de datas da fatura. Você pode usar o intervalo de datas da fatura para selecionar no fato de a data de cobrança ser anterior ou posterior a uma data especificada ou dentro de um intervalo de datas. Os filtros selecionados atualizam os dados exibidos nas seções de métricas, tendências, detalhamentos e dados granulares. O intervalo de datas padrão da fatura está definido para extrair dados dos últimos seis meses.

## Seção 3: métricas chave
<a name="section-3-metrics"></a>

Esta seção do painel exibe um indicador-chave de desempenho (KPI) para visualizar uma comparação dos principais dados da receita faturada. usando os filtros selecionados. Um KPI é exibido para receita bruta, reembolso bruto, taxa de listagem, custo de atacado (se aplicável) e receita líquida do vendedor no intervalo de datas da fatura especificado e moeda. Você pode atualizar os critérios do filtro para ver as métricas de diferentes moedas e datas.

## Seção 4: tendências
<a name="section-3-metrics"></a>

Esta seção do painel fornece tendências de receita faturada para um intervalo de datas especificado. Você pode visualizar as tendências por meio de uma agregação de datas especificada, como dia,, ou month-over-month quarter-over-quarter, year-over-year para obter informações sobre a receita faturada. As informações sobre tendências da receita faturada estão disponíveis em um nível agregado ou por tipo de visibilidade da oferta: 
+ **Tendências de faturamento**: fornece um panorama da receita bruta, receita líquida do vendedor, custo de atacado (se aplicável) e reembolsos ao longo do tempo para o intervalo de datas selecionado no filtro de agregação de datas. 
+ **Tendência de faturamento por visibilidade da oferta**: fornece uma visão geral da contagem de ofertas e da receita bruta por tipo de visibilidade da oferta ao longo do tempo em [ofertas privadas](https://docs.aws.amazon.com/marketplace/latest/userguide/private-offers-overview.html), ofertas públicas (ou autoatendimento) e programas corporativos.

## Seção 5: detalhamentos
<a name="section-4-breakdowns"></a>

Esta seção do painel fornece as principais métricas sobre sua empresa entre assinantes, vendedor registrado, região do assinante e título do produto. Você pode filtrar por receita bruta, contagem de pagadores, contagem de assinantes, reembolso bruto, taxa de listagem, receita líquida do vendedor e custo de atacado.

## Seção 6: dados granulares
<a name="section-5-new-product-subscribers"></a>

Essa seção do painel mostra todas as vendas faturadas, incluindo o valor total cobrado dos clientes pelo uso horário, anual ou mensal de seus produtos. AWS AWS fatura os clientes usando as três frequências a seguir:
+ Data de aceitação da assinatura (cobrança antecipada)
+ Cronograma de pagamento personalizado (ofertas privadas criadas por um programador de pagamento flexível)
+ Uso medido no segundo e no terceiro dias do mês para o uso do mês anterior

**nota**  
As faturas criadas antes de 1º de abril de 2021 podem não ter um ID de contrato, ID de oferta, ID de assinante ou Conta da AWS nome da empresa assinante associados.

As cobranças do cliente são exibidas nessa seção de dados granulares 24 horas após a cobrança do cliente. Por exemplo, se um cliente foi cobrado em 3 de novembro, o painel vai relatar essa fatura em 4 de novembro. Para obter mais informações sobre como exportar e baixar dados de uma tabela rápida, consulte [Exportação de dados de elementos visuais](https://docs.aws.amazon.com/quicksight/latest/user/exporting-data.html) no Guia *rápido do usuário*.

### Descrições de dados granulares
<a name="billed-revenue-dashboard-granular-data"></a>


| Coluna | Description | 
| --- | --- | 
| Data da fatura | A data em que o cliente foi cobrado pela assinatura do produto. | 
| Data de vencimento do pagamento | A data de vencimento do pagamento no formato de YYYY-MM-DD. | 
| Condições de pagamento | As condições de pagamento da AWS fatura do cliente. | 
| ID da fatura | O AWS ID atribuído à AWS fatura em que as cobranças foram cobradas. | 
| ID da fatura da taxa de listagem | Quando uma AWS Marketplace assinatura é negociada por meio de entidades legais da AWS EMEA SARL, Japão ou Austrália (vendedor registrado), a operadora da venda deve cobrar do vendedor um imposto sobre valor agregado (IVA) sobre a taxa de anúncio do vendedor e receber uma fatura compatível com os impostos. Para transações aplicáveis, o ID da fatura do IVA calculado na taxa de listagem é diferente do ID da fatura de assinatura do software ou do produto. As transações da AWS, Inc. têm um valor de “Missing\$1listing\$1fee\$1invoice\$1id” porque o ID da fatura da taxa de listagem não é aplicável.  | 
| ID da fatura no atacado | A AWS ID atribuída à fatura não pagável que representa a venda entre o ISV e o parceiro de canal em uma oferta privada do parceiro de canal (CPPO). Para ofertas públicas e ofertas privadas do Marketplace (MPOs), esse campo será “Não aplicável”. | 
| ID da fatura emitida pelo vendedor | Uma fatura emitida pelo vendedor para a AWS. | 
| Variante de fatura emitida pelo vendedor | O tipo de fatura que corresponde à coluna invoice\$1id. Os possíveis valores incluem:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/billed-revenue-dashboard.html) | 
| Nome da empresa assinante | O nome da conta que está inscrita no produto. | 
| ID do assinante Conta da AWS  | O ID da conta que está inscrita no produto. | 
| Domínio de e-mail do assinante | O domínio de e-mail associado à conta que assinou o produto. Por exemplo, se o endereço de e-mail for liu-jie@exemplo.com, a entrada será example.com. | 
| Cidade do assinante | A cidade do endereço de faturamento associada à conta que assinou o produto. | 
| Estado ou região do assinante | O estado do endereço de faturamento associado à conta que assinou o produto. | 
| País de assinante | O país endereço de faturamento associado à conta que assinou o produto.  | 
| Caixa postal do assinante | A caixa postal do endereço de faturamento associada à conta que assinou o produto. | 
| Título do produto | O título do produto. | 
| Nome da oferta | O nome definido pelo vendedor da oferta. | 
| ID da oferta | O identificador da oferta que o comprador assinou.  | 
| Visibilidade da oferta | Se a oferta é pública, privada ou de contrato empresarial. | 
| ID do conjunto de ofertas | O identificador do conjunto de ofertas associado à oferta. | 
| ID do contrato | Uma referência exclusiva de feed de dados do contrato assinado entre um proponente e um aceitante para começar a usar um produto.  | 
| Data de início do contrato | A data de início da assinatura do produto do cliente, formatada como MM-DD-YYYY. Essa data pode ser diferente da data de aceitação se for um contrato com data futura. | 
| Data de aceitação do contrato | A data em que o cliente assinou o produto, formatada como MM-DD-YYYY. | 
| Data de término do contrato | A data em que o contrato expira, formatada como. MM-DD-YYYY Para pay-as-you-go assinaturas limitadas/, essa data é definida como 1º de janeiro de 9999. | 
| Tipos de termos do contrato | Os tipos de termos associados e aceitos pelo aceitante durante a criação do contrato. | 
| Data de término do período de uso | A data de término do período de uso do produto. | 
| Data de início do período de uso | A data de início do período de uso do produto. | 
| Status do pagamento | Um status associado a uma fatura para confirmar que não desembolsou nenhum saldo, parcial ou total, em sua AWS conta bancária. Os status possíveis são: Pago, Pago parcialmente, Falha, Não pago.  | 
| Data do pagamento | A data em que o desembolso AWS foi iniciado para o banco do vendedor. | 
| Número de referência do pagamento | Para desembolsos, o Número de Referência de Desembolso é gerado AWS ao criar cada solicitação de desembolso. O Número de Referência de Desembolso pode ser usado para correlacionar notificações e relatórios de depósito fornecidos pelo banco do vendedor com faturas em relatórios. AWS Marketplace  | 
| ID de rastreamento bancário do pagamento | Para pagamentos, o ID de rastreamento é atribuído pelo banco. O ID de rastreamento bancário de desembolso pode ser usado para correlacionar notificações e relatórios de depósito fornecidos pelo banco do vendedor às faturas nos relatórios. AWS Marketplace  | 
| Receita bruta | O valor que é faturado ao cliente pelas taxas mensais ou de uso do produto. | 
| Reembolso bruto | O valor total do custo de assinatura reembolsado aos clientes caso algum reembolso tenha sido processado durante o período de cobertura dos dados.  | 
| Taxa de listagem | O valor da AWS Marketplace taxa a ser deduzido do valor faturado. | 
| Reembolso da taxa de listagem | A parte da AWS Marketplace taxa reembolsada se algum reembolso for processado durante o período de cobertura de dados. | 
| Percentual da taxa de listagem | A porcentagem da AWS Marketplace taxa a ser deduzida do valor faturado. | 
| Participação fiscal do vendedor | A quantidade total de impostos sobre uso e vendas nos EUA faturada para essa transação. | 
| Reembolso de participação fiscal do vendedor | O valor total de impostos sobre vendas e uso nos EUA reembolsado para esta transação caso um reembolso tenha sido processado. | 
| AWS participação fiscal | O valor total de impostos sobre vendas e uso nos EUA faturado para essa transação em nome do vendedor.  | 
| AWS reembolso de participação fiscal | O valor total do imposto sobre vendas e uso dos Estados Unidos reembolsado para essa transação, caso um reembolso tenha sido processado quando esses impostos foram coletados em nome do vendedor. | 
| Custo de atacado | Somente para ofertas privadas de parceiros de canal. O custo das mercadorias para um revendedor. Por exemplo, quanto um revendedor paga a um fabricante quando vende o produto de um fabricante. O custo de atacado é o preço sugerido multiplicado pela porcentagem de desconto.  | 
| Reembolso de custo de atacado | Somente para ofertas privadas de parceiros de canal. O custo reembolsado das mercadorias de um revendedor. | 
| Participação fiscal do vendedor atacadista | O imposto sobre a venda entre ISV e o parceiro de canal em uma oferta privada do parceiro de canal (CPPO) no qual o vendedor seja passivo tributário. Para ofertas públicas e ofertas privadas do Marketplace (MPPOs), esse campo será “Não aplicável”. | 
| Reembolso de participação fiscal do vendedor atacadista | O reembolso do imposto sobre a venda entre ISV e o parceiro de canal em uma oferta privada do parceiro de canal (CPPO) no qual o vendedor seja passivo. Para ofertas públicas e ofertas privadas do Marketplace (MPPOs), esse campo será “Não aplicável”. | 
| Participação fiscal de outro vendedor atacadista | O imposto sobre a venda entre ISV e o parceiro de canal em uma oferta privada do parceiro de canal (CPPO) no qual o vendedor seja passivo tributário. Este campo é preenchido quando o outro vendedor envolvido na transação é responsável. Para ofertas públicas e ofertas privadas do Marketplace (MPPOs), esse campo será “Não aplicável”. | 
| Reembolso da participação fiscal de outro vendedor atacadista | O reembolso do imposto sobre a venda entre ISV e o parceiro de canal em uma oferta privada do parceiro de canal (CPPO) no qual o vendedor seja passivo. Este campo é preenchido quando o outro vendedor envolvido na transação é responsável. Para ofertas públicas e ofertas privadas do Marketplace (MPPOs), esse campo será “Não aplicável”. | 
| Participação AWS fiscal no atacado | O imposto sobre a venda entre ISV e Channel Partner em uma oferta privada de Channel Partner (CPPO), onde AWS é tributável. Para ofertas públicas e ofertas privadas do Marketplace (MPPOs), esse campo será “Não aplicável”. | 
| Reembolso de participação AWS fiscal por atacado | O reembolso do imposto sobre a venda entre o ISV e o Parceiro de Canal em uma oferta privada do Parceiro de Canal (CPPO) em que AWS é tributável. Para ofertas públicas e ofertas privadas do Marketplace (MPPOs), esse campo será “Não aplicável”. | 
| Receita líquida do vendedor | O valor total cobrado pela transação, líquido de AWS Marketplace taxas, reembolsos e imposto sobre vendas e uso dos EUA. | 
| Receita líquida coletada | O valor total que a AWS coletou com sucesso do comprador para essa transação. | 
| Receita líquida não cobrada | O valor total que a AWS ainda não coletou do comprador para essa transação. | 
| Data da última coleta | A data e a hora mais recentes em que a AWS coletou qualquer pagamento do comprador por essa transação. | 
| Moeda | A moeda da transação. Por exemplo, se a transação for em dólares americanos, a entrada é USD. | 
| ID de referência da transação | Um identificador exclusivo que representa a transação, que você pode usar para correlacionar transações entre AWS Marketplace relatórios. | 
| AWS vendedor de discos |  Um identificador da entidade comercial que facilitou a transação. Os valores possíveis são: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/billed-revenue-dashboard.html)  | 
| ID de autorização de revenda |  O identificador exclusivo para uma oportunidade registrada.  | 
| Nome de autorização de revenda | O nome exclusivo para uma oportunidade registrada. | 
| Descrição da autorização de revenda | A descrição definida pelo ISV para uma oportunidade registrada. | 
| Nome da empresa de revenda | O nome da conta que comprou um produto ou serviço a preço de atacado de um ISV para revender a um cliente. | 
| ID do pagador Conta da AWS  | O ID da conta que comprou um produto ou serviço a preço de atacado de um ISV para revender a um cliente.  | 
| Domínio de e-mail do pagante |  O domínio de e-mail associado à conta para a qual as cobranças são faturadas. Por exemplo, se o endereço de e-mail for liu-jie@exemplo.com, a entrada será example.com.  | 
| Cidade do pagador | A cidade do endereço de faturamento associada à conta para a qual as cobranças são faturadas. | 
| Estado ou região do pagador | O estado do endereço de faturamento associado à conta para a qual as cobranças são faturadas. | 
| País do pagador | O código de país de dois caracteres associado à conta para a qual as cobranças são faturadas. | 
| Código postal do pagador |  O código postal do endereço de faturamento associado à conta na qual as cobranças do software são faturadas.  | 
| ID da conta do ISV | O identificador do proprietário do produto ou serviço. | 
| Nome da empresa do ISV | O nome comercial do proprietário do produto ou serviço. | 
| ID do produto |  O identificador exclusivo fácil de lembrar para o produto de software.  | 
| Receita líquida desembolsada |  O valor total da transação desembolsado para o vendedor. Se o valor não for igual à “receita líquida do vendedor”, este será um pagamento parcial.  | 
| Receita líquida não desembolsada |  O valor total da transação não desembolsado para o vendedor. Se o valor for diferente de zero, um saldo restante será devido pelo cliente.  | 

# Painel de cobranças e despesas
<a name="collections-disbursement-dashboard"></a>

O painel de cobranças e pagamentos fornece dados sobre fundos pagos para as contas bancárias. Ele também fornece uma lista de todas as faturas nas quais um pagamento foi feito parcialmente, integralmente ou quando ocorreu uma falha no pagamento. A lista não inclui faturas nas quais um pagamento não ocorreu. Para revisar as faturas não desembolsadas, use o painel **Receita faturada**.

Entre os pagamentos estão pagamentos a clientes, reembolsos liquidados para uma assinatura do produto, além de alguns impostos cobrados ou reembolsados para o cliente. Os reembolsos no painel aparecem como valores negativos, pois o dinheiro será devolvido ao cliente depois que você autorizar um reembolso.

O painel de cobranças e pagamentos dá acesso mais rápido aos pagamentos dos clientes. Espere economizar aproximadamente quatro dias em comparação com o [relatório de despesas](https://docs.aws.amazon.com/marketplace/latest/userguide/monthly-disbursement-report.html) antigo, criado cinco dias após o envio do pagamento.

**nota**  
Os clientes têm condições de pagamento diferentes AWS, portanto, alguns fundos nas categorias de idade não cobradas podem não ser devidos pelo cliente.

O painel de cobranças e despesas fornece informações para processos operacionais e financeiros. O painel é atualizado diariamente. Para obter mais informações, consulte os tópicos a seguir.

Para abrir o painel, faça login no [Portal de gerenciamento do AWS Marketplace](https://aws.amazon.com/marketplace/management/), escolha **Insights**, **Operações financeiras** e a guia **Cobranças e pagamentos**.

**Topics**
+ [Frequência de atualização do painel de cobranças e despesas](#publication-schedule)
+ [Seção 1: controles](#collections-disbursement-dashboard-controls)
+ [Seção 2: Filtros](#section-2-select-date-range)
+ [Seção 3: métricas chave](#section-3-metrics-collections)
+ [Seção 4: tendências](#section-4-trends-collections)
+ [Seção 5: detalhamentos](#section-5-breakdowns)
+ [Seção 6: dados granulares](#section-6-granular-data)

## Frequência de atualização do painel de cobranças e despesas
<a name="publication-schedule"></a>

O painel de cobranças e despesas é atualizado somente nos dias úteis da América do Norte. Você pode esperar ver as faturas desembolsadas em até um dia após o recebimento do depósito em seu banco.

## Seção 1: controles
<a name="collections-disbursement-dashboard-controls"></a>

Esta seção do painel fornece filtros para refinar os dados do painel. Por exemplo, você pode selecionar um filtro em um campo das [notificações de AWS Marketplace eventos para](https://docs.aws.amazon.com/marketplace/latest/userguide/notifications.html) confirmar o desembolso de um ID específico da conta do cliente, nome da empresa assinante ou ID da oferta. Você também pode filtrar por status de despesa para entender todas as faturas pagas a você ou faturas abertas e não pagas. Você pode adicionar um filtro a uma análise, como o intervalo de datas que você deseja incluir em qualquer elemento visual. Os filtros selecionados nos controles atualizam os dados exibidos nas seções de métricas, tendências, detalhamentos e dados granulares.

Para obter mais informações sobre filtragem, consulte [Filtrando dados no Quick no Guia Rápido](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html) *do Usuário*.

### Descrição dos controles
<a name="control-descriptions-collections"></a>


| Nome do controle | Description | 
| --- | --- | 
| ID do assinante Conta da AWS  | O ID da conta que está inscrita no produto. | 
| Nome da empresa assinante  | O nome da conta que está inscrita no produto. | 
| Título do produto | O título do produto.  | 
| ID da oferta | O identificador da oferta que o comprador assinou. | 
| Visibilidade da oferta | Se a oferta é pública, privada ou de contrato empresarial. | 
| ID do conjunto de ofertas | O identificador do conjunto de ofertas associado à oferta. | 
| ID do contrato | Uma referência exclusiva de feed de dados do contrato assinado entre um proponente e um aceitante para começar a usar um produto. | 
| AWS vendedor de discos | Um identificador da entidade comercial que facilitou a transação. Os possíveis valores incluem:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/collections-disbursement-dashboard.html) | 
| Status do pagamento | Um status associado a uma fatura para confirmar que não desembolsou nenhum saldo, parcial ou total, em sua AWS conta bancária. Os status possíveis são: Pago, Pago parcialmente, Falha, Não pago. | 
| ID do pagador Conta da AWS  | O ID da conta para a qual as cobranças são faturadas. | 
| Nome da empresa pagadora | O nome da empresa da conta para a qual as cobranças são faturadas. | 
| Empresa do revendedor |  O nome comercial da conta de revendedor autorizada a vender o produto de um fabricante de software.  | 
| ID do revendedor Conta da AWS  | O ID da conta que comprou um produto ou serviço no atacado de um ISV para revender a um cliente. | 
| ID de autorização de revenda | O identificador exclusivo para uma oportunidade registrada. | 
| Nome de autorização de revenda | O nome exclusivo para uma oportunidade registrada. | 
| País de assinante | O código de país de dois caracteres associado à conta inscrita no produto. | 
| Estado ou região do assinante | O estado ou região do endereço de faturamento associado à conta. que assinou o produto. | 
| ID de referência da transação | Um identificador exclusivo para a transação que ajuda você a correlacionar transações em relatórios AWS Marketplace antigos. | 
| ID de rastreamento bancário do pagamento | Para pagamentos, o ID de rastreamento é atribuído pelo banco. O ID de rastreamento bancário pode correlacionar notificações e relatórios de depósito fornecidos pelo banco do vendedor às faturas nos relatórios do AWS Marketplace . | 

## Seção 2: Filtros
<a name="section-2-select-date-range"></a>

Esta seção do painel fornece filtros para refinar os registros com base na moeda da oferta em duas dimensões de data diferentes e no fato de o valor do campo de data ser anterior ou posterior a uma data especificada ou dentro de um intervalo de datas. As dimensões da data são a data de vencimento do pagamento ou a data do último pagamento. A data de desembolso limita os resultados às faturas desembolsadas dentro do intervalo de datas especificado. A data de vencimento do pagamento inclui faturas com datas de vencimento dentro do intervalo especificado, independentemente da data de desembolso. O filtro da categoria de data atualiza os dados exibidos nas seções de métricas, tendências, detalhamentos e dados granulares. A categoria de data padrão é a data do último pagamento e extrai dados dos últimos seis meses.

## Seção 3: métricas chave
<a name="section-3-metrics-collections"></a>

Esta seção do painel exibe um indicador-chave de desempenho (KPI) para visualizar uma comparação entre os valores de receita desembolsada e não desembolsada. Um KPI é exibido para receita bruta, receita líquida, custo de atacado (se aplicável), valor desembolsado e valor não desembolsado para um critério de filtro específico.

## Seção 4: tendências
<a name="section-4-trends-collections"></a>

Esta seção do painel fornece uma visão das tendências de pagamento e vencimento para o intervalo de datas especificado. Você pode visualizar as tendências por meio de uma agregação de datas específica, como por dia, mês, trimestre ou ano, para obter informações sobre a saúde de sua AWS Marketplace coleção. As visualizações de tendência incluem o seguinte:
+ **Tendências de pagamento**: fornece uma visão geral do número médio de dias para desembolsar e da receita líquida associada. A tendência mede o número de dias entre a data da fatura e a data do pagamento para relatar a eficiência da cobrança. Você pode selecionar um intervalo de datas no filtro de agregação de datas.
+ **Idade dos pagamentos desembolsados**: fornece uma visão geral da receita líquida e uma contagem das faturas desembolsadas que é categorizada por buckets padrão de contas a receber antigas (como não vencidas, de 1 a 30 dias e de 31 a 60 dias). A tendência mede os dias entre a data de vencimento do pagamento e a data de pagamento para informar se o pagamento estava dentro das condições de pagamento do cliente.
+ **Idade dos pagamentos não desembolsados**: fornece uma visão geral da receita líquida e da contagem de faturas abertas e não pagas, organizadas por buckets vencidos (como não vencidos, de 1 a 30 dias e de 31 a 60 dias). Os fundos não desembolsados podem incluir valores que ainda não são devidos. A tendência mede os dias entre a data de hoje e a data de vencimento do pagamento para exibir os recebíveis recebidos.

## Seção 5: detalhamentos
<a name="section-5-breakdowns"></a>

Esta seção do painel fornece uma visão dos recebíveis por ID da oferta, título do produto, nome da empresa pagadora, nome da empresa assinante, nome do revendedor (se ele participar de ofertas privadas de parceiros de canal), região do pagador e região do assinante. Use os detalhamentos para medir os recebíveis desembolsados em relação aos recebíveis não desembolsados para cada categoria.

## Seção 6: dados granulares
<a name="section-6-granular-data"></a>

Esta seção do painel mostra todos os pagamentos e fundos não coletados por produto, cliente e detalhes da oferta.

**nota**  
As faturas criadas antes de 1º de abril de 2021 podem não ter um ID de contrato, ID de oferta, ID de assinante ou Conta da AWS nome da empresa assinante associados.

Para obter informações sobre como exportar e baixar dados de uma tabela rápida, consulte [Exportação de dados de elementos visuais](https://docs.aws.amazon.com/quicksight/latest/user/exporting-data.html) no Guia *rápido do usuário*.

### Descrições de dados granulares
<a name="collections-dashboard-granular-data"></a>


| Coluna | Description | 
| --- | --- | 
| Data da fatura | A data em que o cliente foi cobrado pela assinatura do produto. | 
| Data de vencimento do pagamento | A data de vencimento do pagamento no formato de YYYY-MM-DD. | 
| Condições de pagamento | As condições de pagamento da AWS fatura do cliente. | 
| ID da fatura | O AWS ID atribuído à AWS fatura em que as cobranças foram cobradas.  | 
| ID da fatura da taxa de listagem |  Quando uma AWS Marketplace assinatura é negociada por meio de entidades legais da AWS EMEA SARL, Japão ou Austrália (vendedor registrado), o operador do mercado da venda (por exemplo, AWS EMEA SARL) deve cobrar do vendedor um IVA sobre a taxa do anúncio do vendedor. Para transações aplicáveis, o ID da fatura do IVA calculado na taxa de listagem é diferente do ID da fatura de assinatura do software ou do produto.  | 
| ID da fatura no atacado |  A AWS ID atribuída à fatura não pagável que representa a venda entre o ISV e o parceiro de canal em uma oferta privada do parceiro de canal (CPPO). Para ofertas públicas e ofertas privadas do Marketplace (MPOs), esse campo será “Não aplicável”.  | 
| ID da fatura emitida pelo vendedor | Uma fatura emitida pelo vendedor para a AWS. | 
| Variante de fatura emitida pelo vendedor | O tipo de fatura que corresponde à coluna invoice\$1id. Os possíveis valores incluem:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/collections-disbursement-dashboard.html) | 
| Nome da empresa assinante | O nome da conta que está inscrita no produto. | 
| ID do assinante Conta da AWS  | O ID da conta que está inscrita no produto. | 
| Domínio de e-mail do assinante | O domínio de e-mail associado à conta que assinou o produto. Por exemplo, se o endereço de e-mail for liu-jie@exemplo.com, a entrada será example.com. | 
| Cidade do assinante | A cidade do endereço de faturamento associada à conta que assinou o produto. | 
| Estado ou região do assinante | O estado do endereço de faturamento associado à conta que assinou o produto. | 
| País de assinante | O país endereço de faturamento associado à conta que assinou o produto.  | 
| Caixa postal do assinante | A caixa postal do endereço de faturamento associada à conta que assinou o produto. | 
| Título do produto | O título do produto. | 
| Nome da oferta | O nome definido pelo vendedor da oferta. | 
| ID da oferta | O identificador da oferta que o comprador assinou.  | 
| Visibilidade da oferta | Se a oferta é pública, privada ou de contrato empresarial. | 
| ID do conjunto de ofertas | O identificador do conjunto de ofertas associado à oferta. | 
| ID do contrato | Uma referência exclusiva de feed de dados do contrato assinado entre um proponente e um aceitante para começar a usar um produto.  | 
| Data de início do contrato | A data de início da assinatura do produto do cliente, formatada como MM-DD-YYYY. Essa data pode ser diferente da data de aceitação se for um contrato com data futura. | 
| Data de término do contrato | A data em que o contrato expira, formatada como. MM-DD-YYYY Para pay-as-you-go assinaturas limitadas/, essa data é definida como 1º de janeiro de 9999. | 
|  |  | 
| Data de aceitação do contrato | A data em que o cliente assinou o produto, formatada como MM-DD-YYYY. | 
| Data de término do período de uso | A data de término do período de uso do produto. | 
| Data de início do período de uso | A data de início do período de uso do produto. | 
| Status do pagamento | Um status associado a uma fatura para confirmar que AWS coletou e desembolsou fundos em suas contas bancárias desde o desembolso anterior. Os fundos desembolsados para a fatura associada foram coletados e desembolsados. Os fundos não desembolsados da fatura associada não foram coletados e desembolsados.  | 
| Data do pagamento | A data em que o desembolso AWS foi iniciado para o banco do vendedor. | 
| ID de rastreamento bancário do pagamento | Para pagamentos, o ID de rastreamento é atribuído pelo banco. O ID de rastreamento bancário pode ser usado para correlacionar notificações e relatórios de depósito fornecidos pelo banco do vendedor às faturas nos relatórios. AWS Marketplace  | 
| Receita bruta | O valor faturado ao cliente pelas taxas mensais ou de uso do produto. | 
| Reembolso bruto | O valor total do custo de assinatura reembolsado aos clientes caso algum reembolso tenha sido processado durante o período de cobertura dos dados.  | 
| Taxa de listagem | O valor da AWS Marketplace taxa a ser deduzido do valor faturado. | 
| Reembolso da taxa de listagem | A parte da AWS Marketplace taxa reembolsada se algum reembolso for processado durante o período de cobertura de dados. | 
| Percentual da taxa de listagem | A porcentagem da AWS Marketplace taxa a ser deduzida do valor faturado. | 
| Participação fiscal do vendedor | A quantidade total de impostos sobre uso e vendas nos EUA faturada para essa transação. | 
| Reembolso de participação fiscal do vendedor | O valor total de impostos sobre vendas e uso nos EUA reembolsado para esta transação caso um reembolso tenha sido processado. | 
| AWS taxa de listagem de ações fiscais | Onde AWS , como operador de mercado, é obrigado a cobrar e cobrar o IVA em seu próprio nome nas vendas feitas pelos vendedores. Esse valor corresponderá ao valor do IVA cobrado em sua conta de AWS Marketplace vendedor. | 
| AWS taxa de listagem de reembolso de ações fiscais | Onde AWS , como operador de mercado, é obrigado a reembolsar o IVA em seu próprio nome nas vendas feitas pelos vendedores. Esse valor corresponderá ao valor do IVA reembolsado em sua conta de AWS Marketplace vendedor.  | 
| Custo de atacado | Somente para ofertas privadas de parceiros de canal. O custo das mercadorias para um revendedor. Por exemplo, quanto um revendedor paga a um fabricante quando vende o produto de um fabricante. O custo de atacado é o preço sugerido multiplicado pela porcentagem de desconto. | 
| Reembolso de custo de atacado | Somente para ofertas privadas de parceiros de canal. O custo reembolsado das mercadorias de um revendedor. | 
| Participação fiscal do vendedor atacadista | O imposto sobre a venda entre ISV e o parceiro de canal em uma oferta privada do parceiro de canal (CPPO) no qual o vendedor seja passivo tributário. Para ofertas públicas e ofertas privadas do Marketplace (MPPOs), esse campo será “Não aplicável”. | 
| Reembolso de participação fiscal do vendedor atacadista | O reembolso do imposto sobre a venda entre ISV e o parceiro de canal em uma oferta privada do parceiro de canal (CPPO) no qual o vendedor seja passivo. Para ofertas públicas e ofertas privadas do Marketplace (MPPOs), esse campo será “Não aplicável”. | 
| Participação fiscal de outro vendedor atacadista | O imposto sobre a venda entre ISV e o parceiro de canal em uma oferta privada do parceiro de canal (CPPO) no qual o vendedor seja passivo tributário. Este campo é preenchido quando o outro vendedor envolvido na transação é responsável. Para ofertas públicas e ofertas privadas do Marketplace (MPPOs), esse campo será “Não aplicável”. | 
| Reembolso da participação fiscal de outro vendedor atacadista | O reembolso do imposto sobre a venda entre ISV e o parceiro de canal em uma oferta privada do parceiro de canal (CPPO) no qual o vendedor seja passivo. Este campo é preenchido quando o outro vendedor envolvido na transação é responsável. Para ofertas públicas e ofertas privadas do Marketplace (MPPOs), esse campo será 'Não aplicável'. | 
| Participação AWS fiscal no atacado | O imposto sobre a venda entre ISV e Channel Partner em uma oferta privada de Channel Partner (CPPO), onde AWS é tributável. Para ofertas públicas e ofertas privadas do Marketplace (MPPOs), esse campo será “Não aplicável”. | 
| Reembolso de participação AWS fiscal por atacado | O reembolso do imposto sobre a venda entre o ISV e o Parceiro de Canal em uma oferta privada do Parceiro de Canal (CPPO) em que AWS é tributável. Para ofertas públicas e ofertas privadas do Marketplace (MPPOs), esse campo será “Não aplicável”. | 
| Receita líquida do vendedor | O valor total cobrado pela transação, líquido de AWS Marketplace taxas, reembolsos e imposto sobre vendas e uso dos EUA. | 
| Moeda | A moeda da transação. Por exemplo, se a transação for em dólares americanos, a entrada é USD. | 
| ID de referência da transação | Um identificador exclusivo que representa a transação, que você pode usar para correlacionar transações entre AWS Marketplace relatórios. | 
| AWS vendedor de discos |  Um identificador da entidade comercial que facilitou a transação. Os valores possíveis são: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/collections-disbursement-dashboard.html)  | 
| ID de autorização de revenda |  O identificador exclusivo para uma oportunidade registrada.  | 
| Nome de autorização de revenda | O nome exclusivo para uma oportunidade registrada. | 
| Descrição da autorização de revenda | A descrição definida pelo ISV para uma oportunidade registrada. | 
| Nome da empresa do revendedor | O nome da conta que comprou um produto ou serviço a preço de atacado de um ISV para revender a um cliente. | 
| ID do revendedor Conta da AWS  | O ID da conta que comprou um produto ou serviço a preço de atacado de um ISV para revender a um cliente.  | 
| Nome da empresa pagadora | O nome da conta para a qual as cobranças são faturadas. | 
| ID do pagador Conta da AWS  | O ID da conta para a qual as cobranças são faturadas. | 
| Domínio de e-mail do pagante |  O domínio de e-mail associado à conta para a qual as cobranças são faturadas. Por exemplo, se o endereço de e-mail for liu-jie@exemplo.com, a entrada será example.com.  | 
| Cidade do pagador | A cidade do endereço de faturamento associada à conta para a qual as cobranças são faturadas. | 
| Estado ou região do pagador | O estado do endereço de faturamento associado à conta para a qual as cobranças são faturadas. | 
| País do pagador | O código de país de dois caracteres associado à conta para a qual as cobranças são faturadas. | 
| Código postal do pagador |  O código postal do endereço de faturamento associado à conta na qual as cobranças do software são faturadas.  | 
| ID da conta do ISV | O identificador do proprietário do produto ou serviço. | 
| Nome da empresa do ISV | O nome comercial do proprietário do produto ou serviço. | 
| ID do produto |  O identificador exclusivo fácil de lembrar para o produto de software.  | 
| Status do pagamento | Um status associado a uma fatura para confirmar que não desembolsou nenhum saldo, parcial ou total, em sua AWS conta bancária. Os status possíveis são: Pago, Pago parcialmente, Falha, Não pago.  | 
| Receita líquida desembolsada | O valor total da transação desembolsado para o vendedor. Se o valor não for igual à “receita líquida do vendedor”, este será um pagamento parcial. | 
| Receita líquida não desembolsada | O valor total da transação não pago ao vendedor. Se o valor for diferente de zero, um saldo restante será devido pelo cliente. | 
| Período de pagamento | As categorias que descrevem os recebíveis variam no tipo de fundos coletados (como sem vencimento, de 1 a 30 dias e de 31 a 60 dias). | 

# Painel fiscal
<a name="taxation-dashboard"></a>

O painel de tributação fornece visualização e dados detalhados sobre impostos dos EUA e internacionais para transações no AWS Marketplace.

Para abrir esse painel, faça login no [Portal de gerenciamento do AWS Marketplace](https://aws.amazon.com/marketplace/management/), escolha **Insights**, **Marketing** e a guia **Desempenho da lista**.

**Topics**
+ [Frequência de atualização do painel tributação](#publication-schedule)
+ [Seção 1: controles](#billed-revenue-dashboard-controls)
+ [Seção 2: data dos filtros](#section-2-invoice-date-range)
+ [Seção 3: métricas](#section-3-metrics)
+ [Seção 4: tendências de tributação](#section-3-metrics)
+ [Seção 5: detalhamentos](#section-4-breakdowns)
+ [Seção 6: dados granulares](#section-5-new-product-subscribers)
+ [Códigos de isenção dos EUA](#us-exemption-code-key)
+ [Códigos de isenção da UE](#eu-exemption-codes)

## Frequência de atualização do painel tributação
<a name="publication-schedule"></a>

Os painéis são atualizados diariamente. Se os dados mais recentes de transação dos sistemas upstream atrasarem, poderá haver um atraso de um a dois dias para que os dados mais recentes sejam refletidos nos painéis.

## Seção 1: controles
<a name="billed-revenue-dashboard-controls"></a>

Esta seção do painel fornece filtros para refinar seus dados de tributação. Você também pode adicionar um filtro a uma análise, como o intervalo de datas que você deseja incluir em qualquer elemento visual. Os filtros selecionados nos controles atualizam os dados exibidos nas seções de métricas, tendências, detalhamentos e dados granulares.

Para obter mais informações sobre filtragem, consulte [Filtrando dados no Quick no Guia Rápido](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html) *do Usuário*.

### Descrição dos controles
<a name="control-descriptions"></a>


| Nome do controle | Description | 
| --- | --- | 
| ID da fatura  | A AWS ID atribuída às cobranças cobradas ao cliente. | 
| ID de cliente Conta da AWS tributado | O AWS ID da conta que foi tributada pela assinatura do produto. | 
| AWS vendedor de discos | Um identificador da entidade comercial que facilitou a transação. | 
| País tributado do cliente | O código do país de dois caracteres associado ao cliente tributado | 
| Estado ou região do cliente tributado | O estado ou região do endereço de faturamento associado ao cliente tributado. | 
| Cidade do cliente tributado | A cidade do endereço de cobrança associada ao cliente tributado | 
| Tributável | Transações de origem que são tributáveis, não tributáveis e reembolsos de impostos. | 
| Parte responsável pelo imposto |  `AWS` ou `Seller`. Se o vendedor for o responsável pelo imposto, os impostos são cobrados. Se AWS for a parte responsável pelo imposto, o imposto sobre vendas é coletado e remetido por. AWS Para obter mais informações, consulte a [Ajuda fiscal do comprador do AWS Marketplace](https://aws.amazon.com/tax-help/marketplace-sellers/). Se não forem cobrados impostos, nenhum valor será mostrado. O vendedor deve determinar se alguns impostos foram cobrados para cada fatura, pois o vendedor é responsável pela cobrança de impostos.  | 
| Tipo de imposto | O tipo de imposto que é aplicado à transação. Os valores possíveis são None, Sales e SellerUse, Tax registration type, VAT (Imposto sobre valor agregado), CNPJ, IGST, CT. | 

## Seção 2: data dos filtros
<a name="section-2-invoice-date-range"></a>

Esta seção do painel fornece filtros para refinar os registros com base na data de fatura para um intervalo de datas especificado. O filtro selecionado nas atualizações de datas da fatura atualiza os dados exibidos nas seções de métricas, tendências, detalhamentos e dados granulares. Por exemplo, se você selecionar o filtro de data `Past 30 days`, todas as seções refletirão os dados associados às faturas tributadas nos últimos 30 dias. 

## Seção 3: métricas
<a name="section-3-metrics"></a>

Essa seção do painel exibe os principais indicadores de desempenho (KPI) para visualizar métricas relacionadas ao imposto, incluindo valor tributável, valor não tributável, valor do imposto, número de faturas tributadas e número total de transações. Você pode atualizar o intervalo de datas atualizando o filtro de data na seção **Filtros**. 

## Seção 4: tendências de tributação
<a name="section-3-metrics"></a>

Esta seção do painel fornece tendências de tributação para um intervalo de datas especificado. Você pode visualizar as tendências por meio de uma agregação de datas especificada, como diariamente,,, ou month-over-month quarter-over-quarter, year-over-year para obter informações sobre a tributação. As seguintes informações sobre tendências fiscais estão disponíveis: 
+ **Tendências fiscais (valores)**: fornece uma visão geral dos valores tributáveis e tributários do período selecionado por data da fatura.
+ **Tendências fiscais (número de faturas)**: fornece um instantâneo do número de faturas para o período selecionado por data da fatura.

## Seção 5: detalhamentos
<a name="section-4-breakdowns"></a>

Esta seção do painel fornece métricas fiscais para sua empresa por ID da fatura, tipo fiscal, título do produto e região do cliente.

## Seção 6: dados granulares
<a name="section-5-new-product-subscribers"></a>

Esta seção do painel exibe os dados tributários granulares das transações da sua organização no AWS Marketplace.

### Descrições de dados granulares
<a name="billed-revenue-dashboard-granular-data"></a>


| Coluna | Description | 
| --- | --- | 
| ID da fatura | O AWS ID atribuído à AWS fatura em que as cobranças foram cobradas. Pode ser uma fatura comercial do comprador, uma fatura de atacado do vendedor ou uma fatura de taxa de anúncio do vendedor. | 
| ID da fatura da taxa de listagem | O AWS ID atribuído à fatura em que as taxas de anúncio do vendedor e o IVA foram cobrados do vendedor. Aplicável ISVs somente a. | 
| ID do item de linha | Um identificador exclusivo de um item de linha. As transações de reembolso têm o mesmo ID do item de linha das transações de impostos encaminhadas. | 
| ID da fatura do cliente | ID da fatura do cliente | 
| ID da fatura fiscal | O identificador da nota fiscal para a linha tributária em casos de faturamento duplo. Este campo será nulo para cenários de faturamento unificado. | 
| Data da fatura fiscal | A data da nota fiscal. Este campo será nulo para cenários de faturamento unificado. | 
| Parte responsável pelo imposto  |  `AWS` ou `Seller`. Se o vendedor for o responsável pelo imposto, os impostos são cobrados. Se AWS for a parte responsável pelo imposto, o imposto sobre vendas é coletado e remetido por. AWS Para obter mais informações, consulte a [Ajuda fiscal do comprador do AWS Marketplace](https://aws.amazon.com/tax-help/marketplace-sellers/). Se não forem cobrados impostos, nenhum valor será mostrado. O vendedor deve determinar se alguns impostos foram cobrados para cada fatura, pois o vendedor é responsável pela cobrança de impostos.  | 
| Código do tipo de transação | O tipo de código da transação. Os valores incluem:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/taxation-dashboard.html)As transações de reembolso compartilham o ID do item de linha com as transações originais encaminhadas. | 
| ID do produto | O identificador exclusivo fácil de lembrar para o produto de software. | 
| Título do produto | O nome do produto comprado. | 
| Código tributário do produto | Um código padrão para identificar as propriedades de impostos de um produto. Você escolhe as propriedades ao criar ou modificar o produto. | 
| Data da fatura | A data em que o cliente foi cobrado e taxado pela assinatura do produto. | 
| ID de cliente Conta da AWS tributado | O Conta da AWS ID do cliente tributado. | 
| País tributado do cliente | O código do país de dois caracteres associado ao cliente tributado. | 
| Estado ou região do cliente tributado | O estado ou região do endereço de faturamento associado ao cliente tributado. | 
| Cidade do cliente tributado | A cidade do endereço de cobrança associada ao cliente tributado. | 
| Caixa postal do cliente tributado | O código postal usado para cálculos fiscais. | 
| Tipo de imposto | O tipo de imposto que é aplicado à transação. Os valores possíveis são None, Sales e SellerUse, Tax registration type, VAT, CNPJ, IGST, CT. | 
| Nível de jurisdição | O nível de jurisdição do endereço que é usado para o local tributário. Os valores possíveis são State, County, City e District. | 
| Jurisdição tributada | O nome da jurisdição tributada. | 
| Exibir o tipo de tributabilidade do preço | O tipo de tributabilidade do preço que aparece para os clientes. Todas as AWS Marketplace ofertas são exclusivas. | 
| Taxa de jurisdição fiscal | A taxa fiscal que é aplicada de acordo com o nível de jurisdição. | 
| Valor do imposto | O imposto que é cobrado de acordo com o nível de jurisdição. | 
| Moeda | A moeda do cobrado fiscal. Por exemplo, se a transação for em dólares americanos, a entrada é USD. | 
| Valor do imposto legal | O valor do imposto mostrado na moeda legal cobrada no nível da jurisdição. | 
| Moeda fiscal legal | A moeda mostrada na moeda legal do imposto cobrado. | 
| Código de motivo do cálculo tributário | Se a transição é tributável, não tributável, isenta ou taxa zero, organizado de acordo com o nível de jurisdição. | 
| Data usada para o cálculo tributário | A data que é usada para calcular os impostos da transação. | 
| ID do certificado de isenção do cliente | O ID do certificado do certificado de isenção. | 
| Domínio do ID do certificado de isenção do cliente | Se o certificado está sendo armazenado nos sistemas da Amazon. | 
| Nível do certificado de isenção do cliente | O nível de jurisdição que forneceu a isenção. | 
| Código de isenção do cliente | O código que especifica a isenção. Por exemplo, .RESALE | 
| ID de referência da transação | Um identificador exclusivo para a transação que ajuda você a correlacionar transações entre AWS Marketplace relatórios. | 
| AWS vendedor de discos | Um identificador da entidade comercial que facilitou a transação. | 
| ID da fatura do comprador | A AWS ID atribuída à AWS fatura em que foi cobrada foi cobrada ao comprador. Os vendedores podem associar a fatura de atacado ou a fatura da taxa do anúncio à cobrança correspondente do comprador. | 

**nota**  
Os valores totais de impostos e os encargos totais do comprador foram movidos para os campos **Participação fiscal da AWS ** e **Receita bruta** no [Painel de receita faturada](https://docs.aws.amazon.com/marketplace/latest/userguide/billed-revenue-dashboard.html).

## Códigos de isenção dos EUA
<a name="us-exemption-code-key"></a>


| Código de exceção | Description | 
| --- | --- | 
| 501C | Organização 501C | 
| AP | Produção agrícola | 
| CO | Organização de caridade | 
| DIRECT | Permissão de Pagamento Direto | 
| DISTSBT | Distribuidor | 
| DP | Nações Unidas/Diplomata | 
| DV | Veterano com deficiência | 
| EDI | Instituição de ensino | 
| FG | Governo Federal | 
| HCP | Provider Health Care | 
| HO | Hospital (sem fins lucrativos ou estadual) | 
| INSUR | Seguros | 
| IPM | IPM | 
| LB | Biblioteca | 
| MPU | Isenção de vários pontos de uso; isenção digital Products/Software  | 
| NA | Nativo americano  | 
| NAI | Indivíduo nativo americano | 
| NP | Organização sem fins lucrativos | 
| NPR | Organização religiosa sem fins lucrativos | 
| OT | Outros | 
| RESALE | Revendedor | 
| SBE | Isenção para empresas de pequeno porte | 
| SLG | Governo estadual/local | 

## Códigos de isenção da UE
<a name="eu-exemption-codes"></a>


| Código de exceção | Description | 
| --- | --- | 
| SpecialOrg | Organizações isentas da cobrança de IVA. | 
| SpecialZone | Uma área isenta de impostos. | 
| SplitPayment | O comprador efetua o pagamento de qualquer IVA declarado em uma fatura diretamente à autoridade fiscal. | 

# Painéis para operações de vendas
<a name="sales-operations"></a>

O AWS Marketplace fornece vários painéis para ajudar você a rastrear seus dados de vendas.

**Topics**
+ [Painel de contratos e renovações](agreements-renewals-dashboard.md)
+ [Painel de uso](usage-dashboard.md)

# Painel de contratos e renovações
<a name="agreements-renewals-dashboard"></a>

Este painel fornece informações sobre contratos e renovações em até 24 horas após a assinatura de um contrato no AWS Marketplace. Esse painel pode ajudar você a monitorar assinaturas expiradas.

Para abrir o painel, inicie o Portal de gerenciamento do AWS Marketplace, escolha a guia **Insights** e, em seguida, escolha **Operações de vendas**.

**Topics**
+ [Seção 1: controles](#agreements-renewals-dashboard-controls)
+ [Seção 2: selecione a categoria de data](#agreements-renewals-dashboard-select-date-category)
+ [Seção 3: métricas](#agreements-renewals-dashboard-metrics)
+ [Seção 4: tendências de assinatura](#agreements-renewals-dashboard-subscription-trends)
+ [Seção 5: detalhamentos](#agreements-renewals-dashboard-breakdowns)
+ [Seção 6: dados granulares](#agreements-renewals-dashboard-granular-data)

## Seção 1: controles
<a name="agreements-renewals-dashboard-controls"></a>

Esta seção fornece filtros para refinar os dados do contrato e da renovação. Você pode selecionar um dos seguintes filtros.

**nota**  
Para obter mais informações sobre filtragem, consulte [Filtrando dados no Quick no Guia Rápido](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html) *do Usuário*.

### Descrição dos controles
<a name="agreements-renewals-dashboard-controls-descriptions"></a>


| Nome do controle | Description | 
| --- | --- | 
| ID do assinante Conta da AWS  | O ID da conta que está inscrita no produto. | 
| Nome da empresa assinante | O nome da conta que está inscrita no produto. | 
| ID da oferta | O identificador da oferta que o comprador assinou. | 
| Visibilidade da oferta | Se a oferta é pública, privada ou de contrato empresarial. | 
| ID do conjunto de ofertas | O identificador do conjunto de ofertas associado à oferta. | 
| ID do contrato | Uma referência exclusiva de feed de dados do contrato assinado entre um proponente e um aceitante para começar a usar um produto. | 
| Sinalizador CPPO |  Uma yes/no bandeira indicando se um acordo foi feito usando uma oferta privada de um parceiro de canal. Em caso afirmativo, o vendedor do registro é o parceiro do canal. Em caso negativo, o vendedor do registro é o fabricante do software (fornecedor independente de software).  | 
| ID da AWS conta ISV |  A conta do proprietário do produto ou serviço.  | 
| Nome da empresa do ISV |  O nome comercial do proprietário do produto ou serviço.  | 
| ID do produto legado | O identificador exclusivo legado do produto de software. | 
| Título do produto | O título do produto. | 
| ID de autorização de revenda |  O ID da autorização de revenda fornecida pelo ISV ao parceiro de canal.  | 
| Nome de autorização de revenda | O nome da autorização de revenda fornecida pelo ISV ao parceiro de canal. | 
| ID do revendedor Conta da AWS  | O ID da conta que comprou um produto ou serviço no atacado de um ISV para revender a um cliente. | 
| Nome da empresa do revendedor | O nome comercial da conta de revendedor autorizada a vender o produto de um fabricante de software. | 
| País de assinante | O código de país de dois caracteres associado à conta inscrita no produto. | 
| Estado ou região do assinante | O estado ou região do endereço de faturamento associado à conta. que assinou o produto. | 
| Cidade do assinante | A cidade do endereço de faturamento associada à conta que assinou o produto. | 

## Seção 2: selecione a categoria de data
<a name="agreements-renewals-dashboard-select-date-category"></a>

Esta seção do painel fornece filtros para refinar os registros com base na data de término do contrato, no período de término do contrato ou na data de início do contrato para um intervalo de datas especificado. O filtro selecionado na categoria de data selecionada atualiza os dados exibidos nas seções de métricas, tendências, detalhamentos e dados granulares.

Para obter informações sobre contratos assinados recentemente, você pode filtrar pela data de início do contrato. Se quiser aprender sobre renovações de contratos, você pode filtrar usando a data de término do contrato.

## Seção 3: métricas
<a name="agreements-renewals-dashboard-metrics"></a>

Esta seção do painel exibe um indicador-chave de desempenho (KPI) para visualizar uma comparação dos principais dados do acordo. Um KPI é exibido para o número de contratos ativos e o número de contratos encerrados. Você pode atualizar o intervalo de datas atualizando os critérios de data no campo Selecionar categoria de data.

## Seção 4: tendências de assinatura
<a name="agreements-renewals-dashboard-subscription-trends"></a>

Esta seção do painel fornece tendências de assinatura para um intervalo de datas especificado. Você pode visualizar as tendências por meio de uma agregação de datas especificada, como diariamente,,, ou month-over-month quarter-over-quarter, year-over-year para obter informações sobre os contratos. As informações sobre tendências de contratos e renovações estão disponíveis em um nível agregado.
+ **Tendências de assinatura**: fornece uma visão geral do número de contratos ativos e do número de contratos encerrados com base no filtro de agregação de datas selecionado e no filtro de categoria de data selecionado. Para ver as tendências de assinatura das datas de início do contrato, você pode selecionar **Data de início do contrato** no filtro **Selecionar categoria de data**. Para ver as tendências de assinatura para as datas de término do contrato, selecione **Data de término do contrato** no filtro **Selecionar categoria de data**. 
+ **Detalhamento da renovação**: fornece uma visão geral das renovações que terminaram ou estão prestes a terminar em um número específico de dias. Você pode ver os detalhamentos da renovação por vários períodos, como contratos que terminaram de um a 30 dias atrás, de 31 a 60 dias atrás ou há mais de 60 dias. Você também pode filtrar contratos que estão prestes a terminar em zero a 30 dias, 31 a 60 dias e assim por diante. 

## Seção 5: detalhamentos
<a name="agreements-renewals-dashboard-breakdowns"></a>

Esta seção do painel fornece métricas para sua empresa em todos os nomes de empresas ISVs, assinantes ativos e revendedores. Você pode ver o número de contratos IDs, contrato encerrado IDs, oferta IDs IDs, contrato renovado e assinantes.

## Seção 6: dados granulares
<a name="agreements-renewals-dashboard-granular-data"></a>

Esta seção do painel mostra dados granulares de contratos, ofertas, produtos, proponentes do contrato, assinantes, autorizações de revenda, revendedores e. ISVs 

**nota**  
Para obter mais informações sobre como exportar e baixar dados de uma tabela rápida, consulte [Exportação de dados de elementos visuais](https://docs.aws.amazon.com/quicksight/latest/user/exporting-data.html) no Guia *rápido do usuário*.

### Descrições de dados granulares
<a name="agreements-renewals-dashboard-granular-data-descriptions"></a>


| Coluna | Description | 
| --- | --- | 
| Nome da empresa assinante | Nome da empresa do assinante. | 
| ID da AWS conta do assinante | O ID da conta que está inscrita no produto. | 
| Domínio de e-mail do assinante | O domínio de e-mail associado à conta que assinou o produto. Por exemplo, se o endereço de e-mail for liu-jie@exemplo.com, a entrada será example.com. | 
| País de assinante | O país endereço de faturamento associado à conta que assinou o produto. | 
| Estado ou região do assinante | O estado do endereço de faturamento associado à conta que assinou o produto. | 
| Cidade do assinante | A cidade do endereço de faturamento associada à conta que assinou o produto. | 
| Caixa postal do assinante | A caixa postal do endereço de faturamento associada à conta que assinou o produto. | 
| Título do produto | O título do produto. | 
| ID do produto | O identificador exclusivo fácil de lembrar para o produto de software. | 
| ID do produto legado | O identificador exclusivo legado do produto de software. | 
| Nome da oferta | O nome definido pelo vendedor da oferta. | 
| ID da oferta | O identificador da oferta que o comprador assinou. | 
| Visibilidade da oferta | Se a oferta é pública, privada ou de contrato empresarial. | 
| ID do conjunto de ofertas | O identificador do conjunto de ofertas associado à oferta. | 
| ID do contrato | Uma referência exclusiva de feed de dados do contrato assinado entre um proponente e um aceitante para começar a usar um produto. | 
| Data de início do contrato | A data de início da assinatura do produto do cliente, formatada como MM-DD-YYYY. Essa data pode ser diferente da data de aceitação se for um contrato com data futura. | 
| Data de aceitação do contrato | A data em que o cliente assinou o produto, formatada como MM-DD-YYYY. | 
| Data de término do contrato | A data em que o contrato expira, formatada como. MM-DD-YYYY Para pay-as-you-go assinaturas limitadas/, essa data é definida como 1º de janeiro de 9999. | 
| Status | O status atual do contrato. Os status aceitos incluem: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/agreements-renewals-dashboard.html)  | 
| Tipos de termos do contrato |  Os tipos de termos associados e aceitos pelo aceitante durante a criação do contrato. | 
| Valor estimado do contrato | O custo estimado do contrato, também conhecido como “Valor total do contrato” OU “Valor da compra”. Isso se aplica aos seguintes tipos de produtos: SaaS, serviços profissionais e servidores e tipos de preços contratuais ou anuais. | 
| Código da moeda | A moeda do preço da oferta associada ao custo estimado do contrato. | 
| Nome da empresa do revendedor | O nome da conta que comprou um produto ou serviço a preço de atacado de um ISV para revender a um cliente. | 
| ID da AWS conta do revendedor | O ID da conta que comprou um produto ou serviço a preço de atacado de um ISV para revender a um cliente. | 
| ID de autorização de revenda | O identificador exclusivo para uma oportunidade registrada. | 
| Nome de autorização de revenda | O nome exclusivo para uma oportunidade registrada. | 
| Descrição da autorização de revenda | A descrição definida pelo ISV para uma oportunidade registrada. | 
| Sinalizador CPPO | Campo calculado em Rápido. | 
| Intenção do contrato | Preenche se o contrato atual foi uma renovação ou atualização de um contrato anterior fornecido na coluna agreement\$1id anterior. Os possíveis valores incluem:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/agreements-renewals-dashboard.html) | 
| ID do contrato anterior | Referência do contrato se este contrato foi renovado ou atualizado. | 
| ID do próximo contrato | ID do contrato seguinte se o contrato atual tiver sido renovado ou atualizado. | 
| ID da oferta anterior | ID da oferta associada aos contratos anteriores se o contrato atual tiver sido renovado ou atualizado. | 
| ID da próxima oferta | ID da oferta associada ao próximo contrato se o contrato atual tiver sido renovado ou atualizado. | 
| Datas de aceitação do ID do próximo contrato | A data em que o próximo contrato foi aceito pelo comprador.  | 
| ID da conta do proponente AWS  | O identificador do proprietário do produto ou serviço. | 
| Nome da empresa proponente | O nome comercial do proprietário do produto ou serviço. | 
| ID da AWS conta ISV | O AWS identificador do vendedor. | 
| Nome da empresa do ISV | O nome comercial do vendedor. | 
| O contrato termina (em dias) | Campo calculado no QuickSight. O número de dias restantes para que o contrato termine a partir de hoje. | 
| Período final do contrato | Campo calculado em Rápido. O período dentro do qual o contrato terminará.  | 

# Painel de uso
<a name="usage-dashboard"></a>

O painel de uso fornece visualizações e dados detalhados para clientes que usam SaaS e produtos baseados no uso do servidor. AWS Marketplace os vendedores podem usar esse painel para rastrear o consumo do cliente em produtos baseados no uso para tomar decisões sobre suporte ao produto, preços, conversão de ofertas públicas para privadas e descontinuação do produto. O painel fornece dados dos últimos seis meses, que é uma janela contínua.

Para abrir o painel, faz login no [Portal de gerenciamento do AWS Marketplace](https://aws.amazon.com/marketplace/management/), escolha **Insights**, **Operações de vendas** e a guia **Uso**. 

**nota**  
Esse painel exibe o uso de todas as chaves de dimensão especificadas no momento da criação da oferta. Por exemplo, para produtos de imagem de máquina da Amazon (AMI), as chaves de dimensão são tipos de instância, e todos os tipos de instância especificados na oferta vão aparecer nesse painel, mesmo com preço a USD 0. Para ver o uso do produto para uma dimensão que não foi especificada no momento da criação da oferta, considere republicar o produto para incluir a dimensão necessária.

**Nota importante para ofertas privadas que não sejam em USD**  
O Painel de Uso exibe todos os dados de uso da Oferta Privada em USD, independentemente da moeda original da sua oferta (JPY, EUR, GBP etc.). Esse é o comportamento pretendido, já que os Relatórios de Custos e Uso (CUR) da AWS atualmente relatam preços somente em dólares americanos. Se você criou Ofertas Privadas em moedas diferentes de USD, observe que:  
Todas as métricas e estimativas de uso no painel serão mostradas em USD
Os valores em USD exibidos são convertidos da moeda original da oferta
Suas faturas e desembolsos reais refletirão a moeda original de sua Oferta Privada
Para uma reconciliação financeira precisa, consulte suas faturas em vez de confiar apenas nas estimativas do Painel de Uso

**Topics**
+ [Frequência de atualização do painel de uso](#usage-publication-schedule)
+ [Seção 1: controles](#usage-dashboard-controls)
+ [Seção 2: Filtros](#section-2-invoice-date-range)
+ [Seção 3: métricas](#section-3-metrics)
+ [Seção 4: tendências](#section-3-metrics)
+ [Seção 5: detalhamentos](#section-4-breakdowns)
+ [Seção 6: dados granulares](#section-5-new-product-subscribers)

## Frequência de atualização do painel de uso
<a name="usage-publication-schedule"></a>

Os painéis são atualizados diariamente às 16h PST (meia-noite UTC). Observe que os dados de uso são recebidos de fontes de dados upstream e pode haver atrasos. Você pode consultar a data de uso e a data de uso relatada para esclarecer quando a utilização ocorreu em comparação com quando foi relatado no painel. 

## Seção 1: controles
<a name="usage-dashboard-controls"></a>

Esta seção do painel fornece filtros para refinar seus dados de uso. Por exemplo, você pode selecionar um dos seguintes filtros.

**nota**  
Para obter mais informações sobre filtragem, consulte [Filtragem rápida de dados no](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html) Guia *rápido do usuário*.

### Descrição dos controles
<a name="usage-control-descriptions"></a>


| Nome do controle | Description | 
| --- | --- | 
| Nome da empresa do usuário final | O nome da conta que usou o produto. | 
|  Conta da AWS ID do usuário final | O ID da conta que usou o produto. | 
| País do usuário final | O código do país de dois caracteres associado à conta que utilizou o produto. | 
| Título do produto | O título do produto. | 
| Código do produto | O código do produto de direito existente usado para medir o produto. Este valor também é usado para unir dados com um relatório ou para referenciar o que é fornecido no AWS Marketplace Metering Service. | 
| ID da oferta | O identificador da oferta que o comprador assinou. | 
| Visibilidade da oferta | Se a oferta é pública, privada ou de contrato empresarial. | 
| ID do conjunto de ofertas | O identificador do conjunto de ofertas associado à oferta. | 
| ID do contrato | Uma referência exclusiva de feed de dados do contrato assinado entre um proponente e um aceitante para começar a usar um produto. | 
| Chave de dimensão | O tipo de recurso associado ao uso do produto. As chaves de dimensão se aplicam a produtos SaaS e baseados em uso de servidor. | 
| Nome da empresa assinante | O nome da conta que está inscrita no produto. | 
| ID do assinante Conta da AWS  | O ID da conta que está inscrita no produto. | 
| País de assinante | O código de país de dois caracteres associado à conta inscrita no produto. | 
| Nome da empresa do revendedor | O nome da conta do revendedor autorizado a vender o produto do fabricante de um produto. | 
| ID do revendedor Conta da AWS  | O ID da conta que comprou um produto ou serviço no atacado de um ISV para revender a um cliente. | 
| ID de autorização de revenda | O ID da conta que comprou um produto ou serviço no atacado de um ISV para revender a um cliente. | 
| Sinalizador CPPO | Uma yes/no bandeira indicando se um acordo foi feito usando uma oferta privada de um parceiro de canal. Em caso afirmativo, o vendedor do registro é o parceiro do canal. Em caso negativo, o vendedor do registro é o fabricante do produto (provedor independente de software). | 

## Seção 2: Filtros
<a name="section-2-invoice-date-range"></a>

Esta seção do painel fornece filtros para refinar os registros com base na data de uso. Os valores selecionados nesses filtros atualizam os dados exibidos nas seções de métricas, tendências, detalhamentos e dados granulares. A seleção padrão é extrair dados dos últimos 6 meses de uso.

## Seção 3: métricas
<a name="section-3-metrics"></a>

Esta seção do painel exibe um indicador-chave de desempenho (KPI) para visualizar métricas relacionadas ao consumo: unidades de uso estimadas, clientes com uso e produtos com uso. Você pode atualizar o intervalo de datas atualizando os critérios de data de uso na seção de filtros. Observe que as principais métricas exibem dados para todos os tipos de unidades.

## Seção 4: tendências
<a name="section-3-metrics"></a>

Esta seção do painel fornece tendências de uso para um intervalo de datas especificado. Você pode visualizar as tendências por meio de uma agregação de datas especificada, como diariamente,, month-over-month quarter-over-quarter, ou year-over-year para obter informações sobre o uso. Você também pode selecionar um tipo de unidade de uso para visualizar graficamente suas tendências de uso.

## Seção 5: detalhamentos
<a name="section-4-breakdowns"></a>

Esta seção do painel fornece métricas de uso estimadas para sua empresa em nomes de empresas, títulos de produtos, chave de dimensão e oferta IDs para o tipo de unidade selecionado. Você também pode selecionar o número de entradas a serem visualizadas.

## Seção 6: dados granulares
<a name="section-5-new-product-subscribers"></a>

Esta seção do painel mostra dados granulares de uso, ofertas, produto, assinante, pagador, usuário final, autorizações de revenda, revendedores e fornecedores independentes de software (). ISVs Observe que a tabela de dados granulares exibe dados para todos os tipos de unidade.

A receita deve ser considerada estimada até que o faturamento seja finalizado no final do mês. As faturas baseadas no uso são apresentadas aos compradores no segundo ou terceiro dia do mês seguinte referente ao uso do mês anterior (por exemplo, os clientes com uso medido entre 1.º/11 e 30/11 receberão uma fatura referente ao uso em 2/12 ou 3/12). O uso medido pode chegar a esse painel vários dias após a data de uso real; portanto, a data de uso e as datas de uso relatadas podem ser diferentes. Isso significa que talvez você precise visitar o painel diariamente durante todo o mês para up-to-date acompanhar o mês atual. Para obter informações oficiais sobre o faturamento do cliente, consulte o [Painel de receita faturada](https://docs.aws.amazon.com/marketplace/latest/userguide/billed-revenue-dashboard.html) na guia **Operações financeiras**.

**nota**  
Para obter mais informações sobre filtragem, consulte [Exportação de dados de elementos visuais no Guia](https://docs.aws.amazon.com/quicksight/latest/user/exporting-data.html) *rápido* do usuário.

### Descrições de dados granulares
<a name="billed-revenue-dashboard-granular-data"></a>


| Coluna | Description | 
| --- | --- | 
| Data de uso | A data de consumo do produto do cliente. | 
| Data relatada de uso | A data em que o consumo do produto do cliente aparece no painel de insights. | 
| Nome da empresa do usuário final | O nome da conta que usou o produto. | 
| ID da AWS conta do usuário final | O ID da conta que usou o produto. | 
| Domínio de e-mail do usuário final | O domínio de e-mail associado à conta que usou o produto. Por exemplo, se o endereço de e-mail for abc@exemplo.com, a entrada será exemplo.com. | 
| Cidade do usuário final | A cidade associada à conta que utilizou o produto. | 
| Estado ou região do usuário final | O estado ou região associado à conta que utilizou o produto. | 
| País do usuário final | O código do país de dois caracteres associado à conta que utilizou o produto. | 
| Código postal do usuário final | A caixa postal do endereço de cobrança associada à conta que usou o produto. | 
| Título do produto | O título do produto. | 
| ID do produto legado | O identificador exclusivo legado do produto. | 
| ID do produto | O identificador exclusivo fácil de usar do produto. | 
| Código do produto | O código do produto de direito existente usado para medir o produto. Esse valor também é usado para unir dados com um relatório ou para fazer referência ao que é fornecido no AWS Marketplace Metering Service. | 
| ID da oferta | O identificador da oferta que o comprador assinou. | 
| Nome da oferta | O nome definido pelo vendedor da oferta. | 
| Visibilidade da oferta | Se a oferta é pública, privada ou de contrato empresarial. | 
| ID do conjunto de ofertas | O identificador do conjunto de ofertas associado à oferta. | 
| ID do contrato | Uma referência exclusiva de feed de dados do contrato assinado entre um proponente e um aceitante para começar a usar um produto. | 
| Data de aceitação do contrato | O carimbo de data e hora em UTC quando o cliente assinou o produto. | 
| Data de início do contrato | Os carimbos de data/hora em UTC quando a assinatura do produto do cliente começa. Essa data pode ser diferente da data de aceitação se for um contrato com data futura. | 
| Data de término do contrato | A data em UTC em que o contrato expira. Para pay-as-you-go assinaturas limitadas/, essa data é definida para 1º de janeiro de 9999 às 12h. | 
| Tipos de termos do contrato | Os tipos de termos associados e aceitos pelo aceitante durante a criação do contrato. | 
| Chave de dimensão | O tipo de recurso associado ao uso do produto. As chaves de dimensão se aplicam a produtos SaaS e baseados em uso de servidor. | 
| Região | A região onde o comprador implantou instâncias do Amazon EC2. | 
| Uso estimado | A quantidade do uso registrado do produto. | 
| Tipos de unidade de uso | O tipo de unidade para o qual o uso é registrado. | 
| Taxa de uso por unidade | A taxa de uso por unidade. | 
| Descrição do item de cobrança | A descrição da cobrança. | 
| Receita estimada | A receita do uso do produto. A receita deve ser considerada estimada até que o faturamento seja finalizado no final do mês. As faturas baseadas na utilização são apresentadas aos compradores no segundo ou terceiro dia do mês seguinte em relação à utilização do mês anterior. | 
| Moeda | A moeda da transação. Por exemplo, se a transação for em dólares americanos, a entrada é USD. | 
| Nome da empresa assinante | O nome da conta que está inscrita no produto. | 
| ID do assinante Conta da AWS  | O ID da conta que está inscrita no produto. | 
| Domínio de e-mail do assinante | O domínio de e-mail associado à conta que assinou o produto. Por exemplo, se o endereço de e-mail for abc@exemplo.com, a entrada será exemplo.com. | 
| Cidade do assinante | A cidade do endereço de faturamento associada à conta que assinou o produto. | 
| Estado ou região do assinante | O estado do endereço de faturamento associado à conta que assinou o produto. | 
| País de assinante | O país endereço de faturamento associado à conta que assinou o produto. | 
| Caixa postal do assinante | A caixa postal do endereço de cobrança associada à conta que assinou o produto. | 
| Nome da empresa pagadora | O nome da conta que pagou pelo produto. | 
| ID do pagador Conta da AWS  | O ID da conta que pagou pelo produto. | 
| Domínio de e-mail do pagante | O domínio de e-mail associado à conta que pagou pelo produto. Por exemplo, se o endereço de e-mail for abc@exemplo.com, a entrada será exemplo.com. | 
| Cidade do pagador | A cidade do endereço de cobrança associada à conta que pagou pelo produto. | 
| Estado ou região do pagador | O estado do endereço de cobrança associado à conta que pagou pelo produto. | 
| País do pagador | O país do endereço de cobrança associado à conta que pagou pelo produto. | 
| Código postal do pagador | O código postal do endereço de cobrança associado à conta que pagou pelo produto. | 
| Nome da empresa do revendedor | O nome da conta que comprou um produto ou serviço a preço de atacado de um ISV para revender a um cliente. | 
| ID do revendedor Conta da AWS  | O ID da conta que comprou um produto ou serviço a preço de atacado de um ISV para revender a um cliente. | 
| ID de autorização de revenda | O identificador exclusivo de uma oportunidade de revenda registrada. | 
| Nome de autorização de revenda | O nome exclusivo de uma oportunidade de revenda registrada. | 
| Descrição da autorização de revenda | A descrição de uma oportunidade de revenda registrada. | 
| Sinalizador CPPO | Uma yes/no bandeira indicando se um acordo foi feito usando uma oferta privada de um parceiro de canal. Em caso afirmativo, o vendedor do registro é o parceiro do canal. Caso contrário, o vendedor do registro é o fabricante do produto (ISV). | 
| Nome da empresa do ISV | O nome do proprietário do produto ou serviço. | 
| ID DO ISV Conta da AWS  |  O identificador do proprietário do produto ou serviço. | 

# Painéis para marketing
<a name="marketing-dashboards"></a>

O AWS Marketplace fornece vários painéis para ajudar você a rastrear seus dados de marketing.

**Topics**
+ [Painel de contratos com clientes](customer-agreements-dashboard.md)
+ [Painel Desempenho de listagem](listing-performance-dashboard.md)
+ [Painel Performance de pesquisa](search-performance-dashboard.md)
+ [Entendendo o Buy com AWS painéis](buy-with-aws-dashboard.md)

# Painel de contratos com clientes
<a name="customer-agreements-dashboard"></a>

O painel de contratos com clientes fornece uma visão geral dos contratos e dos clientes que assinam seus produtos em AWS Marketplace. O painel fornece dados sobre seus contratos novos e ativos, além de tendências e perfis de clientes.

**nota**  
Para desbloquear esse painel, você deve se inscrever no programa [AWS Marketplace Seller Prime](https://pages.awscloud.com/aws-marketplace-seller-prime.html).
Para abrir esse painel, faça login no [Portal de gerenciamento do AWS Marketplace](https://aws.amazon.com/marketplace/management/), escolha **Insights**, **Marketing** e a guia **Contratos de cliente**.

Para obter mais informações sobre o uso dos AWS Marketplace painéis, consulte[Painéis do vendedor](dashboards.md), anteriormente nesta seção.

**Topics**
+ [Seção 1: Filtros](#customer-agreements-filters)
+ [Seção 2: aprofundamento do filtro de data](#customer-agreements-date-deep-dive)
+ [Seção 3: Contratos de oferta pública e privada](#customer-agreements-public-private-agreements)
+ [Seção 4: Métricas do cliente](#section-5-customer-metrics)

## Seção 1: Filtros
<a name="customer-agreements-filters"></a>

É possível usar os seguintes filtros para refinar os dados dos contratos. 


|  Nome do controle  |  Description  | 
| --- | --- | 
|  Título do produto  |  O título do produto.  | 
|  Filtros de data  |  Inclui dados dos últimos 30, 60 e 90 dias, dos últimos 12 meses (TTM) e do acumulado do ano (YTD). Escolha personalizada para definir uma data específica de início e término.  | 
|  Setor de clientes  |  O setor que AWS define para um cliente que assinou um produto do vendedor.  | 
|  Segmento do cliente  |  O segmento AWS definido para um cliente que assinou um produto do vendedor. Entre os segmentos de cliente estão: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/marketplace/latest/userguide/customer-agreements-dashboard.html)  | 

Para obter mais informações sobre filtragem, consulte [Filtragem de dados no Quick no](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html) *Amazon Quick User Guide*.

## Seção 2: aprofundamento do filtro de data
<a name="customer-agreements-date-deep-dive"></a>

Esse filtro de data se aplica a todas as métricas nos painéis do contrato do cliente.  

Por exemplo, quando você usa o valor padrão do year-to-date filtro, as seguintes métricas aparecem:


|  Métrica  |  Description  | 
| --- | --- | 
|  Contagem de contratos de oferta pública  |  Número de contratos com oferta pública como visibilidade de oferta que tenham pelo menos 1 dia ativo no acumulado do ano.  | 
|  Contagem de contratos de oferta privada  |  Número de contratos com oferta privada como oferta de visibilidade que tenham pelo menos 1 dia ativo no acumulado do ano.  | 
|  Contagem de novos contratos de oferta pública  |  Número de contratos com oferta pública como visibilidade da oferta que têm data de aceitação dentro do acumulado do ano.  | 
|  Contagem de novos contratos de oferta privada  |  Número de contratos com oferta privada como visibilidade da oferta que têm data de aceitação dentro do acumulado do ano.  | 
|  Clientes ativos  |  Número de clientes exclusivos, identificados como o ID da conta da AWS do assinante, que têm pelo menos 1 contrato ativo no acumulado do ano. O contrato ativo é definido como um contrato com pelo menos 1 dia ativo durante o período.  | 
|  Novos clientes pagantes  |  Número de clientes exclusivos, identificados como ID da conta da AWS do assinante, que têm o primeiro mês de cobrança no acumulado do ano.  | 

## Seção 3: Contratos de oferta pública e privada
<a name="customer-agreements-public-private-agreements"></a>

Esta seção do painel exibe uma visão geral dos contratos. Os principais indicadores de desempenho (KPIs) incluem o número de contratos de oferta pública, o número de contratos de oferta privada, o número de novos contratos de oferta pública e o número de novos contratos de oferta privada. Você pode ver as year-over-year period-over-period mudanças no volume e na porcentagem. Você pode atualizar o intervalo de datas atualizando o filtro de data na seção Filtros. 

 Um *contrato* é um contrato assinado entre um proponente (o proprietário do produto ou serviço) e um aceitante (o cliente) para começar a usar um produto. 

**nota**  
As novas métricas do contrato incluem contratos ativos, expirados, cancelados e rescindidos.

 A tabela a seguir lista e descreve os status do contrato. 


|  Status  |  Description  | 
| --- | --- | 
|  Ativo  |  Alguns ou todos os termos do contrato estão em vigor.  | 
|  Expirou  |  O contrato terminou na data de término pré-acordada.  | 
|  Cancelado  |  O aceitante opta por encerrar o contrato antes da data de término.  | 
|  Rescindido  |  O contrato terminou antes da data de término pré-acordada devido a um evento de rescisão iniciado pela AWS, como uma falha no pagamento.  | 
|  Renovado  |  O contrato foi renovado em um novo contrato usando funcionalidades como renovação automática.  | 
|  Substituído  |  O contrato foi substituído por uma oferta de substituição.  | 

## Seção 4: Métricas do cliente
<a name="section-5-customer-metrics"></a>

Essa seção do painel fornece tendências de clientes para um intervalo de datas especificado. KPIsinclua o número de clientes ativos e o número de novos clientes pagantes.
+ **Tendência mensal**: fornece a visualização mensal do número de clientes ativos e do número de novos clientes pagantes com base no filtro do gráfico. 
+ **Métricas do cliente**: fornece dados sobre o número de clientes ativos e o número de novos clientes pagantes, com base no filtro métrico escolhido. Você pode selecionar um segmento de cliente ou um setor para compreender como cada um favorece a métrica total do cliente.

**nota**  
Os contratos têm um determinado status. Para obter informações sobre os status, consulte a [tabela na seção anterior](#customer-agreements-public-private-agreements).

A tabela a seguir lista e descreve as métricas.


|  Métricas  |  Description  | 
| --- | --- | 
|  Contratos de oferta pública  | O número de contratos identificados como acordo IDs com visibilidade da oferta pública; a duração do contrato tem pelo menos um dia de sobreposição com o intervalo de datas selecionado; a duração é identificada entre a data de início e a data de término do contrato. | 
|  Contratos de oferta privada  | O número de contratos identificados como contrato IDs com visibilidade de oferta privada; a duração do contrato tem pelo menos um dia de sobreposição com o intervalo de datas selecionado; a duração é identificada entre a data de início e a data de término do contrato.  | 
|  Novos contratos de oferta pública  | O número de contratos identificados como ID do contrato com visibilidade da oferta pública; a data de aceitação do contrato está dentro do intervalo de datas selecionado.  | 
|  Novos contratos de oferta privada  |  O número de contratos identificados como contrato IDs com visibilidade da oferta privada; a data de aceitação do contrato está dentro do intervalo de datas selecionado.  | 
|  Clientes ativos  | O número de clientes identificados como AWS conta de assinante IDs com pelo menos 1 contrato ativo; a duração do contrato tem pelo menos um dia de sobreposição com o intervalo de datas selecionado  | 
| Novos clientes pagantes  |  O número de clientes identificados como AWS conta de assinante IDs que têm seu primeiro mês de cobrança dentro do intervalo de datas selecionado.  | 

 Para obter mais informações sobre contratos e receita, consulte [Painel de contratos e renovações](agreements-renewals-dashboard.md) e [Painel de receita faturada](billed-revenue-dashboard.md), ambos nesta seção. 

# Painel Desempenho de listagem
<a name="listing-performance-dashboard"></a>

O painel de desempenho do anúncio fornece uma visão geral e dados detalhados sobre suas listagens do AWS Marketplace. O painel fornece dados sobre volumes de tráfego e as etapas que seus clientes seguem para assinar seus produtos. O painel também fornece uma análise detalhada do tráfego por canais de marketing.

**nota**  
Para desbloquear esse painel, você deve se inscrever no programa [AWS Marketplace Seller Prime](https://pages.awscloud.com/aws-marketplace-seller-prime.html).
Para abrir esse painel, faça login no [Portal de gerenciamento do AWS Marketplace](https://aws.amazon.com/marketplace/management/), escolha **Insights**, **Marketing** e a guia **Desempenho da lista**.

Para obter mais informações sobre o uso dos AWS Marketplace painéis, consulte[Painéis do vendedor](dashboards.md), anteriormente nesta seção.

**Topics**
+ [Seção 1: Filtros](#listing-section-1-filters)
+ [Seção 2: aprofundamento do filtro de data](#date-filter-deep-dive)
+ [Seção 3: Métricas resumidas](#listing-summary-metrics)
+ [Seção 4: tendência mensal e conversão de funil](#monthly-trend-funnel)
+ [Seção 5: Tendência de tráfego por canal](#traffic-trend-by-channel)
+ [Seção 6: Métricas mensais de tráfego e contrato](#monthly-traffic-agreement)
+ [Seção 7: Fontes de tráfego da Web para visitantes únicos](#traffic-sources-unique-visitors)
+ [Seção 8: Detalhamento da fonte de tráfego da Web](#traffic-source-breakdown)

## Seção 1: Filtros
<a name="listing-section-1-filters"></a>

Você pode usar os filtros a seguir para refinar seus dados.


|  Nome do controle  |  Description  | 
| --- | --- | 
|  Título do produto  |  O título do produto.  | 
|  Data  |  Inclui os últimos 30, 60 e 90 dias, os últimos 12 meses (TTM) e o acumulado do ano (YTD). Você pode escolher personalizado para definir uma data específica de início e término.  | 

Para obter mais informações sobre filtragem, consulte [Filtrando dados no Quick no Guia Rápido](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html) *do Usuário*.

## Seção 2: aprofundamento do filtro de data
<a name="date-filter-deep-dive"></a>

 Esse filtro de data se aplica a todas as métricas nos painéis de desempenho do anúncio.  

 Por exemplo, quando você usa o valor padrão do year-to-date filtro, as seguintes métricas são exibidas: 


|  Métrica  |  Description  | 
| --- | --- | 
|  Visitantes únicos  |  Número de pessoas únicas que visitaram páginas de AWS Marketplace anúncios no acumulado do ano.  | 
|  Novos contratos de oferta pública  |  Número de contratos com oferta pública como visibilidade de oferta que tenham pelo menos 1 dia ativo no acumulado do ano.  | 
|  Novos visitantes únicos  |  Número de pessoas únicas que visitaram páginas de AWS Marketplace anúncios pela primeira vez no acumulado do ano.  | 
|  Retorne visitantes únicos  |  Número de indivíduos únicos que visitaram páginas de AWS Marketplace anúncios que já haviam visitado antes do início do ano selecionado e visitado novamente no acumulado do ano.  | 

## Seção 3: Métricas resumidas
<a name="listing-summary-metrics"></a>

Essa seção do painel exibe uma visualização resumida de seus contratos de tráfego e oferta pública. Os principais indicadores de desempenho (KPIs) incluem o número de visitantes únicos, o número de novos contratos de oferta pública, o número de novos visitantes únicos e o número de visitantes únicos que retornam. Você pode ver as year-over-year period-over-period mudanças no volume e na porcentagem. Você pode atualizar o intervalo de datas atualizando os critérios de data no campo de data na seção filtro. 


|  Metrics  |  Description  | 
| --- | --- | 
|  Visitantes únicos  |  Número de pessoas únicas que visitaram páginas de AWS Marketplace anúncios.  | 
|  Contrato  |  Um contrato assinado entre um proponente (proprietário do produto ou serviço) e um aceitante (cliente) para começar a usar um produto.  | 
|  Novos contratos de oferta pública  |  Número de contratos com oferta pública como visibilidade da oferta que têm data de aceitação dentro do intervalo de datas selecionado. Incluem status ativo, expirado, cancelado e encerrado. | 
|  Status  | Ativo: alguns ou todos os termos do contrato estão em vigor. Expirado: o contrato terminou na data de término pré-acordada. Cancelado: o aceitante opta por encerrar o contrato antes da data de término. Rescindido: o contrato terminou antes da data de término pré-acordada devido a um evento de rescisão iniciado pela AWS, como uma falha no pagamento. Renovado: o contrato foi renovado em um novo contrato usando funcionalidades como renovação automática. Substituído: o contrato foi substituído por uma oferta de substituição.  | 

## Seção 4: tendência mensal e conversão de funil
<a name="monthly-trend-funnel"></a>

Esta seção do painel fornece tendências de tráfico e tendências de contrato para um intervalo de datas especificado. Os principais indicadores de desempenho incluem o número de visitantes únicos e o número de novos contratos, referentes aos novos contratos de oferta pública. **Visitante único por mês:** fornece a visualização mensal do número de visitantes únicos. O total de visitantes únicos mensais pode ser maior do que o total de visitantes únicos na seção de métricas resumidas, pois um visitante único pode visitar vários meses. **Novos contratos por mês -** fornece a visualização mensal do número de novos contratos de oferta pública. **Conversão de funil -** fornece a visualização da step-by-step conversão. Inclui página de listagem, página de compras, página de configuração e página de atendimento. Você pode selecionar visitantes únicos, visualizações de página e contas exclusivas de acordo com a forma como as barras são exibidas. Ao passar o mouse sobre cada barra, você pode ver a porcentagem de conversão definida como o valor da barra atual como uma porcentagem da barra anterior. 


|  Metrics  |  Description  | 
| --- | --- | 
|  Visitantes únicos  |  Número de pessoas únicas que visitaram páginas de AWS Marketplace anúncios.  | 
|  Visualizações de página  |  Número de visitas a uma página de listagem AWS do Marketplace.  | 
|  Contas exclusivas  |  Número de ID de AWS conta exclusivo associado a um visitante. Esta métrica só é aplicável após a autenticação do visitante.  | 

## Seção 5: Tendência de tráfego por canal
<a name="traffic-trend-by-channel"></a>

Esta seção do painel fornece uma análise aprofundada da tendência mensal de tráfego. Você pode selecionar visitantes únicos e visualizações de página de acordo com a forma como as barras são exibidas. Você pode selecionar um único canal ou vários no filtro de canais para ver a tendência mensal dos canais selecionados. 

## Seção 6: Métricas mensais de tráfego e contrato
<a name="monthly-traffic-agreement"></a>

Essa seção do painel fornece uma visão mensal de visitantes únicos, novos contratos, taxa de conversão e total de contratos. A taxa de conversão é definida como novos contratos divididos por visitantes únicos para cada mês. 

Os dados na tabela representam um mês inteiro, mesmo se você selecionar o intervalo de datas para um mês parcial. Por exemplo, se você filtrar os dados para exibir o período de 15 de janeiro de 2024 a 15 de março de 2024, a tabela ainda incluirá os dados mensais completos de 1º de janeiro de 2024 a 31 de março de 2024. 

Os dados na tabela são classificados por **mês**, com o mês mais recente exibido primeiro. Você pode escolher classificar a tabela por qualquer uma das colunas disponíveis clicando no cabeçalho da coluna correspondente com a opção de classificar os dados em ordem crescente ou decrescente. 

## Seção 7: Fontes de tráfego da Web para visitantes únicos
<a name="traffic-sources-unique-visitors"></a>

Esta seção do painel fornece informações detalhadas sobre visitantes exclusivos por fontes de marketing. As categorias incluem descoberta orgânica do vendedor, campanhas de marketing lideradas pelo vendedor, descoberta AWS orgânica e campanhas lideradas pela AWS. Essas categorias são identificadas pelos códigos de rastreamento associados ao visitante ou à visita.


|  Fonte de tráfego  |  Description  | 
| --- | --- | 
|  Descoberta orgânica do vendedor  | Visitantes únicos que chegam aos seus anúncios por meio de chamadas à ação e pontos de descoberta em seu site ou notificações no aplicativo.  | 
|  Campanhas de marketing lideradas por vendedores  | Visitantes únicos que chegam aos seus anúncios por meio de seus canais promocionais ou de publicidade paga.  | 
|  AWS descoberta orgânica  | Visitantes únicos que chegam aos seus anúncios por meio de AWS canais, como tráfego orgânico AWS do site, pesquisa em AWS console (s) e pesquisa AWS no Marketplace.  | 
|  AWS campanhas de marketing  | Visitantes únicos que chegam aos seus anúncios por meio de campanhas lideradas pela AWS e promoções pagas.  | 

## Seção 8: Detalhamento da fonte de tráfego da Web
<a name="traffic-source-breakdown"></a>

A tabela de detalhamento da fonte de tráfego da Web fornece o detalhamento granular das atividades de marketing que direcionam o tráfego.
+ **Fonte de tráfego** - Inclui AWS liderado por -led e liderado pelo vendedor como duas categorias principais.
+ **Tipo de tráfego:** inclui descoberta orgânica do vendedor, campanhas de marketing lideradas pelo vendedor, descoberta AWS orgânica e campanhas de marketing lideradas AWS pelo vendedor.
+ **Canal**: inclui as várias táticas de marketing, que são exibição paga, pesquisa paga, mídia social paga, e-mail, orgânico, tráfego interno do site, links externos e outros.
+ **Editor** - Refere-se à entidade na qual a campanha é publicada, incluindo Facebook, Google,,, LinkedIn AWS, liderada pelo vendedor e outros.
+ **Promoção**: refere-se à campanha específica para a qual um código de rastreamento dedicado foi gerado. Um exemplo pode ser `psm_linked_post_free-trial-global-ver-a`.


|  Metrics  |  Description  | 
| --- | --- | 
|  Contratos atribuídos  |  Total de acordos contribuídos pelas visitas de cada promoção.  | 
|  Taxa de conversão  |  Acordos atribuídos divididos por visitantes únicos para cada promoção.  | 

# Painel Performance de pesquisa
<a name="search-performance-dashboard"></a>

O painel de **desempenho de pesquisa** fornece métricas sobre o desempenho de seus AWS Marketplace anúncios na experiência de AWS Marketplace pesquisa. Você usa o painel para melhorar a visibilidade e o desempenho das listas. O painel rastreia o número de impressões, cliques e taxas de clique. Ele também rastreia as principais palavras-chave fornecidas por você e se os clientes usam, além de oferecer sugestões de palavras-chave com base em pesquisas de cliente comuns.

Os insights no painel podem ajudar você a refinar as listas de produtos para aumentar a visibilidade, combinar as palavras-chave com as preferências de cliente e direcionar mais tráfego qualificado para a empresa no AWS Marketplace.  

Para abrir o painel, inicie o Portal AWS Marketplace de Gerenciamento e vá até a guia **Insights**.

Para obter mais informações sobre como controlar o acesso ao painel, consulte [Painéis do vendedor](dashboards.md), anteriormente nesta seção.

## Seção 1: acesso ao painel
<a name="search-performace-access"></a>

 Para desbloquear esse painel, você deve ser membro do [Programa AWS Marketplace Seller Prime](https://pages.awscloud.com/aws-marketplace-seller-prime.html). 

Depois de se inscrever no programa Seller Prime, os administradores de sistema das contas de vendedores podem usar a guia **Insights** no Portal de gerenciamento do AWS Marketplace para iniciar o painel de **desempenho da Pesquisa**.

Os administradores do sistema também podem criar uma política AWS Identity and Access Management (IAM) para fornecer acesso a painéis específicos a outros usuários da empresa vendedora. 

**nota**  
 A partir de setembro de 2023, deixaremos de dar suporte ao acesso a painéis do vendedor habilitados por permissões do IAM herdadas. Use o formato do nome do recurso da Amazon (ARN) conforme mostrado nos exemplos a seguir para atualizar as permissões do IAM. 

 Para obter mais informações sobre como criar políticas, consulte [Criação de políticas do IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) no *Guia do usuário AWS Identity and Access Management *. 

### Uso de políticas para controlar acesso
<a name="search-performance-access-policies"></a>

Use uma das políticas a seguir para dar acesso ao painel de desempenho da lista.

O exemplo a seguir fornece acesso a todos os AWS Marketplace recursos atuais e futuros, incluindo painéis e relatórios, independentemente dos feeds de dados atuais ou futuros.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
    "Effect": "Allow",
    "Action": [
    "aws-marketplace:GetSellerDashboard"
    ],
    "Resource": "arn:aws:aws-marketplace:us-east-1:111122223333:AWSMarketplace/*"
    }
    ]
    }
```

------

O exemplo a seguir dá acesso ao painel **Performance de pesquisa** incluindo o ARN.  

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
    {
    "Effect": "Allow",
    "Action": [
    "aws-marketplace:GetSellerDashboard"
    ],
    "Resource": "arn:aws:aws-marketplace:us-east-1:111122223333:AWSMarketplace/ReportingData/Marketing_V1/Dashboard/SearchPerformance_V1"
    }
    ]
    }
```

------

## Seção 2: Filtros
<a name="search-perf-filters"></a>

 Esta seção do painel apresenta os filtros a seguir. Use-os para refinar os dados. 


| Nome do controle | Description | 
| --- | --- | 
| Título do produto |  O título do produto. Esse filtro afeta as impressões, os cliques, a taxa de clique e as **recomendações de pesquisa da palavra-chave do AWS Marketplace **. Isso não afeta a tabela de **Palavras-chave mais pesquisadas por categoria de produto**.  | 
| Filtros de data |  Você pode filtrar pelos últimos 30, 60 e 90 dias, pelos últimos 12 meses (TTM) e pelo acumulado no ano (YTD). Você pode escolher **Personalizado** para usar datas específicas de início e término. Esse filtro afeta as impressões, os cliques e a taxa de clique. Ele não afeta as tabelas **Recomendações da palavra-chave de pesquisa do AWS Marketplace ** ou **Palavras-chave mais pesquisadas por categoria de produto**.  | 

 Para obter mais informações sobre filtragem, consulte [Filtragem de dados na Amazon QuickSight](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html), no Guia * QuickSightdo usuário da Amazon*. 

## Seção 3: desempenho AWS Marketplace de pesquisa
<a name="search-performance"></a>

Esta seção do painel exibe os principais indicadores de desempenho (KPIs) sobre a capacidade de descoberta e o desempenho de seus AWS Marketplace anúncios. O painel fornece KPIs o número de impressões, o número de cliques e a taxa de cliques. 

 Você pode ver year-over-year ou period-over-period alterar o volume e a porcentagem. Você também pode alterar os intervalos de datas. 


| Métrica | Description | 
| --- | --- | 
| Impressões | O número de vezes em que as listas são exibidas nos 20 principais resultados de pesquisa no AWS Marketplace. | 
| Cliques | O número de vezes que os usuários clicam em seus anúncios nos resultados da AWS Marketplace pesquisa. | 
| Taxa de clique (CTR) | A proporção entre o número de cliques e o número de impressões. Uma medida da eficácia das listas em atrair clientes a partir dos resultados da pesquisa. | 

## Seção 4: tendência mensal de impressões, cliques e taxa de clique
<a name="impressions-click-throughs"></a>

 Esta seção do painel apresenta tendências mensais para um intervalo de datas indicado. Ele fornece KPIs o número de impressões, o número de cliques e a taxa de cliques. 

## Seção 5: recomendações de palavra-chave da pesquisa do AWS Marketplace
<a name="keyword-recommendations"></a>

 Esta seção do painel fornece uma tabela que lista as palavras-chave atuais, além das palavras-chave recomendadas para cada uma das listas. 


| Nomes de colunas | Description | 
| --- | --- | 
| Título do produto | O título do produto. O link leva você até a página de visão geral do produto no Portal de gerenciamento do AWS Marketplace , onde você pode gerenciar e editar as listas. | 
| Palavras-chave atuais | As palavras-chave que você forneceu na seção Atualizar informações do produto do Portal AWS Marketplace de Gerenciamento.  | 
| Palavras-chave de melhor desempenho | As palavras-chave exibidas nas cinco pesquisas de cliente principais para o produto.  | 
| Palavras-chave da AWS recomendadas | As palavras-chave mais usadas pelos clientes ao procurar produtos semelhantes. | 
| % de ganho do tráfego estimado | O ganho de tráfego em potencial se você adotar as palavras-chave recomendadas. Não afetado pelo filtro de data. | 

**nota**  
Embora palavras-chave sejam importantes, outros fatores podem afetar os resultados da pesquisa.  
Otimização da lista   
 Otimize outras partes da lista, como descrições curtas e longas. 
Considere oferecer atributos como testes gratuitos para melhorar o apelo do anúncio. 
Combinação de palavras-chave com anúncios e clientes-alvo  
Combine o máximo possível os anúncios com palavras-chave mais usadas.
Só use as palavras-chave relevantes para os produtos e os atributos. Do contrário, os anúncios podem aparecer em um número maior de pesquisas, mas menos usuários os escolherão. 
Conceitos básicos das variações de palavras-chave  
Lembre-se de que termos semelhantes, como “git” e “gitops”, podem ser tratados como o mesmo termo de pesquisa.
Avalie a relevância de qualquer variação e ajuste as palavras-chave de acordo.
Atualização de palavras-chave  
No Portal de gerenciamento do AWS Marketplace, abra o menu **Produtos** e selecione uma categoria de produto.
Escolha o link para o produto, a guia **Informações do produto** e navegue até a página **Fornecer informações do produto**. 
Desça até a seção **AWS Marketplace de visibilidade**, encontre **palavras-chave para resultados de AWS Marketplace pesquisa** e ajuste suas palavras-chave. 

## Seção 6: palavras-chave mais pesquisadas por categoria de produto
<a name="top-keywords-by-product-category"></a>

As cinco palavras-chave de pesquisa de clientes principais em cada categoria de produto para produtos semelhantes aos seus. Outros filtros de produto e data nesse painel não afetam esses dados.

# Entendendo o Buy com AWS painéis
<a name="buy-with-aws-dashboard"></a>

O AWS painel **Comprar com** fornece uma visão geral do tráfego na web, dos engajamentos e dos contratos criados pelos clientes que escolhem seus AWS call-to-action botões **Comprar com** e visitam a página **Comprar com AWS** compras em. AWS Marketplace

Para obter informações sobre como acessar o painel, consulte [Painéis do vendedor](dashboards.md), anteriormente neste guia.

**Topics**
+ [Seção 1: Filtros](#buy-with-aws-filters)
+ [Seção 2: métricas resumidas](#buy-with-aws-summary-metrics)
+ [Seção 3: Total de cliques e dados de tendência para visualizações de página e total de contratos](#buy-with-aws-clicks-views)
+ [Seção 4: taxa de saída da página de login da AWS](#buy-with-aws-drop-off-rate)
+ [Seção 5: Engajamento na página Comprar com AWS compras](#buy-with-aws-engagements)
+ [Seção 6: Dados de tendências para métricas de engajamento na página Comprar com AWS compras](#buy-with-aws-procurement-page-trends)

## Seção 1: Filtros
<a name="buy-with-aws-filters"></a>

 Esta seção apresenta os filtros de dados a seguir. 


|  Nome do filtro  |  Description  | 
| --- | --- | 
| Título do produto | O título do produto.  | 
| ID do produto | Os identificadores exclusivos amigáveis para os produtos de software. | 
| Filtros de data | Filtre pelos últimos 30, 60 ou 90 dias, pelos últimos 12 meses ou pelo acumulado no ano. Escolha Personalizado para inserir outras datas de início e término.  | 

Para obter mais informações sobre filtragem, consulte [Filtrando dados no Quick no Guia Rápido](https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html) *do Usuário*. 

## Seção 2: métricas resumidas
<a name="buy-with-aws-summary-metrics"></a>

Esta seção exibe informações sobre os AWS call-to-action botões **Comprar com** e a página **Comprar com AWS** compras.

A tabela a seguir lista e descreve as métricas. Para atualizar o intervalo de datas, altere os critérios de data na seção **Filtros**.


|  Métrica  |  Description  | 
| --- | --- | 
| Total de cliques no botão  | O número total de cliques nos call-to-action botões, como Comprar com a AWS, no site do vendedor.  | 
| Número de compras com visualizações de AWS página  | O número total de visitas à página de aquisição Compre com a AWS. Isso inclui visitas repetidas. | 
| Total de acordos da AWS página Comprar com  | O número total de contratos criados na página de aquisição Compre com a AWS.   | 

## Seção 3: Total de cliques e dados de tendência para visualizações de página e total de contratos
<a name="buy-with-aws-clicks-views"></a>

Esta seção fornece tendências mensais ou semanais para um intervalo de datas especificado. A tabela a seguir lista e descreve KPIs:


| Métrica | Description | 
| --- | --- | 
| **Total de cliques no botão** | O total de cliques nos call-to-action botões no site do vendedor. | 
| **Visualizações de página** | O total de visitas à página de aquisição **Compre com a AWS**. Use a lista **Exibir dados por** para escolher entre exibições mensais e semanais. | 
| **Total de contratos** | O total de contratos criados na página de aquisição **Compre com a AWS**. Use a lista **Exibir dados por** para escolher entre exibições mensais e semanais. | 

## Seção 4: taxa de saída da página de login da AWS
<a name="buy-with-aws-drop-off-rate"></a>

Esta seção exibe a taxa de desistência da página de AWS login. A taxa é a proporção de usuários que entraram e criaram contratos em relação ao número de usuários que somente se conectaram. Use a lista **Exibir dados por** para filtrar por semana ou mês.

## Seção 5: Engajamento na página Comprar com AWS compras
<a name="buy-with-aws-engagements"></a>

Esta seção apresenta métricas de resumo e dados de tendência de uso para um intervalo de datas especificado. A tabela a seguir lista e descreve as métricas. Use o campo de data na seção filtro para atualizar o intervalo de datas.


| Métrica | Description | 
| --- | --- | 
| Número total de visitantes únicos | O número total de usuários exclusivos da página de aquisição. | 
| Bounce rate (Taxa de devolução) | A proporção de usuários que fazem login e saem depois de exibir uma página do site em relação àqueles que visitam mais de uma página. | 
| Tempo médio de permanência do usuário em minutos | O tempo entre o momento em que o usuário fez login e o momento em que saiu da página. | 

## Seção 6: Dados de tendências para métricas de engajamento na página Comprar com AWS compras
<a name="buy-with-aws-procurement-page-trends"></a>

Os gráficos exibem tendências mensais ou semanais para as métricas na [seção 5](#buy-with-aws-engagements). Use a lista **Exibir dados por** para escolher entre exibições mensais e semanais.  