Suivez votre progression
Accueil Trailhead
Accueil Trailhead

Définition des Big Objects personnalisés

Objectifs de formation

Une fois cette unité terminée, vous pourrez :
  • Créer un Big Object personnalisé
  • Construire un index personnalisé
  • Déployer un Big Object personnalisé
  • Renseigner les Big Objects

Définition des Big Objects personnalisés

Vous avez pu découvrir des cas d’utilisation des Big Objects personnalisés, ou même en inventer un vous-même. Maintenant, il est temps d’en construire un !

Vous pouvez définir un Big Object personnalisé dans Configuration. Vous pouvez également le faire en utilisant l’API de métadonnées, mais la procédure est beaucoup plus simple dans Configuration. Pour commencer, connectez-vous à votre Trailhead Playground et accédez à Configuration. Voici globalement comment définir un Big Object.

  1. Cliquez sur Icône sous forme d’engrenage de l’option Configurer, puis sélectionnez Configuration.
  2. Saisissez Big Objects dans la case Recherche rapide, puis sélectionnez Big Objects.
  3. Créez un Big Object et ajoutez-y quelques informations de base.
  4. Ajoutez des champs personnalisés. Ils stockent les données sur votre Big Object.
  5. Ajoutez un index. L’index définit la clé primaire composite d’un Big Object et sert à interroger et à filtrer ses données.
  6. Enregistrez le Big Object et modifiez son statut pour le définir sur Déployé.

Examinons maintenant ces étapes plus en détail.

Les Big Objects personnalisés sont semblables aux objets standard et personnalisés, mais certains paramètres sont spécifiques aux Big Objects, et certains ne s’appliquent pas à eux. Les noms d'objets doivent être uniques parmi tous les Big Objects externes, personnalisés et standards de votre organisation.

Détails de définition d’un Big Object

Lorsque vous définissez un Big Object, vous devez d’abord renseigner quelques informations de base.

Nom du champ Description
Étiquette Ce nom est utilisé pour faire référence à l’objet dans l’interface utilisateur.
Étiquette au pluriel Nom de l’objet au pluriel.
Commence par une voyelle Selon la langue par défaut de votre organisation, indiquez si l’étiquette doit être précédée du déterminant « an » ou « a ».
Nom de l’objet Nom d’API unique du Big Object. Dans les packages gérés, ce nom évite les conflits de nommage avec les installations de packages. Utilisez uniquement des caractères alphanumériques et des traits de soulignement. Le nom doit commencer par une lettre et ne doit pas inclure d’espaces. Il ne peut pas se terminer par un trait de soulignement ni comporter deux traits de soulignement consécutifs.

Une fois enregistré, le nom d’API d’un Big Object est identifié par le suffixe « __b », alors que l’objet personnalisé utilise le suffixe « __c ».

Description Une description claire et précise vous aide à vous rappeler des différences entre les objets lorsque vous les consultez dans une liste.
Configuration de l’aide contextuelle Définit l’URL qui s’affiche lorsqu’un utilisateur clique sur Aide sur cette page à partir des pages d’accueil (vue d’ensemble), de modification et de détails de l’enregistrement d’objet, ainsi que depuis les vues de liste et les listes associées. Ce paramètre n’affecte pas le lien d’aide situé en haut des pages : ce dernier ouvre toujours la fenêtre d’aide.
Statut de déploiement Lorsque vous créez un Big Object, son statut est défini sur En cours de développement. Vous ne pouvez pas déployer un Big Object tant qu’il ne comporte pas un index contenant au moins un champ personnalisé. Seuls des champs personnalisés obligatoires peuvent être utilisés dans un index. Quand un index est créé, un deuxième statut Déployé s’affiche. Dès que vous êtes prêt à autoriser les utilisateurs à y accéder, changez son statut sur Déployé.

Champs personnalisés des Big Objects

Une fois votre Big Object défini, ajoutez-y des champs personnalisés. Ces derniers servent à stocker les données propres à votre Big Object. Vous pouvez également créer des champs de relations personnalisés pour associer votre Big Object à un autre objet dans Salesforce. Vous pouvez ajouter des champs personnalisés à un Big Object de la même manière que vous ajouteriez des champs personnalisés à n’importe quel autre objet de Salesforce. Les Big Objects acceptent les champs suivants :

  • Relation de recherche
  • Date/heure
  • Un e-mail
  • Numéro
  • Téléphone
  • Texte
  • Zone de texte (longue)
  • URL

Pour créer un index pour votre Big Object, au moins un champ personnalisé doit être marqué comme obligatoire.

Définition de l’index d'un Big Object personnalisé

C’est important ! N’oubliez pas que les champs définis dans l’index d’un Big Object déterminent l’identité et la capacité de ce dernier à être interrogé. Les champs définis dans votre index doivent être ceux qui seront les plus pertinents pour vos requêtes, donc un peu de prévoyance et de planification sont de mise. L’ordre dans lequel vous définissez les champs joue également un rôle important. Si vous utilisez SOQL pour interroger votre Big Object, vous pouvez uniquement interroger les champs qui composent votre index, dans l’ordre dans lequel vous les aurez définis. Placez en tête de votre index le champ que vous utiliserez le plus souvent dans un filtre de requête. Aussi, vous ne pouvez utiliser que certains opérateurs de comparaison, en fonction de la position du champ dans votre requête. Nous abordons les requêtes plus en détail dans l’unité suivante.

Gardez ces points en tête lorsque vous définissez l’index.

  • Un index doit contenir entre un et cinq champs personnalisés.
  • Les champs personnalisés inclus dans l’index doivent être définis comme étant obligatoires.
  • Vous ne pouvez pas inclure de champs de zone de texte longue dans l’index.
  • Les champs de texte d’un index ne peuvent pas comporter plus de 100 caractères au total.
  • Une fois que vous avez créé un index, vous ne pouvez ni le modifier ni le supprimer. Pour le modifier, créez un autre Big Object avec un nouvel index.

Détails de l’index d’un Big Object

Ils définissent les champs composant l’index de votre Big Object personnalisé et déterminent les champs et l’ordre de tri.

Nom du champ Description
Étiquette L’étiquette sert à faire référence à l’index dans l’interface utilisateur.
Nom Nom de l’API de l’index.
Champs d’index Définit la position et la direction d’index de chaque champ personnalisé inclus dans l’index. L’ordre des champs défini ici détermine leur ordre dans l’index. Définissez la position d’index sur 1 s’il s’agit du paramètre de filtrage le plus fréquemment utilisé. Les valeurs valides pour la direction d’index sont Croissant et Décroissant.

Exemple d’un Big Object personnalisé

Maintenant que vous connaissez les éléments nécessaires à l’élaboration d’un Big Object personnalisé, essayez d’en créer un. Imaginons que vous avez développé un super jeu, SFORCE-COM: U.F.B.O. Defense, dans lequel les joueurs doivent défendre la Terre contre un Big Object volant non identifié. Vous souhaitez pouvoir stocker toutes les interactions effectuées par vos joueurs au cours d’une session de jeu. Lors de chaque session, vous enregistrez dans votre Big Object personnalisé, nommé Customer_Interaction__b, les interactions suivantes :

  • Le nombre d’achats effectués par les joueurs dans In_Game_Purchase__c
  • Le niveau le plus élevé qu’ils ont atteint dans Level_Achieved__c
  • Le nombre de vies qu’il leur reste dans Lives_This_Game__c
  • Leur plate-forme dans Game_Platform__c
  • Leur score dans Score_This_Game__c
  • Le nom de leur compte dans Account__c
  • La date de leur session de jeu dans Play_Date__c
  • Leur temps de jeu dans Play_Duration__c

Votre jeu étant très populaire, chaque joueur génère plusieurs interactions par jour. Ces dernières, multipliées par la taille importante de votre communauté de joueurs, représentent un nombre assez impressionnant d’enregistrements. Ah, les affres de la réussite !

Vous définissez tous ces champs sur le Big Object personnalisé. Ensuite, vous définissez les champs composant l’index. Le nom du compte de chaque joueur est unique, donc vous avez choisi Account__c comme premier champ de votre index. Le champ suivant de votre index est la plate-forme de jeu du joueur, enregistrée dans Game_Platform__c, puis la date de la session dans Play_Date__c. Cet ordre précis vous permet d’effectuer des requêtes basées uniquement sur les comptes, ou sur les comptes et les plates-formes, ou sur les comptes, les plates-formes et les dates de jeu.

Utilisez les valeurs exactes de ces exemples pour créer un Big Object personnalisé comprenant huit champs personnalisés et un index. Si un champ et une valeur ne sont pas répertoriés dans la table, ignorez-les ou laissez-les comme valeurs par défaut.

Détails de définition d’un Big Object

Nom du champ Valeur
Étiquette Customer Interaction
Étiquette au pluriel Customer Interactions
Nom de l’objet Customer_Interaction
Description Laissez vide
Statut de déploiement En développement

Champs personnalisés des Big Objects

  • In-Game Purchase
    • Type de données : Texte
    • Étiquette du champ : In-Game Purchase
    • Longueur : 16
    • Nom du champ : In_Game_Purchase
    • Obligatoire : Non
  • Level Achieved
    • Type de données : Texte
    • Étiquette du champ : Level Achieved
    • Longueur : 16
    • Nom du champ : Level_Achieved
    • Obligatoire : Non
  • Lives Used This Game
    • Type de données : Numéro
    • Étiquette du champ : Lives Used This Game
    • Longueur : 18
    • Décimales : 0
    • Nom du champ : Lives_This_Game
    • Obligatoire : Non
  • Platform
    • Type de données : Texte
    • Étiquette du champ : Platform
    • Longueur : 16
    • Nom du champ : Game_Platform
    • Obligatoire : Oui
  • Score This Game
    • Type de données : Texte
    • Étiquette du champ : Score This Game
    • Longueur : 16
    • Nom du champ : Score_This_Game
    • Obligatoire : Non
  • Compte
    • Type de données : Référence
    • Associé à : Compte
    • Étiquette du champ : Compte
    • Nom du champ : Compte
    • Obligatoire : Oui
  • Date of Play
    • Type de données : Date/heure
    • Étiquette du champ : Date of Play
    • Nom du champ : Play_Date
    • Obligatoire : Oui
  • Play Duration
    • Type de données : Numéro
    • Étiquette du champ : Play Duration
    • Longueur : 18
    • Décimales : 2
    • Nom du champ : Play_Duration
    • Obligatoire : Non

Vous disposez maintenant de huit champs pour suivre toutes les interactions de vos joueurs. Bravo !

Champs personnalisés du Big Object

Détails de l’index d’un Big Object

Nom du champ Valeurs
Étiquette Customer Interactions Index
Nom CustomerInteractionsIndex
Champs d’index

Position d’index 1: Account__c, Décroissant

Position d’index 2: Game_Platform__c, Croissant

Position d’index 3: Play_Date__c, Décroissant

Déploiement des Big Objects

Maintenant que vous avez défini votre Big Object personnalisé, vous êtes prêt à le déployer. Cliquez sur Modifier sur le Big Object et définissez son statut de déploiement sur Déployé.

Les Big Objects tels qu’ils apparaissent dans la Configuration

Vous êtes maintenant prêt à commencer à utiliser votre nouveau Big Object personnalisé.

Un Big Object personnalisé dans la Configuration.

De là, vous pouvez modifier les étiquettes et les noms de votre Big Object personnalisé et de ses champs, mais vous ne pouvez ni modifier ni supprimer l’index. Pour le modifier, recommencez avec un nouveau Big Object. Vous pouvez aussi supprimer un Big Object personnalisé depuis la Configuration. Les Big Objects personnalisés supprimés sont conservés pendant 15 jours. Pendant cette période, vous pourrez les restaurer ou les supprimer définitivement, mais ensuite, les Big Objects seront définitivement supprimés de toute façon.

Renseignement des Big Objects

Il existe deux méthodes pour remplir un Big Object. Vous pouvez soit utiliser un fichier .csv avec Data Loader ou l’API, soit le faire entièrement via Apex.

Lorsque vous utilisez un fichier .csv, la première ligne de votre fichier doit contenir les étiquettes des champs utilisés pour mapper les données .csv avec votre Big Object personnalisé. Chargez les données dans le Big Object à l’aide de Data Loader ou via l’API de transfert en masse ou l’API SOAP. Voici le fichier .csv que nous utilisons pour télécharger les données vers notre Big Object Customer_Interaction__b. Un Big Object peut prendre en charge bien plus de données que celles que nous avons fournies ici à titre d’exemple.
Play Start,In-Game Purchase,Level Achieved,Lives Used,Platform,Play Stop,Score,Account
2015-01-01T23:01:01Z,A12569,57,7,PC,2015-01-02T02:27:01Z,55736,001R000000302D3
2015-01-03T13:22:01Z,B78945,58,7,PC,2015-01-03T15:47:01Z,61209,001R000000302D3
2015-01-04T15:16:01Z,D12156,43,5,iOS,2015-01-04T16:55:01Z,36148,001R000000302D3
Si vous voulez utiliser Apex pour remplir Customer_Interaction__b, utilisez la méthode 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 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;
 
// Modify a field in the index
bo.Game_Platform__c = 'Mac';
 
// Insert the record, creating a new record because the primary key has changed 
database.insertImmediate(bo);
// 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;
 
// Modify a field not included in the index
bo.Level_Achieved__c = '1';
 
// Insert the record, which updates the second record because the index is the same 
database.insertImmediate(bo);
Avertissement

Avertissement

Les tests Apex utilisant des appels DML mixtes ne sont pas autorisés et échouent. Si vous n’écrivez qu’au Big Object, le test insère des données de mauvaise qualité dans le Big Object cible que vous devez supprimer manuellement. Pour placer des appels DML de test vers le Big Object cible, utilisez plutôt une infrastructure de test avec l’API Apex stub.

Réinsérer un enregistrement avec le même index mais des données différentes produit des résultats similaires à une opération de mise à jour/insertion. Si un enregistrement existe à cet index, l’insertion écrase ses valeurs avec les nouvelles données. L’insertion est idempotente, donc insérer des données déjà existantes ne produit pas de doublons. La réinsertion est utile pour télécharger des millions d’enregistrements. Si une erreur se produit, la réinsertion renvoie les téléchargements ratés sans dupliquer les données. Pendant la réinsertion, un nouvel enregistrement est inséré si aucun n’existe à l’index donné.