> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Snowflake (Legado)

> Sincronize eventos personalizados do Snowflake para o OneSignal para acionar Jornadas automatizadas e campanhas de mensagens personalizadas com base no comportamento do usuário.

export const DATA_TYPE_0 = "dados de eventos"

export const PLATFORM_0 = "Snowflake"

export const COLUMN_HEADER_0 = "Coluna Snowflake"

export const PROPERTIES_DESCRIPTION_0 = "Metadados de eventos como VARIANT/JSON"

<Frame caption="Visão geral da integração OneSignal Snowflake">
  <img src="https://mintcdn.com/onesignal/YOTSrtBSoqdrJ37A/images/docs/4bd3285-onesignal-snowflake-integration-2.png?fit=max&auto=format&n=YOTSrtBSoqdrJ37A&q=85&s=c41bc1d77c30e6c282bb0bfdbcd67767" width="1280" height="720" data-path="images/docs/4bd3285-onesignal-snowflake-integration-2.png" />
</Frame>

***

## Visão geral

A integração OneSignal + Snowflake suporta dois pipelines de dados poderosos:

* **Exportação**: Envie automaticamente dados de eventos de mensagens (push, e-mail, SMS, in-app) do OneSignal para o Snowflake para análise e relatórios.
* **Importação**: Sincronize eventos personalizados de usuários dos seus conjuntos de dados do Snowflake para o OneSignal para acionar Jornadas automatizadas e mensagens personalizadas.

Juntas, essas integrações oferecem controle completo sobre os dados de engajamento do usuário—alimentando análises avançadas e mensagens em tempo real baseadas em comportamento.

***

## Exportar eventos do OneSignal para o Snowflake

Envie eventos de desempenho e engajamento de mensagens (por exemplo, envios, aberturas, cliques) para o Snowflake para:

* Criar dashboards e relatórios personalizados
* Rastrear tendências de entrega e engajamento em todos os canais
* Combinar dados do OneSignal com outros dados de negócios para análise

**Requisitos**

* OneSignal **Plano Professional** (não disponível em aplicativos gratuitos).
* [Conta Snowflake](https://docs.snowflake.com/en/user-guide/getting-started-tutorial)
* Certifique-se de que sua conta Snowflake tenha as funções `IMPORT SHARE` e `CREATE DATABASE`.
  * Recomendamos usar a função `ACCOUNTADMIN` para aceitar o compartilhamento.

**Etapas de configuração**

### 1. Inscreva-se

Para ativar a integração com o Snowflake, você precisará solicitar acesso através da [listagem do OneSignal no Marketplace](https://app.snowflake.com/marketplace/listing/GZ2FQZLH2NP/onesignal-message-events-data?search=onesignal\&originTab=provider\&providerName=OneSignal\&profileGlobalName=GZSTZLH2MW) para Message Events Data. A partir daí, entraremos em contato com sua equipe para obter mais informações.

### 2. Forneça informações da conta

Depois que nos conectarmos com sua equipe, você precisará nos fornecer alguns detalhes para que possamos compartilhar dados com você. Precisaremos do seu **ID da conta Snowflake** e do seu **ID da organização Snowflake**. A maneira mais fácil de obter essas informações é clicar no botão "Copy account identifier" (conforme mostrado abaixo).

<Info>
  Você deve estar em contato conosco através da [listagem do OneSignal no Marketplace](https://app.snowflake.com/marketplace/listing/GZ2FQZLH2NP/onesignal-message-events-data?search=onesignal\&originTab=provider\&providerName=OneSignal\&profileGlobalName=GZSTZLH2MW). No entanto, se você tiver mais perguntas sobre como fornecer informações da conta, pode enviar um e-mail para `snowflake-data-sharing@onesignal.com`
</Info>

<Frame caption="Copiando o identificador da conta Snowflake">
  <img src="https://mintcdn.com/onesignal/4HyuQPBpu-4xjmQC/images/docs/cf472c3-Screen_Shot_2023-06-27_at_4.08.19_PM.png?fit=max&auto=format&n=4HyuQPBpu-4xjmQC&q=85&s=ad89f70c336cfa9fc66849021cdab551" width="1554" height="620" data-path="images/docs/cf472c3-Screen_Shot_2023-06-27_at_4.08.19_PM.png" />
</Frame>

Depois de ser aceito no programa, fique atento aos seguintes itens:

* E-mail do OneSignal dando as boas-vindas ao programa
* E-mail do Snowflake notificando que o compartilhamento de dados está completo

<Frame caption="E-mail de notificação de compartilhamento de dados do Snowflake">
  <img src="https://mintcdn.com/onesignal/jBdBk5XvQR5eKOks/images/docs/7219faf-Untitled.png?fit=max&auto=format&n=jBdBk5XvQR5eKOks&q=85&s=3c4af6e7ba0f66836b5a2e91689f282e" width="1238" height="1078" data-path="images/docs/7219faf-Untitled.png" />
</Frame>

### 3. Aceite o compartilhamento de dados no Snowflake

Depois de receber um e-mail do Snowflake notificando que o compartilhamento de dados está completo, você deverá fazer login no aplicativo Snowflake e aceitar o compartilhamento de dados.

Navegue até **Data** → **Private Sharing**, onde você deve ver uma nova Privately Shared Listing. Depois de clicar em **Get**, seus dados começarão a ser replicados para sua região.

<Frame caption="Interface de compartilhamento privado do Snowflake">
  <img src="https://mintcdn.com/onesignal/RWtLFPeffHrC81wI/images/docs/a8dfc31-Untitled_1.png?fit=max&auto=format&n=RWtLFPeffHrC81wI&q=85&s=cb692bad2c9be897bf1c40185911e594" width="1086" height="516" data-path="images/docs/a8dfc31-Untitled_1.png" />
</Frame>

**Observação**: Se o botão **Get** não estiver disponível, mas houver um botão **Request**, as permissões da função que está tentando fazer o compartilhamento não incluem `CREATE DATABASE` ou `IMPORT SHARE`. Sugerimos mudar para a função `ACCOUNTADMIN`.

Levará algum tempo para que os dados sejam replicados. O Snowflake enviará um e-mail adicional assim que os dados estiverem disponíveis. Você deve ver uma caixa de diálogo como esta

<Frame caption="Caixa de diálogo de status de replicação de dados">
  <img src="https://mintcdn.com/onesignal/YOTSrtBSoqdrJ37A/images/docs/4d78360-Untitled_2.png?fit=max&auto=format&n=YOTSrtBSoqdrJ37A&q=85&s=406c4f7f2884deea338e690e14d76e44" width="664" height="886" data-path="images/docs/4d78360-Untitled_2.png" />
</Frame>

Quando os dados estiverem prontos para uso, sua listagem deve ter um novo botão **Get** disponível. Clique no botão **Get** e você será recebido com uma nova caixa de diálogo

<Frame caption="Caixa de diálogo de configuração do banco de dados">
  <img src="https://mintcdn.com/onesignal/3zq1PvSaqvUE2bIx/images/docs/28ba7ca-Untitled_3.png?fit=max&auto=format&n=3zq1PvSaqvUE2bIx&q=85&s=55e9e64a31cd20e552196d80b0fe7196" width="1320" height="1314" data-path="images/docs/28ba7ca-Untitled_3.png" />
</Frame>

Defina o nome do banco de dados e as funções do banco de dados conforme sua preferência. Em seguida, clique em **Get**

<Frame caption="Conclusão da configuração de compartilhamento de dados">
  <img src="https://mintcdn.com/onesignal/tc0EvmtSSX56SX0c/images/docs/8dae239-Untitled_4.png?fit=max&auto=format&n=tc0EvmtSSX56SX0c&q=85&s=6ee68952c4a8e3c2cb430ba2e20ec136" width="694" height="698" data-path="images/docs/8dae239-Untitled_4.png" />
</Frame>

<Check>
  Pronto! Os dados agora estão sendo sincronizados do OneSignal para o Snowflake. A cadência de sincronização é definida como uma vez a cada 24 horas, portanto, os dados iniciais podem não estar disponíveis até o dia seguinte.
</Check>

## Eventos e propriedades

Uma visão geral dos dados disponíveis no Marketplace do Snowflake

### Dados de eventos de mensagens

Consulte [Event Streams](./event-streams#event-data) para mais detalhes.

Para cada evento de mensagem gerado por um usuário, os seguintes metadados serão anexados ao registro.

| Column Name                  | Type            | Description                                                                                                            | Example                                               |
| ---------------------------- | --------------- | ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| event\_id                    | UUID            | Um ID único que representa o evento                                                                                    | `dc76df03-287c-403a-aabd-b2d4fe44e5c6`                |
| event\_kind                  | string          | O tipo de evento que ocorreu. A lista de tipos de eventos pode ser encontrada [aqui](./snowflake#message-event-kinds). | `message.email.opened`                                |
| event\_impression\_timestamp | unix\_timestamp | O momento em que o OneSignal processa o evento                                                                         | `1684951205`                                          |
| subscription\_id             | UUID            | Um ID único que representa o dispositivo/assinatura                                                                    | `6e8b6978-75a4-4882-878c-2d15a78c2409`                |
| subscription\_language       | string          | O idioma desta assinatura                                                                                              | `en`                                                  |
| subscription\_timezone       | integer         | O fuso horário especificado desta assinatura                                                                           | `-25200`                                              |
| subscription\_device\_type   | string          | O tipo de dispositivo que esta assinatura usa                                                                          | `SMS`                                                 |
| onesignal\_id                | UUID            | O onesignal\_id do usuário que gerou a impressão                                                                       | `dc76df03-287c-403a-aabd-b2d4fe44e5c6`                |
| external\_id                 | string          | O external\_id do usuário que gerou a impressão                                                                        | `MyExternalId`                                        |
| message\_id                  | UUID            | Um ID único que representa a mensagem                                                                                  | `dc76df03-287c-403a-aabd-b2d4fe44e5c6`                |
| message\_name                | string          | O ID legível da Notificação/Mensagem                                                                                   | `Campaign 1`                                          |
| message\_title               | string          | O título da Notificação/Mensagem.*Somente inglês no momento*                                                           | `Bonus 50 coins when you play!`                       |
| message\_body                | string          | O corpo da mensagem. (Truncado) *Somente inglês no momento*                                                            | `Play against your friends and earn an additional...` |

### Tipos de eventos de mensagens

Consulte [Event Streams](./event-streams#event-data) para mais detalhes.

Os eventos de mensagens são a primeira categoria de dados que ofereceremos no Marketplace do Snowflake. Entre em contato conosco em `snowflake-data-sharing@onesignal.com` com qualquer solicitação de categorias adicionais de dados!

### Retenção de dados

Os dados compartilhados do OneSignal através do Snowflake são retidos por um período de 30 dias. Para garantir a preservação de dados além desse período, recomendamos que você copie os dados relevantes para suas próprias tabelas.

***

## Importar eventos do Snowflake

Envie dados de eventos comportamentais do Snowflake para o OneSignal para:

* Acionar Jornadas com base na atividade do usuário
* Personalizar mensagens com base em dados comportamentais

**Requisitos**

* Acesso a [Event Streams](/docs/pt-BR/event-streams) para eventos de mensagem de saída (Limitações de plano e excedentes se aplicam)
* Acesso a [Custom Events](/docs/pt-BR/custom-events) para sincronização de eventos de entrada (Limitações de plano e excedentes se aplicam)
* [Plano de Conta Atualizado](https://onesignal.com/pricing) (não disponível em apps gratuitos)

- **Conta Snowflake** com acesso ao warehouse
- **Dados de eventos** armazenados em tabelas ou visualizações do Snowflake
- **Conectividade de rede** do OneSignal para sua instância Snowflake
- **Credenciais de usuário** com permissões apropriadas

**Etapas de configuração**

<Steps>
  <Step title="Criar função dedicada para o OneSignal">
    Crie uma hierarquia de funções seguindo as melhores práticas do Snowflake:

    ```sql theme={null}
    -- Create a role for the census user
    CREATE ROLE CENSUS_ROLE;

    -- Ensure the sysadmin role inherits any privileges the census role is granted
    GRANT ROLE CENSUS_ROLE TO ROLE SYSADMIN;
    ```
  </Step>

  <Step title="Criar warehouse dedicado">
    Crie um warehouse com custo otimizado para operações do OneSignal:

    ```sql theme={null}
    -- Create a warehouse for the census role, optimizing for cost over performance
    CREATE WAREHOUSE CENSUS_WAREHOUSE WITH
        WAREHOUSE_SIZE = XSMALL
        AUTO_SUSPEND = 60
        AUTO_RESUME = TRUE
        INITIALLY_SUSPENDED = FALSE;

    GRANT USAGE ON WAREHOUSE CENSUS_WAREHOUSE TO ROLE CENSUS_ROLE;
    GRANT OPERATE ON WAREHOUSE CENSUS_WAREHOUSE TO ROLE CENSUS_ROLE;
    GRANT MONITOR ON WAREHOUSE CENSUS_WAREHOUSE TO ROLE CENSUS_ROLE;
    ```
  </Step>

  <Step title="Criar usuário e conceder permissões">
    Crie o usuário do OneSignal e conceda acesso aos seus dados de eventos:

    ```sql theme={null}
    -- Create the census user
    CREATE USER CENSUS WITH
        DEFAULT_ROLE = CENSUS_ROLE
        DEFAULT_WAREHOUSE = CENSUS_WAREHOUSE
        PASSWORD = '<strong-unique-password>';

    GRANT ROLE CENSUS_ROLE TO USER CENSUS;

    -- Grant access to your event data (replace with your actual database/schema)
    GRANT USAGE ON DATABASE "<your-database>" TO ROLE CENSUS_ROLE;
    GRANT USAGE ON SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
    GRANT SELECT ON ALL TABLES IN SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
    GRANT SELECT ON FUTURE TABLES IN SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
    GRANT SELECT ON ALL VIEWS IN SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
    GRANT SELECT ON FUTURE VIEWS IN SCHEMA "<your-database>"."<your-schema>" TO ROLE CENSUS_ROLE;
    ```
  </Step>

  <Step title="Criar banco de dados de contabilidade (Advanced Sync Engine)">
    Crie um banco de dados privado para gerenciamento de estado de sincronização do OneSignal:

    ```sql theme={null}
    -- Create a private bookkeeping database
    CREATE DATABASE "CENSUS";
    GRANT ALL PRIVILEGES ON DATABASE "CENSUS" TO ROLE CENSUS_ROLE;

    CREATE SCHEMA "CENSUS"."CENSUS";
    GRANT ALL PRIVILEGES ON SCHEMA "CENSUS"."CENSUS" TO ROLE CENSUS_ROLE;
    GRANT CREATE STAGE ON SCHEMA "CENSUS"."CENSUS" TO ROLE CENSUS_ROLE;
    ```

    <Warning>
      Pule esta etapa se estiver usando o Basic Sync Engine ou modo somente leitura.
    </Warning>
  </Step>

  <Step title="Configurar autenticação">
    Configure a autenticação por par de chaves (recomendado) para maior segurança:

    1. Gere um par de chaves pública/privada seguindo a [documentação do Snowflake](https://docs.snowflake.com/en/user-guide/key-pair-auth)
    2. Configure a chave pública no seu usuário Snowflake
    3. Use a chave privada nas configurações de conexão do OneSignal

    Como alternativa, você pode usar autenticação por senha (obsoleto - será bloqueado em novembro de 2025).
  </Step>

  <Step title="Conectar ao OneSignal">
    No OneSignal, vá para **Data > Integrations** e clique em **Add Integration**.

    Selecione **Snowflake** e forneça os seguintes detalhes de conexão:

    * **Account Name:** Seu identificador de conta Snowflake (por exemplo, `abc123.us-east-1`)
    * **Warehouse:** `CENSUS_WAREHOUSE`
    * **User:** `CENSUS`
    * **Database:** Nome do banco de dados dos seus dados de eventos
    * **Schema:** Nome do schema dos seus dados de eventos
    * **Authentication:** Key-pair (forneça a chave privada e frase secreta opcional)
  </Step>
</Steps>

***

### Mapeamento de dados de evento

Mapeie seu {DATA_TYPE_0} {PLATFORM_0} para o formato de eventos personalizados do OneSignal:

| Campo OneSignal | {COLUMN_HEADER_0} | Descrição                  | Obrigatório |
| --------------- | ----------------- | -------------------------- | ----------- |
| `name`          | `event_name`      | Identificador de evento    | Sim         |
| `external_id`   | `user_id`         | Identificador de usuário   | Sim         |
| `timestamp`     | `event_timestamp` | Quando o evento ocorreu    | Não         |
| `properties`    | `event_data`      | {PROPERTIES_DESCRIPTION_0} | Não         |

#### Esquema de tabela de eventos de exemplo

```sql theme={null}
-- Example Snowflake event table
CREATE TABLE analytics.user_events (
    event_id STRING,
    event_name STRING NOT NULL,
    user_id STRING NOT NULL,
    event_timestamp TIMESTAMP_TZ DEFAULT CURRENT_TIMESTAMP(),
    event_properties VARIANT,
    session_id STRING,
    device_type STRING
);
```

#### Modo de consulta SQL

Escreva consultas SQL personalizadas para transformar seus dados de eventos:

```sql theme={null}
-- Example: Recent high-value events
SELECT
    event_name,
    user_id,
    event_timestamp,
    event_properties
FROM analytics.user_events
WHERE event_timestamp >= DATEADD(day, -7, CURRENT_TIMESTAMP())
    AND event_properties:value::NUMBER > 100
ORDER BY event_timestamp DESC;
```

### Configuração avançada

#### Gerenciamento de custos do warehouse

* Use o tamanho de warehouse X-Small para otimização de custos
* Configure auto-suspend (60 segundos) e auto-resume
* Agende sincronizações durante horários de baixo uso
* Considere compartilhar o warehouse com outros sistemas de processamento em lote

#### Suporte a sincronizações ao vivo

Para processamento de eventos em tempo real, habilite o rastreamento de alterações nas suas tabelas de eventos:

```sql theme={null}
ALTER TABLE "analytics"."user_events" SET CHANGE_TRACKING = TRUE;
```

#### Segurança de rede

Se estiver usando a política de rede Allowed IPs do Snowflake, adicione os endereços IP do OneSignal à sua lista de permissões. Entre em contato com o suporte do OneSignal para obter os intervalos de IP atuais.

***

## Limitações

* Consultas analíticas complexas podem impactar o desempenho e os custos do warehouse
* A autenticação por usuário/senha será descontinuada em novembro de 2025
* O banco de dados CENSUS é reservado apenas para operações do OneSignal

***

## Desconectar compartilhamento de dados com o OneSignal

Envie um e-mail para `snowflake-data-sharing@onesignal.com` para solicitar a desativação do seu compartilhamento de dados com o OneSignal.

***

## FAQ

### Qual método de autenticação devo usar?

Use **autenticação por par de chaves** (recomendado). A autenticação por usuário/senha será bloqueada pelo Snowflake a partir de novembro de 2025.

### Posso usar um warehouse existente?

Sim, você pode compartilhar um warehouse com outros sistemas de processamento em lote como dbt ou Fivetran para otimizar custos. Certifique-se de que o warehouse tenha capacidade suficiente para suas necessidades de processamento de eventos.

### Como posso otimizar custos?

* Use o tamanho de warehouse X-Small
* Configure auto-suspend agressivo (60 segundos)
* Agende sincronizações durante horários de baixo uso
* Use sincronizações horárias/diárias em vez de sincronização contínua

***
