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.
- Cliquez sur et sélectionnez Setup (Configuration).
- Saisissez Big Objects dans la zone Recherche rapide, puis sélectionnez Big Objects.
- Créez un Big Object et ajoutez-y quelques informations de base.
- Ajoutez des champs personnalisés. Ils stockent les données sur votre Big Object.
- Ajoutez un index. L’index définit la clé primaire composite d’un Big Object et sert à interroger et à filtrer ses données.
- 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 ! Comme indiqué précédemment, l’index définit la clé primaire composite pour un objet volumineux. Les champs définis dans l’index d’un objet volumineux déterminent son identité et sa capacité à ê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.
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 informations suivantes :
- Le nombre d’achats effectués par le joueur dans In_Game_Purchase__c
- Le niveau le plus élevé qu’il a atteint dans Level_Achieved__c
- Le nombre de vies qu’il lui reste dans Lives_This_Game__c
- La plate-forme dans Game_Platform__c
- Son score dans Score_This_Game__c
- Le nom de son compte dans Account__c
- La date de sa session de jeu dans Play_Date__c
- Son 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 : 16
- 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 !
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é.
Vous êtes maintenant prêt à commencer à utiliser votre nouveau Big Object personnalisé.
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 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.
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
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 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);
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é.
Ressources
-
Aide Salesforce : Gestion des Big Objects
-
Guide de mise en œuvre des Big Objects : Définition et déploiement des Big Objects personnalisés avec l’API de métadonnées
-
Aide Salesforce : Créer des champs personnalisés
-
Guide de mise en œuvre des Big Objects : Renseignement d’un Big Object personnalisé
-
Aide Salesforce : Data Loader
-
TrailheaDX 2017 Session: Big Objects—Bring Big Data to Lightning Platform