Erfassen Sie Ihre Fortschritte
Trailhead-Startseite
Trailhead-Startseite

Definieren benutzerdefinierter großer Objekte

Lernziele

Nachdem Sie diese Lektion abgeschlossen haben, sind Sie in der Lage, die folgenden Aufgaben auszuführen:
  • Erstellen eines benutzerdefinierten großen Objekts
  • Erstellen eines benutzerdefinierten Index
  • Bereitstellen eines benutzerdefinierten großen Objekts
  • Füllen eines großen Objekts

Definieren benutzerdefinierter großer Objekte

Sie haben sich jetzt die Anwendungsfälle für benutzerdefinierte große Objekte angesehen oder sich einen eigenen Anwendungsfall überlegt. Nun ist es an der Zeit, eines zu erstellen.

Sie können ein benutzerdefiniertes großes Objekt in Setup definieren. Sie können ein benutzerdefiniertes großes Objekt auch mithilfe der Metadaten-API definieren, aber in Setup geht das wesentlich einfacher. Melden Sie sich zunächst bei Ihrem Trailhead Playground an und navigieren Sie zu Setup. So werden große Objekte im Allgemeinen definiert.

  1. Klicken Sie auf Setup-Zahnradsymbol und wählen Sie Setup aus.
  2. Geben Sie in Feld "Schnellsuche" Große Objekte ein und wählen Sie dann Große Objekte aus.
  3. Erstellen Sie ein großes Objekt und fügen Sie einige grundlegende Details hinzu.
  4. Fügen Sie benutzerdefinierte Felder hinzu. In ihnen werden die Daten für Ihr großes Objekt gespeichert.
  5. Fügen Sie einen Index hinzu. Der Index definiert den zusammengesetzten Primärschlüssel eines großen Objekts und wird für Abfrage und Filterung der Daten des großen Objekts verwendet.
  6. Speichern Sie das große Objekt und ändern Sie den Status in "Bereitgestellt".

Diese Schritte wollen wir uns nun etwas genauer ansehen.

Benutzerdefinierte große Objekte sind Standard- und benutzerdefinierten Objekten ähnlich, doch einige Parameter sind für große Objekte spezifisch, während andere Parameter keine Anwendung finden. Objektnamen müssen für alle standardmäßigen, benutzerdefinierten, externen und großen Objekte in Ihrer Organisation eindeutig sein.

Details für die Definition großer Objekte

Wenn Sie ein großes Objekt definieren, geben Sie zunächst einige grundlegende Details dazu ein.

Feldname Beschreibung
Bezeichnung Dieser Name wird zur Identifizierung des Objekts auf der Benutzeroberfläche verwendet.
Bezeichnung - Plural Der Name des Objekts im Plural.
Beginnt mit Vokal Sofern dies für die Standardsprache Ihres Unternehmens erforderlich ist, geben Sie das Geschlecht der Bezeichnung an.
Objektname Eindeutiger API-Name des großen Objekts. In verwalteten Paketen verhindert dieser Name Namenskonflikte bei der Paketinstallation. Verwenden Sie nur alphanumerische Zeichen und Unterstriche. Der Name muss mit einem Unterstrich beginnen und darf keine Leerzeichen aufweisen. Er darf nicht mit einem Unterstrich enden und keine zwei aufeinanderfolgenden Unterstriche enthalten.

Nach dem Speichern wird der API-Name eines großen Objekts mit dem Suffix "__b" (für "big") angegeben, während dieses Suffix bei benutzerdefinierten Objekten "__c" (für "custom") lautet.

Beschreibung Eine aussagekräftige Beschreibung gibt Hinweise zu den Unterschieden zwischen Objekten, wenn Sie sie in einer Liste anzeigen.
Einstellungen für die kontextabhängige Hilfe Definiert den URL, der angezeigt wird, wenn ein Benutzer auf den Link Hilfe zu dieser Seite klickt, der auf der Startseite (Übersicht), den Bearbeitungs- und Detailseiten des benutzerdefinierten Objektdatensatzes, in Listenansichten und Themenlisten zu finden ist. Diese Einstellung wirkt sich nicht auf den Link "Hilfe" oben auf einer Seite aus. Über diesen Link wird immer das Fenster "Hilfe" geöffnet.
Bereitstellungsstatus Wenn Sie ein großes Objekt erstellen, wird der Status auf "In Entwicklung" festgelegt. Sie können ein großes Objekt erst dann bereitstellen, wenn es einen Index aufweist, der mindestens ein benutzerdefiniertes Feld enthält. In einem Index sind nur erforderliche benutzerdefinierte Felder zulässig. Nachdem Sie einen Index erstellt haben, wird als zweiter Status "Bereitgestellt" angezeigt. Wenn Sie bereit sind, Benutzern Zugriff zu gewähren, ändern Sie den Status in "Bereitgestellt".

Benutzerdefinierte Felder großer Objekte

Sobald Sie Ihr großes Objekt definiert haben, fügen Sie benutzerdefinierte Felder hinzu. In ihnen werden die eindeutigen Daten für Ihr großes Objekt gespeichert. Sie können zudem benutzerdefinierte Beziehungsfelder erstellen, um Ihr großes Objekt mit einem anderen Objekt in Salesforce zu verknüpfen. Sie können einem großen Objekt benutzerdefinierte Felder auf die gleiche Weise wie jedem Objekt in Salesforce hinzufügen. Große Objekte unterstützen diese Feldtypen:

  • Nachschlagebeziehung
  • Datum/Uhrzeit
  • E-Mail
  • Zahl
  • Phone
  • Text
  • Textfeld (Lang)
  • URL

Um einen Index für Ihr großes Objekt zu erstellen, muss mindestens ein benutzerdefiniertes Feld als Pflichtfeld markiert sein.

Definieren des Indexes eines benutzerdefinierten großen Objekts

Dies ist wichtig! Nicht vergessen: Die im Index eines großen Objekts definierten Felder bestimmen die Identität des Objekts und seine Abfragemöglichkeiten. Die Felder, die in Ihrem Index definiert sind, sollten die Felder sein, die für Ihre Abfragen am relevantesten sind. Sie sollten hier also vorausschauend planen. Auch die Reihenfolge, in der Sie die Felder definieren, ist von großer Bedeutung. Wenn Sie SOQL verwenden, um Ihr großes Objekt abzufragen, können Sie nur die den Index bildenden Felder abfragen, und zwar in der Reihenfolge, in der Sie sie definiert haben. Weisen Sie das Feld, das Sie am häufigsten in einem Abfragefilter verwenden werden, der ersten Position in Ihrem Index zu. Sie können auch nur bestimmte Vergleichsoperatoren verwenden, die von der Position des Felds in Ihrer Abfrage abhängen. In der nächsten Lektion beschäftigen wir uns noch eingehender mit Abfragen.

Beachten Sie bei der Definition des Index diese Aspekte.

  • Ein Index muss mindestens ein benutzerdefiniertes Feld enthalten, und die maximale Gesamtzahl benutzerdefinierter Felder beträgt fünf.
  • Alle benutzerdefinierten Felder im Index müssen als Pflichtfelder gekennzeichnet werden.
  • Felder des Typs "Langer Textbereich" können nicht in den Index einbezogen werden.
  • Die Gesamtanzahl der Zeichen in allen Textfeldern eines Index darf 100 nicht überschreiten.
  • Nach der Erstellung eines Index lässt sich dieser nicht mehr bearbeiten oder löschen. Um den Index zu ändern, erstellen Sie ein weiteres großes Objekt mit einem neuen Index.

Details zum Index großer Objekte

Definieren die Felder, die den Index Ihres benutzerdefinierten großen Objekts bilden, und bestimmen die Felder und Sortierreihenfolge.

Feldname Beschreibung
Bezeichnung Die Bezeichnung wird zum Verweisen auf den Index auf der Benutzeroberfläche verwendet.
Name Der API-Name des Index.
Indexfelder Legen Sie die Indexposition und die Indexrichtung für jedes benutzerdefinierte Feld fest, das im Index enthalten ist. Die Reihenfolge der Felder hier bestimmt ihre Reihenfolge im Index. Legen Sie für den am häufigsten verwendeten Filterparameter die Indexposition auf 1 fest. Gültige Werte für die Indexrichtung sind "Aufsteigend" und "Absteigend".

Beispiel für ein benutzerdefiniertes großes Objekt

Jetzt, da Sie wissen, was erforderlich ist, um ein benutzerdefiniertes großes Objekt zu erstellen, versuchen Sie, eines zu erstellen. Tun wir so, als hätten Sie dieses fantastische neue Spiel namens SFORCE-COM: U.F.B.O. Defense entwickelt, in dem Spieler die Erde gegen die Bedrohung durch das "Unidentified Flying Big Object" (UFBO) verteidigen. Sie möchten alle Interaktionen Ihrer Spieler in einer einzelnen Spielsitzung speichern können. In jeder Spielsitzung erfassen Sie diese Informationen in Ihrem benutzerdefinierten großen Objekt, Customer_Interaction__b:

  • Die Anzahl der Dinge, die der Spieler gekauft hat, in In_Game_Purchase__c
  • Den höchsten Level, den sie erreicht haben, in Level_Achieved__c
  • Die Anzahl ihrer Leben in Lives_This_Game__c
  • Ihre Plattform in Game_Platform__c
  • Ihren Punktestand in Score_This_Game__c
  • Ihren Accountnamen in Account__c
  • Das Datum ihrer Spielsitzung in Play_Date__c
  • Ihre Spieldauer in Play_Duration__c

Ihr Spiel ist sehr beliebt, sodass Sie für jeden Benutzer jeden Tag mehrere Interaktionen erhalten, was, multipliziert mit der massiven Anzahl Ihrer Spieler, eine gigantische Anzahl von Datensätzen ergibt. Tja, Erfolg hat seinen Preis!

Sie definieren alle diese Felder für das benutzerdefinierte große Objekt. Nach der Definition der Felder definieren Sie auch die Felder, aus denen sich der Index zusammensetzt. Da der Accountname jedes Spielers eindeutig ist, haben Sie Account__c als erstes Feld für unseren Index gewählt. Die nächsten Felder in Ihrem Index sind die Spielplattform des Spielers, Game_Platform__c, und dann das Datum der jeweiligen Spielsitzung, Play_Date__c. Diese spezifische Reihenfolge ermöglicht Ihnen Abfragen nur auf der Grundlage von Accounts oder Accounts und Spielplattformen oder Accounts, Spielplattformen und Spieldatum.

Verwenden Sie die genauen Werte in diesen Beispielen, um ein benutzerdefiniertes großes Objekt mit acht benutzerdefinierten Feldern und einem Index zu erstellen. Wenn ein Feld und ein Wert nicht in der Tabelle aufgeführt sind, ignorieren Sie dies oder übernehmen Sie die Standardeinstellung.

Details für die Definition großer Objekte

Feldname Value (Wert)
Bezeichnung Interaktion des Kunden
Bezeichnung - Plural Interaktionen der Kunden
Objektname Customer_Interaction
Beschreibung Leer lassen
Bereitstellungsstatus In Entwicklung

Benutzerdefinierte Felder großer Objekte

  • In-Game-Kauf
    • Datentyp: Text
    • Feldbezeichnung: In-Game-Kauf
    • Länge: 16
    • Feldname: In_Game_Purchase
    • Erforderlich: Nein
  • Erreichter Level
    • Datentyp: Text
    • Feldbezeichnung: Erreichter Level
    • Länge: 16
    • Feldname: Level_Achieved
    • Erforderlich: Nein
  • Verwendete Leben in diesen Spiel
    • Datentyp: Zahl
    • Feldbezeichnung: Verwendete Leben in diesen Spiel
    • Länge: 18
    • Dezimalstellen: 0
    • Feldname: Lives_This_Game
    • Erforderlich: Nein
  • Plattform
    • Datentyp: Text
    • Feldbezeichnung: Plattform
    • Länge: 16
    • Feldname: Game_Platform
    • Erforderlich: Ja
  • Punktestand im Spiel
    • Datentyp: Text
    • Feldbezeichnung: Punktestand im Spiel
    • Länge: 16
    • Feldname: Score_This_Game
    • Erforderlich: Nein
  • Account
    • Datentyp: Nachschlagen
    • Bezug zu: Account
    • Feldbezeichnung: Account
    • Feldname: Account
    • Erforderlich: Ja
  • Datum des Spiels
    • Datentyp: Datum/Uhrzeit
    • Feldbezeichnung: Datum des Spiels
    • Feldname: Play_Date
    • Erforderlich: Ja
  • Dauer des Spiels
    • Datentyp: Zahl
    • Feldbezeichnung: Dauer des Spiels
    • Länge: 18
    • Dezimalstellen: 2
    • Feldname: Play_Duration
    • Erforderlich: Nein

Jetzt haben Sie acht Felder, um alle Interaktionen Ihrer Spieler zu verfolgen. Gut gemacht!

Benutzerdefinierte Felder großer Objekte

Details zum Index großer Objekte

Feldname Values (Werte)
Bezeichnung Index der Interaktionen der Kunden
Name CustomerInteractionsIndex
Indexfelder

Indexposition 1: Account__c, Absteigend

Indexposition 2: Game_Platform__c, Aufsteigend

Indexposition 3: Play_Date__c, Absteigend

Bereitstellen großer Objekte

Nachdem Sie Ihr benutzerdefiniertes großes Objekt definiert haben, können Sie es bereitstellen. Klicken Sie für das große Objekt auf Bearbeiten und ändern Sie den Bereitstellungsstatus in "Bereitgestellt".

In Setup angezeigte große Objekte

Jetzt steht der Verwendung Ihres neuen großen Objekts nichts mehr im Weg.

Ein benutzerdefiniertes großes Objekt in Setup

In diesem Fenster können Sie die Beschriftungen und Namen für Ihr benutzerdefiniertes großes Objekt und seine Felder bearbeiten. Den Index können Sie allerdings weder bearbeiten noch löschen. Zum Ändern des Index beginnen Sie mit einem neuen großen Objekt neu. Sie können ein benutzerdefiniertes großes Objekt auch aus Setup löschen. Gelöschte große Objekte werden 15 Tage lang gespeichert. Während dieses Zeitraums haben Sie die Wahl, das Objekt wiederherzustellen oder permanent zu löschen, doch nach Ablauf dieser 15 Tage wird es dauerhaft gelöscht.

Füllen großer Objekte

Es gibt zwei Möglichkeiten, große Objekte zu füllen. Sie können entweder mit Data Loader oder der API eine CSV-Datei verwenden oder diesen Vorgang komplett über Apex ausführen.

Wenn Sie eine CSV-Datei nutzen, muss die erste Zeile in Ihrer Datei die Feldbeschriftungen enthalten, die für die Zuordnung der CSV-Daten zu Ihrem benutzerdefinierten großen Objekt verwendet werden. Laden Sie die Daten in das große Objekt in Data Loader hoch oder führen Sie den Upload über die Bulk-API oder die SOAP-API durch. Nachstehend sehen Sie die CSV-Datei, die wir zum Hochladen von Daten in unser großes Objekt Customer_Interaction__b verwenden. Ein großes Objekt kann wesentlich mehr Daten unterstützen als hier im Beispiel angegeben.
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
Wenn Sie Apex zum Füllen von Customer_Interaction__b einsetzen möchten, verwenden Sie die Methode 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);
Warnung

Warnung

Apex-Tests, die gemischte DML-Aufrufe verwenden, sind nicht zulässig und schlagen fehl. Wenn Sie nur in das große Objekt schreiben, fügt der Test fehlerhafte Daten in das große Zielobjekt ein, die Sie manuell löschen müssen. Wenn das große Zielobjekt DML-Testaufrufe enthalten soll, verwenden Sie ein simuliertes Framework mit der Apex-Stub-API.

Wenn Sie einen Datensatz mit dem gleichen Index, aber mit unterschiedlichen Daten erneut einfügen, führt dies zu einem ähnlichen Verhalten wie ein Upsert-Vorgang. Existiert ein Satz mit dem Index, überschreibt der Einfügevorgang die Indexwerte mit den neuen Daten. Die Einfügung ist idempotent, was heißt, dass das Einfügen vorhandener Daten nicht zu Duplikaten führt. Das erneute Einfügen ist beim Hochladen von Millionen von Datensätzen sehr nützlich. Tritt ein Fehler auf, werden die fehlgeschlagenen Uploads einfach erneut hochgeladen, ohne dass Daten dupliziert werden. Ist beim erneuten Einfügen kein Datensatz für den angegebenen Index vorhanden, wird ein neuer Datensatz eingefügt.