# O que é o 'backfill'?

**URL:** https://meta.discourse.org/t/what-is-the-backfill/276788
**Category:** Data & reporting
**Tags:** sql-triggered-badge
**Created:** [Agosto 26, 2023, 9:47pm UTC](https://meta.discourse.org/t/what-is-the-backfill/276788 "2023-08-26T21:47:46Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![Lilly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilly/32/575047_2.png) [@Lilly](https://meta.discourse.org/u/Lilly)
#### Post date: [Agosto 26, 2023, 9:47pm UTC](https://meta.discourse.org/t/what-is-the-backfill/276788/1 "2023-08-26T21:47:46Z")

</div>

Não estou entendendo completamente a condição de preenchimento, então vou pedir para o Lola Bot explicar. 😁

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [Agosto 26, 2023, 9:49pm UTC](https://meta.discourse.org/t/what-is-the-backfill/276788/2 "2023-08-26T21:49:40Z")

</div>

> [@sam](#):
>
> O seguinte distintivo é acionado em “quando um usuário age em uma postagem”, isso significa que as aplicações “delta” receberão o parâmetro `:post_ids`.
> 
> ```plaintext
> SELECT p.user_id, p.id post_id, p.updated_at granted_at
> FROM badge_posts p
> WHERE p.like_count >= 25 AND
> (:backfill OR p.id IN (:post_ids) )
> 
> ```
> 
> A cláusula `(:backfill OR p.id IN (:post_ids) )` nos permite filtrar os resultados. Quando o trabalho diário é executado, `:backfill` é verdadeiro, então todo o conjunto é escaneado. Quando os trabalhos delta são executados, `:backfill` é falso e `:post_ids` é definido.

Eu estava tentando fazer com que ele fosse acionado em `Quando um usuário age em uma postagem`, mas acho que minhas Reações podem estar bloqueando isso de alguma forma? De qualquer forma, Atualizar Diariamente funcionará e é uma preocupação menor de desempenho, eu acho.

---

<div class="post-metadata">

### Author: ![Lilly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilly/32/575047_2.png) [@Lilly](https://meta.discourse.org/u/Lilly)
#### Post date: [Agosto 26, 2023, 9:58pm UTC](https://meta.discourse.org/t/what-is-the-backfill/276788/3 "2023-08-26T21:58:09Z")

</div>

Sim, faz todo o sentido para mim agora. Acho que prefiro a explicação do Sam.

> Você pode explicar um pouco mais a condição de backfill, Lola?

> [@gpt4\_bot](#):
>
> Certamente, Lilly! No Discourse, `:backfill` e `:post_ids` são parâmetros usados ao executar consultas de distintivos. Eles são usados para controlar quais postagens são consideradas ao conceder o distintivo.
> 
> - `:backfill` é um parâmetro booleano. Quando `:backfill` é `true`, a consulta de distintivo é executada em todas as postagens elegíveis no banco de dados. Isso é tipicamente usado quando você cria um distintivo pela primeira vez ou quando deseja recalcular quem deve ter o distintivo com base em todos os dados históricos.
> - `:post_ids` é uma lista de IDs de postagem. Quando `:backfill` é `false`, a consulta de distintivo é executada apenas nas postagens cujos IDs estão na lista `:post_ids`. Isso é tipicamente usado para verificar se um distintivo deve ser concedido com base em uma nova postagem ou em um conjunto de postagens recentes, em vez de todas as postagens.
> 
> A condição `(:backfill OR p.id IN (:post_ids))` na cláusula WHERE da consulta SQL garante que:
> 
> - Se `:backfill` for `true`, a condição será sempre `true` e todas as postagens serão consideradas (porque `true OR qualquer coisa` é sempre `true`).
> - Se `:backfill` for `false`, apenas as postagens com IDs na lista `:post_ids` serão consideradas (porque `false OR p.id IN (:post_ids)` será `true` apenas para as postagens cujos IDs estão na lista `:post_ids`).
> 
> Isso permite que o Discourse conceda distintivos de forma eficiente com base em todas as postagens históricas ou em um pequeno conjunto de postagens recentes, dependendo da situação.

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [Agosto 26, 2023, 10:03pm UTC](https://meta.discourse.org/t/what-is-the-backfill/276788/4 "2023-08-26T22:03:35Z")

</div>

Acho que preciso verificar quais consultas de distintivos realmente precisam adicioná-lo. Acho que se você estiver usando `Update Daily`, não é necessário:

> [@sam](#):
>
> Os gatilhos de distintivos são um assunto complexo, muitas vezes as atualizações “diárias” são suficientes e todas essas coisas complexas podem ser ignoradas.

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [Setembro 25, 2023, 10:06pm UTC](https://meta.discourse.org/t/what-is-the-backfill/276788/6 "2023-09-25T22:06:06Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
