Definir objetos grandes personalizados
Objetivos de aprendizagem
Após concluir esta unidade, você estará apto a:
- Criar um objeto grande personalizado.
- Criar um índice personalizado.
- Implantar um objeto grande personalizado.
- Preencher um objeto grande.
Como definir objetos grandes personalizados
Você procurou objetos grandes personalizados nos casos de uso ou inventou um. Agora é hora de criar um objeto grande personalizado.
Você pode definir um objeto grande personalizado em Configuração. Também é possível definir um objeto grande personalizado com a API de metadados, mas é mais simples em Configuração. Para começar, faça login em seu Trailhead Playground e acesse Configuração. De forma geral, é como você define um objeto grande.
- Clique em e selecione Setup (Configuração).
- Insira Objetos grandes na caixa Busca rápida e selecione Objetos grandes.
- Crie um objeto grande e adicione alguns detalhes básicos.
- Adicione campos personalizados. Eles armazenam os dados em seu objeto grande.
- Adicione um índice. O índice define a chave primária composta de um objeto grande e é usado para consultar e filtrar os dados do objeto grande.
- Salve o objeto grande e altere o status para Implantado.
Agora vamos ver essas etapas com maior detalhe.
Embora os objetos grandes sejam semelhantes a objetos personalizados e padrão, alguns parâmetros são exclusivos de objetos grandes e outros não se aplicam. Os nomes de objetos precisam ser exclusivos entre todos os objetos padrão, personalizados, externos e objetos grandes na sua organização.
Detalhes de definição do objeto grande
Ao definir um objeto grande, primeiro preencha alguns detalhes básicos sobre ele.
Nome do campo |
Descrição |
---|---|
Label (Rótulo) |
É usado para fazer referência ao objeto na interface de usuário. |
Rótulo plural |
O nome do objeto no plural. |
Começa com som de vogal |
Se for adequado para o idioma padrão de sua organização, indique se há um artigo definido ou indefinido antes do rótulo. |
Nome do objeto |
Nome da API exclusivo do objeto grande. Em pacotes gerenciados, esse nome evita conflitos com instalações de pacote. Use apenas caracteres alfanuméricos e sublinhados. O nome precisa começar com uma letra e não ter espaços. Ele não pode terminar com um sublinhado ou ter dois sublinhados consecutivos. Depois de salvo, o nome da API de um objeto grande é identificado pelo sufixo “__b”, diferentemente do sufixo “__c” do objeto personalizado. |
Descrição |
Uma descrição relevante ajuda a lembrar as diferenças entre os objetos ao vê-los em uma lista. |
Configuração da Ajuda sensível ao contexto |
Define a URL exibida quando um usuário clica em Ajuda para esta página na página inicial do registro de objeto (visão geral), nas páginas de edição e de detalhes, nos modos de exibição de lista e nas listas relacionadas. Essa configuração não afeta o link de ajuda no início da página. O link de ajuda sempre abre a janela Ajuda. |
Status da implantação |
Quando um objeto grande é criado, o status é definido como Em desenvolvimento. Não será possível implantar um objeto grande enquanto ele não incluir um índice que contenha pelo menos um campo personalizado. Somente campos personalizados obrigatórios são permitidos em um índice. Depois de criar um índice, você verá um segundo status de Implantado. Quando estiver pronto para conceder acesso aos usuários, altere o status para Implantado. |
Campos personalizados de objeto grande
Depois de definir seu objeto grande, adicione campos personalizados. Os campos personalizados armazenam os dados exclusivos de seu objeto grande. Você também pode criar campos de relacionamentos personalizados para associar seu objeto grande a outro objeto no Salesforce. Adicione campos personalizados a um objeto grande da mesma forma que você adicionaria campos personalizados a um objeto no Salesforce. Os objetos grandes aceitam estes tipos de campo:
- Relacionamento de pesquisa
- Data/hora
- E-mail
- Número
- Telefone
- Texto
- Área de texto (longo)
- URL
Para criar um índice para seu objeto grande, pelo menos um campo personalizado precisa estar marcado como obrigatório.
Como definir o índice de um objeto grande personalizado
Isso é importante! Como mencionamos antes, o índice define a chave primária composta para um grande objeto. Os campos definidos no índice de um objeto grande determinam a identidade desse objeto e a possibilidade de consulta. Os campos definidos no índice precisam ser os mais relevantes para suas consultas e, portanto, você precisa se antecipar e ter algum planejamento. A ordem de definição dos campos também é um ponto importante. Se você está usando SOQL para consultar seu objeto grande, pode apenas consultar os campos que fazem parte do índice, na ordem em que foram definidos. Atribua o campo que você usará mais frequentemente em um filtro de consulta à primeira posição do índice. Também é possível usar apenas operadores de comparação específicos, dependendo da posição do campo em sua consulta.
Lembre-se dessas questões quando for definir o índice.
- Um índice deve incluir pelo menos um campo personalizado e pode ter até cinco campos personalizados no total.
- Os campos personalizados incluídos no índice precisam estar marcados como obrigatórios.
- Os campos de área de texto longo não podem ser incluídos no índice.
- O número total de caracteres em todos os campos de texto em um índice não pode ultrapassar 100.
- Depois que o índice é criado, não será possível editá-lo ou excluí-lo. Para alterar o índice, crie outro objeto grande com um novo índice.
Detalhes de índice do objeto grande
Define os campos que compõem o índice de seu objeto grande personalizado e determina os campos e a ordem de classificação.
Nome do campo |
Descrição |
---|---|
Label (Rótulo) |
O rótulo é usado para fazer referência ao índice na interface de usuário. |
Nome |
O nome da API do índice. |
Campos de índice |
Define a posição no índice e o sentido do índice para cada campo personalizado incluído no índice. A ordem dos campos colocada aqui determinará a ordem deles no índice. Defina a posição no índice como 1 no parâmetro de filtro usado com maior frequência. Os valores válidos como sentido do índice são crescente e decrescente. |
Exemplo de objeto grande personalizado
Agora que você sabe o que é necessário para se criar um objeto grande personalizado, experimente criar um. Vamos fazer de conta que você desenvolveu um novo e incrível jogo chamado SFORCE-COM: U.F.B.O. Defense, em que os jogadores defendem a Terra contra uma ameaça de Objeto grande voador não identificado. O ideal é poder armazenar todas as interações de seus jogadores em uma mesma sessão de jogo. Em cada sessão de jogo, você captura essas informações em seu objeto grande personalizado, Customer_Interaction__b:
- A quantidade de itens comprados pelo jogador em In_Game_Purchase__c
- O nível mais alto a que ele chegou em Level_Achieved__c
- Quantas vidas ele teve em Lives_This_Game__c
- Sua plataforma em Game_Platform__c
- Sua pontuação em Score_This_Game__c
- O nome de sua conta em Account__c
- A data da sessão de jogo em Play_Date__c
- A duração do jogo em Play_Duration__c
Seu jogo é muito popular e você tem várias interações com cada usuário todos os dias, o que, multiplicado pelo número enorme de usuários em nosso banco, é um número gigantesco de registros. Oh, o preço do sucesso!
Defina todos esses campos no objeto grande personalizado. Depois de definir os campos, defina também os campos que compõem o índice. O nome da conta de cada jogador é exclusivo e, portanto, escolha Account__c como o primeiro campo do nosso índice. Os próximos campos do índice são a plataforma de jogo do jogador, Game_Platform__c, e a data da sessão, Play_Date__c. Essa ordem específica permite criar uma consulta baseada somente em contas, em contas e plataformas de jogo ou em contas, plataformas de jogo e datas de jogo.
Use os valores exatos desses exemplos para criar um objeto grande personalizado com oito campos personalizados e um índice. Se um campo e um valor não estiverem listados na tabela, ignore-os ou deixe como padrão.
Detalhes de definição do objeto grande
Nome do campo |
Valor |
---|---|
Label (Rótulo) |
Interação com o cliente |
Rótulo plural |
Interações com o cliente |
Nome do objeto |
Customer_Interaction |
Descrição |
Deixe em branco |
Status da implantação |
Em desenvolvimento |
Campos personalizados de objeto grande
- Compra no jogo
- Tipo de dados: Texto
- Rótulo do campo: Compra no jogo
- Tamanho: 16
- Nome do campo: In_Game_Purchase
- Obrigatório: Não
- Nível alcançado
- Tipo de dados: Texto
- Rótulo do campo: Nível alcançado
- Tamanho: 16
- Nome do campo: Level_Achieved
- Obrigatório: Não
- Vidas usadas neste jogo
- Tipo de dados: Número
- Rótulo do campo: Vidas usadas neste jogo
- Tamanho: 18
- Casas decimais: 0
- Nome do campo: Lives_This_Game
- Obrigatório: Não
- Plataforma
- Tipo de dados: Texto
- Rótulo do campo: Plataforma
- Tamanho: 16
- Nome do campo: Game_Platform
- Obrigatório: Sim
- Pontuação do jogo
- Tipo de dados: Texto
- Rótulo do campo: Pontuação do jogo
- Tamanho: 16
- Nome do campo: Score_This_Game
- Obrigatório: Não
- Conta
- Tipo de dados: Pesquisa
- Relacionado a: Conta
- Rótulo do campo: Conta
- Nome do campo: Conta
- Obrigatório: Sim
- Data do jogo
- Tipo de dados: Data/hora
- Rótulo do campo: Data do jogo
- Nome do campo: Play_Date
- Obrigatório: Sim
- Duração do jogo
- Tipo de dados: Número
- Rótulo do campo: Duração do jogo
- Tamanho: 16
- Casas decimais: 2
- Nome do campo: Play_Duration
- Obrigatório: Não
Agora você tem oito campos para rastrear todas as interações de seus jogadores. Muito bem!
Detalhes de índice do objeto grande
Nome do campo |
Valores |
---|---|
Label (Rótulo) |
Índice de interações com o cliente |
Nome |
CustomerInteractionsIndex |
Campos de índice |
Posição no índice 1: Account__c, decrescente Posição no índice 2: Game_Platform__c, crescente Posição no índice 3: Play_Date__c, decrescente |
Como implantar objetos grandes
Agora que você definiu seu objeto grande personalizado, está pronto para implantá-lo. Clique em Editar no objeto grande e altere o status de implantação para Implantado.
Agora, você está pronto para começar a usar seu novo objeto grande personalizado.
Daqui você pode editar rótulos e nomes para seu objeto grande personalizado e respectivos campos, mas não pode editar ou excluir o índice. Para alterar o índice, recomece com um novo objeto grande. Você também pode excluir um objeto grande personalizado em Configuração. Os objetos grandes excluídos ficam armazenados por 15 dias. Durante esse tempo, você pode restaurar ou excluir o objeto grande permanentemente, mas, findo esse prazo, ele será excluído permanentemente.
Como preencher objetos grandes
Existem duas maneiras principais de preencher um objeto grande. Você pode usar um arquivo .csv com o Data Loader ou com a API, ou fazê-lo totalmente pelo Apex.
Ao usar um arquivo .csv, a primeira linha no seu arquivo precisa conter os rótulos de campo usados para mapear os dados .csv em seu objeto grande personalizado. Carregue os dados no objeto grande no Data Loader ou carregue-os usando a API em massa ou a API SOAP. Veja o arquivo .csv que usamos para carregar em nosso objeto grande Customer_Interaction__b. Um objeto grande aceita muito mais dados do que o que fornecemos aqui como exemplo.
Date of Play,In-Game Purchase,Level Achieved,Lives Used This Game,Platform,Play Duration,Score This Game,Account 2015-01-01T23:01:01Z,A12569,57,7,PC,25,55736,001R000000302D3 2015-01-03T13:22:01Z,B78945,58,7,PC,35,61209,001R000000302D3 2015-01-04T15:16:01Z,D12156,43,5,iOS,45,36148,001R000000302D3
Se você quiser usar o Apex para preencher Customer_Interaction__b, use o método insertImmediate.
// Define the record Customer_Interaction__b bo = new Customer_Interaction__b(); bo.Account__c = '001R000000302D3'; bo.Game_Platform__c = 'PC'; bo.Play_Date__c = DateTime.newInstance(2018, 2, 5); bo.In_Game_Purchase__c = 'A12569'; bo.Level_Achieved__c = '45'; bo.Lives_This_Game__c = 3; bo.Score_This_Game__c = '5500'; bo.Play_Duration__c = 25; // Insert the record, which creates a new record database.insertImmediate(bo); // Define the record Customer_Interaction__b bo2 = new Customer_Interaction__b(); bo2.Account__c = '001R000000302D3'; bo2.Game_Platform__c = 'PC'; bo2.Play_Date__c = DateTime.newInstance(2018, 2, 5); bo2.In_Game_Purchase__c = 'A12569'; bo2.Level_Achieved__c = '45'; bo2.Lives_This_Game__c = 3; bo2.Score_This_Game__c = '5500'; bo2.Play_Duration__c = 25; // Modify a field in the index bo2.Game_Platform__c = 'Mac'; // Insert the record, creating a new record because the primary key has changed database.insertImmediate(bo2); // Define the record Customer_Interaction__b bo3 = new Customer_Interaction__b(); bo3.Account__c = '001R000000302D3'; bo3.Game_Platform__c = 'PC'; bo3.Play_Date__c = DateTime.newInstance(2018, 2, 5); bo3.In_Game_Purchase__c = 'A12569'; bo3.Level_Achieved__c = '45'; bo3.Lives_This_Game__c = 3; bo3.Score_This_Game__c = '5500'; bo3.Play_Duration__c = 25; // Modify a field not included in the index bo3.Level_Achieved__c = '1'; // Insert the record, which updates the second record because the index is the same database.insertImmediate(bo3);
Atenção
Os testes do Apex que usam chamadas DML mistas não são permitidos e falharão. Se você grava apenas no objeto grande, o teste insere dados inválidos no objeto grande de destino que precisarão ser excluídos manualmente. Para restringir as chamadas DML de teste ao objeto grande de destino, use uma estrutura simulada com a API de stub Apex.
A reinserção de um registro com o mesmo índice, mas com dados diferentes, resulta em comportamentos semelhantes a uma operação de inserir e atualizar (upsert). Se um registro com o índice existir, a inserção substitui os valores de índice por novos dados. A inserção é idempotente e, portanto, a inserção de dados que já existem não resulta em duplicados. A reinserção é útil na hora de carregar milhões de registros. Em caso de erro, a reinserção recarrega os carregamentos com falha sem duplicar os dados. Durante a reinserção, se não existir registro para o índice fornecido, um novo registro será inserido.
Recursos
-
Ajuda do Salesforce: Manage Big Objects
-
Big Object Implementation Guide: Define and Deploy Custom Big Objects with Metadata API
-
Ajuda do Salesforce: Criar campos personalizados
-
Big Object Implementation Guide: Populate a Custom Big Object
-
Ajuda do Salesforce: Data Loader
-
TrailheaDX 2017 Session: Big Objects—Bring Big Data to Lightning Platform