Skip to main content

Shared Data

Shared Data é o módulo que permite o comprtilhamento de dados entre Tenants, inclusive de Organizações diferentes.

Através do Shared Data é possível compartilhar sem duplicar os dados, fazendo com que o compartilhamento de dados ocorra através de views dentro do BigQuery.

Com esse recurso, a Tenant que acessa os dados compartilhados irá pagar apenas pelo uso de slots conforme consultas ou dados forem processados nas views de compartilhamento de dados.

Os dados compartilhados estão disponíveis na Tenant destino permitindo que os dados sejam utilizados por pipelines SQL ou para que os dados sejam utilizados em Insights.

Abaixo apresentamos as principais estruturas do Shared Data, através da criação e gestão na interface e o acesso pelo Swagger.

Acesso na Carol

Para acessar o Shared Data, você deve acessar a Carol como Tenant Admin, e clica em Tenant Settings, selecionando a aba Shared Data.

Tenant admin homepage Tenant admin settings

Para criar um novo compartilhamento, selecione a opção "Add new Sharing", preenchendo os campos obrigatórios:

  • Sharing group name: Nome utilizado para identificar o compartilhamento
  • Destination tenant name: Nome da Tenant com a qual você deseja compartilhar esses dados
  • Description: Descrição complementar sobre o compartilhamento

Shared data creation

Após a criação do compartilhamento, acesse o item na tabela para criar as Views, clicando em "Edit views". Esta ação abrirá uma página de edição, onde será possível definir na Query quais dados serão compartilhados.

Shared view Query

Uma vez definida a View, você pode retornar à pagina de Shared Data para consultar o compartilhamento.

Acessando dados compartilhados

Caso você esteja recebendo dados de outra Tenant, o procedimento para consulta é o mesmo: acesse a página de Shared Data através do acesso de Tenant Admin, selecionando no cabeçalho "Tenant Admin" e a aba "Shared Data".

Dessa vez, você poderá visualizar os dados informados pela Tenant que está enviando os dados, e poderá acessar a View compartilhada clicando sobre seu nome. Os dados também podem ser visualizados utilizando o nome da view diretamente no Explore.

Tenant receiving shared data

Acesso Swagger

Os endpoints voltados para os microserviços de data estão disponíveis através da seguinte URL:

https://api.carol.ai/sql/v1/query/ui/?url=/sql/v1/api/openapi.json#/

Nessa URL você terá disponível os seguintes endpoints:

Endpoints Swagger

Passos a serem seguidos:

  1. Você deve fazer o login através da opção Authorize no topo da página.

    a. O token para criar o compartilhametno dos dados deve ocorrer na Tenant que possui os dados que serão compartilhados.

  2. O login mais convencional é através do carolEnvAdminAuth no qual você informa o Authorization Token gerado através do usuário/senha ou o carolApiKeyAuth que é gerado através dos Tokens da Carol.

Sharing Group

O processo mais simples para criação de um compartilhamento é informando todas as configurações em um único documento. A Carol vai criar as configurações baseado nos parâmetros informados no documento. Para esse exemplo, vamos utilizar os seguintes ambientes e data models:

  • Tenant Origem: clockinTestWeb (tenantID: b57a7e74a1764003aa987288a610456e).
  • Data Model compartilhado: clockinrecords
  • Tenant Destino: poffo (tenantID: d8010a66659540c3a7859bf538161f95)

O documento que configura o compartilhamento acima é o seguinte:

{
"description": "Sharing Clockin Records table",
"mdmTenantIdDestination": "d8010a66659540c3a7859bf538161f95",
"name": "clockinrecords",
"views": [
{
"name": "clockinrecords",
"query": "select image, devicecode, imei, appname, piscode, mdmname, mdmeventdate from `carol-b57a7e74a1764003aa98.b57a7e74a1764003aa987288a610456e.clockinrecords`"
}
]
}

Uma vez tendo o documento acima definido, você deve executar o endpoint conforme abaixo:

curl -X 'POST' \
'https://poffo.carol.ai/sql/v1/api/v1/tenant/b57a7e74a1764003aa987288a610456e/sharing_group_with_views' \
-H 'accept: application/json' \
-H 'Authorization: TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"description": "Sharing Clockin Records table",
"mdmTenantIdDestination": "d8010a66659540c3a7859bf538161f95",
"name": "clockinrecords",
"views": [
{
"name": "clockinrecords",
"query": "select image, devicecode, imei, appname, piscode, mdmname, mdmeventdate from `carol-b57a7e74a1764003aa98.b57a7e74a1764003aa987288a610456e.clockinrecords`"
}
]
}'

Ao chamar o endpoint acima, a seguinte responsta é esperada:

{
"detail": "",
"status": "DONE"
}

Com a resposta acima, a view está acessível na Tenant destino.

Observações
  • Você pode compartilhar várias tabelas através do mesmo Sharing Group. Você faz isso adicionando outros elementos no array views.

  • A query que define a view deve ser full qualified (incluindo o nome do projeto e dataset).

    Exemplo: carol-b57a7e74a1764003aa98.b57a7e74a1764003aa987288a610456e.clockinrecords.

    O texto b57a7e74a1764003aa98 refere-se ao projectName na Google. Esse valor são os primeiros 20 caracteres do tenantID aonde os dados existem.

    O texto b57a7e74a1764003aa987288a610456e refere-se ao datasetID. Esse valor é o tenantID aonde os dados existem.

    O tenantID pode ser obtido através do menu do ícone do usuário (passo 1) no canto superior da direita. Após você deve clicar no item Tenant Admin (passo 2) e a informação de tenantId está disponível no passo 3.

Tenant ID

  • Não é permitido select * from tabela como conteúdo de views. Esses compartilhamentos são frágeis e podem colocar em risco o vazamento de novos dados adicionados na tabela orgem.
  • O compartilhametno é desenhado para apenas uma Tenant destino.
  • Existem endpoints especificos para adicionar o Sharing Group criado. Isso inclui adicionar novas views, alterar detalhes do Sharing Group, eliminar views, entre outros.

Acessando dados compartilhados na Tenant destino

Acessando o módulo Explore da Tenant destino (https://poffo.carol.ai/poffo/carol-ui/explore/editor/bq/data-models) deve ser possível executar a consulta abaixo:

select * from shd_clockinrecords_clockinrecords

E o seguinte resultado é esperado:

Endpoints Swagger

Observe que a view de acesso aos dados possui os seguintes detalhes:

  • A view possui como prefixo shd para Sharing Group.
  • A view possui como estrutura de nome {sharing_group}_{view_name}
  • Apenas os atributos informados no Sharing Grup estão disponíveis.

Os dados acima estão disponívels para serem processados no motor de processamentos de dados SQL Processing.

Próximos passos da funcionalidade:

  • Shared Data vai estar compátivel com Unified SQL Processing.