Abgleich der von Nutzern bereitgestellten Daten

Beim Abgleich der von Nutzern bereitgestellten Daten (user-provided data matching, UPDM) werden selbst erhobene Daten zu einem bestimmten Nutzer, etwa Informationen von Websites, aus Apps oder aus Geschäften, mit den Aktivitäten genau dieses angemeldeten Nutzers in allen Google-Anzeigendaten zusammengeführt. Dazu gehören auch Daten von Google-Produkten und ‑Diensten. Dazu gehören auch Daten, die über Produkte der Google Marketing Platform (GMP) gekauft wurden, z. B. YouTube-Daten, die über Display & Video 360 gekauft wurden. Andere GMP-Produkte, die nicht von Google stammen und betrieben werden, werden nicht unterstützt.

Damit von Nutzern bereitgestellte Daten abgeglichen werden können, muss das Anzeigenereignis mit einem angemeldeten Nutzer in Google-Anzeigendaten verknüpft sein.

In diesem Dokument wird die Funktion „Abgleich der von Nutzern bereitgestellten Daten“ beschrieben und es werden Anleitungen zur Einrichtung und Verwendung bereitgestellt.

Übersicht über den Abgleich in der privaten Cloud

Um wertvolle Werbeinformationen zu erhalten, müssen oft Daten aus mehreren Quellen zusammengeführt werden. Die Entwicklung einer eigenen Lösung für dieses Datenpipeline-Problem erfordert einen erheblichen Zeit- und Entwicklungsaufwand. Private Cloud Match in Ads Data Hub optimiert diesen Prozess, indem eine Ads Data Hub-Abfragevorlage zum Erstellen einer Abgleichtabelle in BigQuery bereitgestellt wird. Diese kann dann in Ihren Ads Data Hub-Abfragen verwendet werden, um Ihre Anzeigendaten mit Ihren selbst erhobenen Daten abzugleichen. Wenn Sie selbst erhobene Daten für Ihre Abfragen verwenden, können Sie Kunden noch mehr bieten. Außerdem sind Sie dann besser auf branchenweite Änderungen beim Anzeigen-Tracking vorbereitet.

Da der Abgleich der von Nutzern bereitgestellten Daten nur für Nutzer verfügbar ist, die in Inventar angemeldet sind, das Google gehört und von Google betrieben wird, ist er nicht von der bevorstehenden Einstellung von Drittanbieter-Cookies betroffen. Da sie widerstandsfähiger gegen branchenbezogene Änderungen sind als Drittanbieterdaten, können sie umfassendere Informationen liefern, was zu mehr Kundeninteraktionen führen kann.

Zusammenfassung des Prozesses

  1. Einrichtung der Datenaufnahme und des Datenabgleichs
    • Sie: Ihre selbst erhobenen Daten müssen sich in BigQuery befinden und Ihr Dienstkonto muss Lesezugriff darauf haben. Weitere Informationen finden Sie unter Datenaufnahme einrichten.
  2. Aufnahme und Abgleich selbst erhobener Daten
    • Sie formatieren Ihre selbst erhobenen Daten und laden sie in Ihr BigQuery-Dataset hoch.
    • Sie initiieren eine Anfrage zum Datenabgleich, indem Sie einePrivate Cloud Match-Analyseabfrage erstellen und einen Zeitplan festlegen.
    • Google führt Daten aus Ihrem Projekt und Google-eigene Daten zusammen, die die Google-Nutzer-ID und gehashte, von Nutzern bereitgestellte Daten enthalten, um Abgleichstabellen zu erstellen und zu aktualisieren.
    • Selbst erhobene Daten aufnehmen
  3. Laufende Abfragen in Ads Data Hub, basierend auf abgeglichenen Daten
    • Sie führen Abfragen für die Match-Tables auf dieselbe Weise aus wie reguläre Abfragen in Ads Data Hub. Weitere Informationen finden Sie unter Übereinstimmende Daten abfragen.

Informationen zu Datenschutzanforderungen

Kundendaten erheben

Wenn Sie den Abgleich der von Nutzern bereitgestellten Daten verwenden, müssen Sie selbst erhobene Daten hochladen. Das können Daten sein, die Sie auf Ihren Websites, in Ihren Apps oder in Ihren Geschäften erhoben haben, oder Daten, die ein Kunde direkt mit Ihnen geteilt hat.

Die folgenden Anforderungen müssen erfüllt sein:

  • Legen Sie in Ihrer Datenschutzerklärung offen, dass Sie Kundendaten an Dritte weitergeben, damit sie Dienstleistungen in Ihrem Auftrag erbringen können, und dass Sie die Einwilligung für die Weitergabe dieser Daten einholen, sofern das gesetzlich vorgeschrieben ist.
  • Laden Sie Kundendaten nur über APIs oder Schnittstellen hoch, die von Google zugelassen sind.
  • Halten Sie alle anwendbaren Gesetze und Bestimmungen ein, darunter auch Selbstregulierungs- und Branchenkodizes.

Einholen der Einwilligung für selbst erhobene Daten bestätigen

Damit Sie Ihre selbst erhobenen Daten in Ads Data Hub nutzen können, müssen Sie bestätigen, dass Sie die entsprechende Einwilligung zur Weitergabe von Daten von Endnutzern im EWR an Google gemäß der Richtlinie zur Einwilligung der Nutzer in der EU und den Ads Data Hub-Richtlinien eingeholt haben. Die Bestätigung ist für jedes Ads Data Hub-Konto und bei jedem Upload neuer selbst erhobener Daten erforderlich. Jeder Nutzer kann die Bestätigung für das gesamte Konto abgeben.

Hinweis: Für UPDM-Abfragen gelten dieselben Regeln für Google-Dienst-Abfragen wie für Analyseabfragen. So sind z. B. keine dienstübergreifenden Abfragen für Nutzer im EWR möglich, wenn Sie eine Match-Table erstellen.

Informationen dazu, wie Sie in Ads Data Hub bestätigen, dass Sie die Einwilligung eingeholt haben, finden Sie unter Einwilligungsanforderungen für den Europäischen Wirtschaftsraum.

Datengröße

Zum Schutz der Privatsphäre von Endnutzern gelten für den Abgleich der von Nutzern bereitgestellten Daten die folgenden Anforderungen an die Datengröße:

  • Sie müssen mindestens 1.000 Einträge in Ihre Nutzerliste hochladen.

Datenaufnahme einrichten

Voraussetzungen:

  • Ihre selbst erhobenen Daten müssen sich in BigQuery befinden. Wenn Sie einen VPC-SC-Perimeter haben, müssen sich diese selbst erhobenen Daten innerhalb Ihres VPC-SC befinden.
  • Ihr Ads Data Hub-Dienstkonto muss Lesezugriff auf die selbst erhobenen Daten haben.
  • Ihre selbst erhobenen Daten müssen richtig formatiert und gehasht sein. Weitere Informationen finden Sie im nächsten Abschnitt.

Darüber hinaus ist für Private Cloud Match kein zusätzliches Onboarding erforderlich. Wenn Sie eine Analyseabfrage ausführen können, können Sie auch eine Private Cloud Match-Abfrage ausführen.

Selbst erhobene Daten aufnehmen und abgleichen

Quellberechtigungen und Verbindungsanforderungen

In Ads Data Hub-Verbindungen wird das Dienstkonto verwendet, das unter Einstellungen > Details > Dienstkonto angezeigt wird (normalerweise service-<number>@gcp-sa-adsdatahub.iam.gserviceaccount.com). Weisen Sie ihm die folgenden Rollen zu:

  • BigQuery-Quelle: roles/bigquery.dataViewer (BigQuery-Datenbetrachter) für das Quell-Dataset oder die Quelltabelle.
  • Cloud Storage-Quelle: roles/storage.objectViewer (Storage-Objekt-Betrachter) für den Quell-Bucket oder das Quellobjekt.
  • Ziel für den Import selbst erhobener Daten: roles/bigquery.dataEditor (BigQuery Data Editor) für das Ziel-Dataset, wenn sich die Tabelle nicht in Ihrem Standard-Dataset befindet.

Anforderungen an Felder und Datentypen

  1. Abgleich der von Nutzern bereitgestellten Daten (UPDM):
    • Ordnen Sie user_id und mindestens ein Feld mit personenidentifizierbaren Informationen zu (email, phone oder vollständige Adresse: first_name, last_name, country, zip_code).
    • user_id, country und zip_code: Nur-Text-STRING (nicht gehasht). Bei einer BigQuery-Quelle müssen diese Spalten bereits STRING sein. Andere Typen (z. B. INT64) schlagen beim Erstellen der Verbindung fehl. Connections wandelt user_id in der Abgleichtabelle in BYTES um. country muss ein zweistelliger ISO 3166-1-Alpha-2-Code sein.
    • email, phone, first_name und last_name: HASH – muss bereits SHA-256-gehasht und Base64-codiert sein (ein 64-stelliger Hex-SHA-256-Wert wird ebenfalls akzeptiert). In Connections werden Daten nicht gehasht. Nur-Text-Werte werden beim Erstellen der Verbindung nicht erfasst. Jede Ausführung schlägt dann mit ... must be encoded using TO_BASE64(SHA256(...)) fehl.
    • Verbindungen für den Abgleich der von Nutzern bereitgestellten Daten haben keine Zieltabelle. Alle Abfragen in einem Konto und manuell ausgeführte UPDM-Abfragen schreiben in dieselben Abgleichsdaten, sodass jede Ausführung die vorherige ersetzt. Eine UPDM-Verbindung pro Konto reicht aus.
    • Informationen zu den Regeln für die einzelnen Felder finden Sie unter Daten für die Eingabe formatieren.
  2. Import eigener Daten:
    • Verwenden Sie nur die in der Benutzeroberfläche angebotenen Datentypen: INTEGER, STRING, HASH, DOUBLE, DATE und TIMESTAMP. Andere BigQuery-Typen werden nicht unterstützt.
    • BigQuery-Quelle: Der zugeordnete Typ wird nicht angewendet. Jede Zielspalte behält den Typ ihrer Quellspalte bei.
    • Cloud Storage-Quelle: Spalten werden als STRING gelesen und in den zugeordneten Typ umgewandelt. Werte, die nicht umgewandelt werden können, werden zu NULL, ohne dass die Ausführung fehlschlägt.
    • Bei jeder Ausführung wird die gesamte Zieltabelle ersetzt. Es werden keine Daten angehängt. Wenn die Quelle keine Zeilen enthält, ist das Ziel leer. Verwenden Sie nicht die Quelltabelle oder eine Tabelle, deren Daten Sie behalten möchten, als Ziel.

Anforderungen an Cloud Storage-CSV-Spalten

  • Fügen Sie eine Kopfzeile ein. Die erste Zeile wird übersprungen. Die Spaltennamen werden nicht verwendet.
  • Die Datei muss genau die zugeordneten Quellspalten enthalten, nicht mehr und nicht weniger. Zusätzliche Spalten führen dazu, dass die Ausführung fehlschlägt.
  • Import selbst erhobener Daten:Die Spalten müssen in derselben Reihenfolge wie die Feldzuordnungen sein.
  • Abgleich der von Nutzern bereitgestellten Daten: Die Spalten müssen in dieser Reihenfolge sein, wobei nur die von Ihnen zugeordneten Felder beibehalten werden: user_id, email, phone, first_name, last_name, country, zip_code. Die Reihenfolge der Zuordnungszeilen spielt keine Rolle.
  • Eine andere Spaltenreihenfolge wird nicht erkannt: Werte werden ohne Fehlermeldung in die falschen Felder geladen oder die Abgleichsraten sinken.

Unterstützte Datenquellen und Verbindungslimits

  • Datenquellen: Es werden nur BigQuery- und Cloud Storage-Quellen unterstützt.
  • BigQuery-Tabellennamen: Für BigQuery-Quell- und ‑Zieltabellen ist der vollständige project.dataset.table-Name erforderlich.
  • Cloud Storage-Dateipfade: Geben Sie einen einzelnen Datei-URI an (z. B. gs://bucket/path/file.csv). Platzhalterpfade mit * oder ? werden nicht unterstützt.
  • Verbindungsnamen:Jede Verbindung in einem Konto muss einen eindeutigen Namen haben.

Daten für die Eingabe formatieren

Ihre Daten müssen die folgenden Formatierungsanforderungen erfüllen, damit sie richtig zugeordnet werden können:

  • Wenn in den folgenden Beschreibungen der Eingabefelder angegeben, müssen Sie den Upload mit SHA256-Hashing durchführen.
  • UPDM unterstützt die Base64-Codierung. Siehe TO_BASE64.
  • Eingabefelder müssen als Strings formatiert sein. Wenn Sie beispielsweise die SHA256-Hash-Funktion von BigQuery verwenden, nutzen Sie die folgende Transformation: TO_BASE64(SHA256(user_data)).

Nutzer-ID

  • Datentyp: BYTES
  • Hashing: Keine

E-Mail

  • Entfernen Sie Leerzeichen am Anfang und Ende.
  • Alle Zeichen kleinschreiben
  • Geben Sie einen Domainnamen für alle E-Mail-Adressen an, z. B. gmail.com oder hotmail.de.
  • Entfernen Sie Akzente, z. B. è, é, ê oder ë zu e.
  • Entfernen Sie alle Punkte (.) vor dem Domainnamen in gmail.com- und googlemail.com-E-Mail-Adressen.
  • Hashing: Base64-codiertes SHA256

Gültig: TO_BASE64(SHA256("jeffersonloveshiking@gmail.com"))

Ungültig: TO_BASE64(SHA256("JéffersonLôvesHiking@gmail.com"))

Telefon

  • Leerzeichen entfernen
  • Format im E.164-Format – Beispiel für die USA: +14155552671, Beispiel für das Vereinigte Königreich: +442071838750
  • Entfernen Sie alle Sonderzeichen mit Ausnahme des „+“ vor dem Ländercode.
  • Hashing: Base64-codiertes SHA256

Gültig: TO_BASE64(SHA256("+18005550101"))

Ungültig: TO_BASE64(SHA256("(800) 555-0101"))

Vorname

  • Leerzeichen entfernen
  • Alle Zeichen kleinschreiben
  • Entfernen Sie alle Präfixe, z. B. Frau, Herr, Frau, Dr.
  • Entfernen Sie keine Akzente, z. B. è, é, ê oder ë.
  • Hashing: Base64-codiertes SHA256

Gültig: TO_BASE64(SHA256("daní"))

Ungültig: TO_BASE64(SHA256("Daní"))

Nachname

  • Leerzeichen entfernen
  • Alle Zeichen kleinschreiben
  • Entfernen Sie alle Suffixe, z. B. Jr., Sr., 2nd, 3rd, II, III, PHD, MD
  • Entfernen Sie keine Akzente, z. B. è, é, ê oder ë.
  • Hashing: Base64-codiertes SHA256

Gültig: TO_BASE64(SHA256("délacruz"))

Ungültig: TO_BASE64(SHA256("dé la Cruz, Jr."))

Land

  • Geben Sie den Ländercode auch dann an, wenn Ihre gesamten Kundendaten aus demselben Land stammen.
  • Länderdaten nicht hashen
  • Verwenden Sie ISO 3166-1 alpha-2-Ländercodes.
  • Hashing: Keine

Gültig: US

Ungültig: United States of America oder USA

Postleitzahl

  • Postleitzahlen nicht hashen
  • Sowohl US-amerikanische als auch internationale Postleitzahlen sind zulässig
  • Für die USA:
    • Fünfstellige Codes sind zulässig, z. B. 94043.
    • Fünf Ziffern, gefolgt von einer vierstelligen Erweiterung, sind ebenfalls zulässig, z. B. 94043-1351 oder 940431351.
  • Für alle anderen Länder:
    • Keine Formatierung erforderlich (keine Kleinbuchstaben, keine Leerzeichen und keine Sonderzeichen)
    • Lassen Sie Postleitzahlerweiterungen weg.
  • Hashing: Keine

Hash-Validierung und Datencodierung

Mit den folgenden Hash-Validierungsskripts können Sie prüfen, ob Ihre Daten richtig formatiert sind.

JavaScript

  /**
   * @fileoverview Provides the hashing algorithm, as well as some valid hashes of
   * sample data for testing.
  */

  async function hash(token) {
    // Removes leading or trailing spaces and converts all characters to lowercase.
    const formattedToken = token.trim().toLowerCase();
    // Hashes the formatted string using the SHA-256 hashing algorithm.
    const hashBuffer = await crypto.subtle.digest(
        'SHA-256', (new TextEncoder()).encode(formattedToken));
    // Converts the hash buffer to a base64-encoded string and returns it.
    const base64Str = btoa(String.fromCharCode(...new Uint8Array(hashBuffer)));
    return base64Str;
  }

  function main() {
    // Expected hash for test@gmail.com:
    // h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
    hash('test@gmail.com').then(result => console.log(result));

    // Expected hash for +18005551212:
    // YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
    hash('+18005551212').then(result => console.log(result));

    // Expected hash for John: ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
    hash('John').then(result => console.log(result));

    // Expected hash for Doe: eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
    hash('Doe').then(result => console.log(result));
  }

  main()

Python

  """Provides the hashing algorithm, as well as some valid hashes of sample data for testing.

  Supports: Python 2, Python 3

  Sample hashes:

    - Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
    - Phone '+18005551212':   YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
    - First name 'John':      ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
    - Last name 'Doe':        eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
  """

  import base64
  import hashlib

  def hash(token):
  # Generates a base64-encoded SHA-256 hash of a normalized input string.
    return base64.b64encode(
        hashlib.sha256(
            token.strip().lower().encode('utf-8')).digest()).decode('utf-8')

  def print_hash(token, expected=None):
  # Computes and displays the hash of a token, with optional validation.
    hashed = hash(token)

    if expected is not None and hashed != expected:
      print(
          'ERROR: Incorrect hash for token "{}". Expected "{}", got "{}"'.format(
              token, expected, hashed))
      return

    print('Hash: "{}"\t(Token: {})'.format(hashed, token))

  def main():
  # Tests the hash function with sample tokens and expected results.
    print_hash(
        'test@gmail.com', expected='h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=')
    print_hash(
        '+18005551212', expected='YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=')
    print_hash('John', expected='ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=')
    print_hash('Doe', expected='eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=')

  if __name__ == '__main__':
    main()

Go

  /*
  Provides the hashing algorithm, as well as some valid hashes of sample data for testing.

  Sample hashes:

    - Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
    - Phone '+18005551212':   YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
    - First name 'John':      ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
    - Last name 'Doe':        eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
  */
  package main

  import (
    "crypto/sha256"
    "encoding/base64"
    "fmt"
    "strings"
  )

  // Hash hashes an email, phone, first name, or last name into the correct format.
  func Hash(token string) string {
    formatted := strings.TrimSpace(strings.ToLower(token))
    hashed := sha256.Sum256([]byte(formatted))
    encoded := base64.StdEncoding.EncodeToString(hashed[:])
    return encoded
  }

  // PrintHash prints the hash for a token.
  func PrintHash(token string) {
    fmt.Printf("Hash: \"%s\"\t(Token: %s)\n", Hash(token), token)

  }

  func main() {
    PrintHash("test@gmail.com")
    PrintHash("+18005551212")
    PrintHash("John")
    PrintHash("Doe")
  }

Java

  package updm.hashing;

  import static java.nio.charset.StandardCharsets.UTF_8;

  import java.security.MessageDigest;
  import java.security.NoSuchAlgorithmException;
  import java.util.Base64;

  /**
  * Example of the hashing algorithm.
  *
  * <p>Sample hashes:
  *
  * <ul>
  *   <li>Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
  *   <li>Phone '+18005551212': YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
  *   <li>First name 'John': ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
  *   <li>Last name 'Doe': eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=
  * </ul>
  */
  public final class HashExample {

  private HashExample() {}

  public static String hash(String token) {
    // Normalizes and hashes the input token using SHA-256 and Base64 encoding.
    String formattedToken = token.toLowerCase().strip();

    byte[] hash;
    try {
      hash = MessageDigest.getInstance("SHA-256").digest(formattedToken.getBytes(UTF_8));
    } catch (NoSuchAlgorithmException e) {
      throw new IllegalStateException("SHA-256 not supported", e);
    }

    return Base64.getEncoder().encodeToString(hash);
  }

  public static void printHash(String token) {
    // Calculates and prints the hash for the given token.
    System.out.printf("Hash: \"%s\"\t(Token: %s)\n", hash(token), token);
  }

  public static void main(String[] args) {
    // Executes hash calculations and prints results for sample tokens.
    printHash("test@gmail.com");
    printHash("+18005551212");
    printHash("John");
    printHash("Doe");
  }
  }

SQL

  /*
  Provides the hashing algorithm, as well as some valid hashes of sample data for testing.

  The following code uses Google Standard SQL and can be run on BigQuery to generate match tables from unhashed data.

  Sample hashes:

    - Email 'test@gmail.com': h5JGBrQTGorO7q6IaFMfu5cSqqB6XTp1aybOD11spnQ=
    - Phone '+18005551212':   YdkRG+0+bZz8G8O1yzWkAmh8TxVGvuBhor1ET73WTEQ=
    - First name 'John':      ltljLzY1ZMwwMlIUCc8iqFLyAy7sCZ7VlnwNAAzsYHo=
    - Last name 'Doe':        eZ75KhGvkY4/t0HfQpNPO1aO0tk6wd908bjUGieTKm8=

  The unhashed input table schema is assumed to be:

  - Column name: UserID, Type: String
  - Column name: Email, Type: String
  - Column name: Phone, Type: String
  - Column name: FirstName, Type: String
  - Column name: LastName, Type: String
  - Column name: PostalCode, Type: String
  - Column name: CountryCode, Type: String
  */

  -- Creates a new table with Base64-encoded SHA-256 hashes of specified columns.
  CREATE TABLE `your_project_name.your_dataset_name.output_hashed_table_name`
  AS
  SELECT
    UserID,
    TO_BASE64(SHA256(LOWER(Email))) AS Email,
    TO_BASE64(SHA256(Phone)) AS Phone,
    TO_BASE64(SHA256(LOWER(FirstName))) AS FirstName,
    TO_BASE64(SHA256(LOWER(LastName))) AS LastName,
    PostalCode,
    CountryCode,
  FROM
    `your_project_name.your_dataset_name.input_unhashed_table_name`;

JOIN-Schlüssel

Einige Kombinationen von von Nutzern bereitgestellten Daten sind besser geeignet als andere. Im Folgenden finden Sie eine Liste der verschiedenen Kombinationen von von Nutzern bereitgestellten Daten, sortiert nach relativer Stärke. Wenn Sie eine Adresse verwenden, müssen Sie Vorname, Nachname, Land und Postleitzahl angeben.

  1. E‑Mail-Adresse, Telefonnummer, Adresse (stärkste)
  2. Telefon, Adresse
  3. E-Mail-Adresse, Adresse
  4. E‑Mail, Telefon
  5. Adresse
  6. Telefon
  7. E-Mail (am schwächsten)

Abgleichstabelle erstellen

  1. Klicken Sie auf add Erstellen > Bericht.
  2. Wählen Sie die Vorlage Match-Table-Generierung in privater Cloud aus. Optional: Sie können Match-Table-Generierung in privater Cloud (mit Hash-Technologie) auswählen, wenn Ihre Daten noch nicht gehasht sind.
  3. Klicken Sie auf Abfrage bearbeiten und ersetzen Sie die Parameternamen durch Ihre Spaltennamen, um ein korrektes Aliasing zu ermöglichen.
  4. Klicken Sie auf Zeitplan festlegen, um festzulegen, wie oft die Zuordnungstabelle aktualisiert werden soll. Bei jeder Ausführung wird die aktuelle Abgleichstabelle überschrieben.

Vorhandene Verbindungen migrieren

Bestehende Verbindungen auf dem Tab Verbindungen werden in eine aktualisierte Version von „Verbindungen“ verschoben, die direkt in Ads Data Hub integriert ist. Aktualisierte Verbindungen lesen Quellen und schreiben Ziele mit dem Dienstkonto, das unter Einstellungen > Details > Dienstkonto angezeigt wird (normalerweise service-<number>@gcp-sa-adsdatahub.iam.gserviceaccount.com), anstelle der alten Data Fusion-, Dataproc- und UPDM-Dienstkonten.

Führen Sie diese Aufgaben bevor Ihre Verbindungen verschoben werden:

  1. Dienstkontoberechtigungen gewähren: Gewähren Sie dem Dienstkonto, das unter Einstellungen > Details > Dienstkonto angezeigt wird (normalerweise service-<number>@gcp-sa-adsdatahub.iam.gserviceaccount.com), die erforderlichen Quell- und Zielrollen (roles/bigquery.dataViewer, roles/storage.objectViewer und roles/bigquery.dataEditor für nicht standardmäßige Ziel-Datasets). Verbindungen mit nicht lesbaren, gelöschten oder geänderten Quellen können möglicherweise trotzdem verschoben werden (insbesondere Cloud Storage-Quellen, die beim Verschieben nicht validiert werden). Ausführungen schlagen jedoch fehl, bis Sie Zugriff gewähren oder die Quelle korrigieren.
  2. Nicht unterstützte Verbindungen konvertieren: Verbindungen mit den folgenden Konfigurationen werden nicht migriert. Konvertieren Sie sie in unterstützte BigQuery- oder Cloud Storage-Verbindungen:
    • Andere Datenquellen (Amazon S3, Snowflake, MySQL, PostgreSQL, Amazon Redshift, sFTP oder Salesforce): Stellen Sie die Daten zuerst in BigQuery oder Cloud Storage bereit und erstellen Sie dann eine BigQuery- oder Cloud Storage-Verbindung.
    • Nicht unterstützte Feldzuordnungen oder Datentypen: Aktualisieren Sie die Verbindung oder erstellen Sie sie neu, um die Anforderungen an Felder und Datentypen zu erfüllen.
    • Cloud Storage-Platzhalterpfade (* oder ?): Ersetzen Sie den Platzhalter-URI durch einen einzelnen Datei-URI oder laden Sie die Dateien zuerst in BigQuery.
    • Doppelte Verbindungsnamen: Benennen Sie doppelte Verbindungen um oder löschen Sie sie, damit jede Verbindung im Konto einen eindeutigen Namen hat.
  3. Nicht verwendete Verbindungen löschen: Löschen Sie veraltete Verbindungen, die Sie nicht mehr benötigen.

Abgeglichene Daten abfragen

Match-Tables abfragen

Wenn die Match-Tables genügend Daten enthalten, um die Datenschutzprüfungen zu bestehen, können Sie Abfragen dafür ausführen.

Die ursprüngliche Tabelle für selbst erhobene Daten wird durch my_data dargestellt. Dazu gehören sowohl personenidentifizierbare Informationen (PII) als auch Nicht-PII-Daten. Wenn Sie die Originaltabelle verwenden, können Sie Ihre Berichte mit mehr Informationen verbessern, da sie im Vergleich zu einer Match-Table alle relevanten selbst erhobenen Daten enthält.

Für jede Tabelle im Ads Data Hub-Schema, die ein user_id-Feld enthält, gibt es eine entsprechende Match-Table. Beispielsweise wird für die Tabelle adh.google_ads_impressions in Ads Data Hub auch eine Match-Table mit dem Namen adh.google_ads_impressions_updm erstellt, die Ihre Nutzer-IDs enthält. Für richtlinienkonform isolierte Netzwerktabellen werden separate Match-Tables erstellt. Beispielsweise wird für die Tabelle adh.google_ads_impressions_policy_isolated_network in Ads Data Hub auch eine Match-Table mit dem Namen adh.google_ads_impressions_policy_isolated_network_updm erstellt, die Ihre Nutzer-IDs enthält.

Diese Tabellen enthalten eine Teilmenge der in den ursprünglichen Tabellen verfügbaren Nutzer, bei denen es eine Übereinstimmung mit der user_id gibt. Wenn die ursprüngliche Tabelle beispielsweise Daten für Nutzer A und Nutzer B enthält, aber nur Nutzer A abgeglichen werden kann, ist Nutzer B nicht in der Match-Table enthalten.

Die Match-Tables enthalten die zusätzliche Spalte customer_data_user_id, in der die Nutzer-ID als BYTES gespeichert wird.

Beim Erstellen von Abfragen ist es wichtig, den Feldtyp zu berücksichtigen. Für SQL-Vergleichsoperatoren ist es erforderlich, dass die zu vergleichenden Literale denselben Typ haben. Je nachdem, wie die user_id in der Tabelle mit selbst erhobenen Daten gespeichert wird, müssen Sie die Werte in der Tabelle möglicherweise codieren, bevor die Daten abgeglichen werden. Für erfolgreiche Übereinstimmungen müssen Sie den Join-Schlüssel in BYTES umwandeln:

JOIN ON
  adh.google_ads_impressions_updm.customer_data_user_id = CAST(my_data.user_id AS BYTES)

Außerdem wird bei Stringvergleichen in SQL die Groß- und Kleinschreibung berücksichtigt. Eventuell müssen Sie also Strings auf beiden Seiten des Vergleichs entsprechend codieren, damit sie richtig verglichen werden können.

Beispielabfragen

Übereinstimmende Nutzer zählen

Mit dieser Abfrage wird die Anzahl der übereinstimmenden Nutzer in der Tabelle mit den Google Ads-Impressionen gezählt.

/* Count matched users in Google Ads impressions table */

SELECT COUNT(DISTINCT user_id)
FROM adh.google_ads_impressions_updm

Abgleichsrate berechnen

Nicht alle Nutzer kommen für den Abgleich infrage. Beispielsweise werden abgemeldete Nutzer, Kinder und Nutzer, die keine Einwilligung erteilt haben, nicht über UPDM abgeglichen. Mit dem Feld is_updm_eligible können Sie genauere Abgleichsraten für von Nutzern bereitgestellte Daten berechnen. Das Feld is_updm_eligible ist seit dem 1. Oktober 2024 verfügbar. Sie können dieses Feld nicht verwenden, um Abgleichsraten vor diesem Datum zu berechnen.

/* Calculate the UPDM match rate */

CREATE TEMP TABLE total_events OPTIONS(privacy_checked_export=TRUE) AS
SELECT
  customer_id,
  COUNT(*) AS n
FROM adh.google_ads_impressions
WHERE is_updm_eligible
GROUP BY 1;

CREATE TEMP TABLE matched_events OPTIONS(privacy_checked_export=TRUE) AS
SELECT
  customer_id,
  COUNT(*) AS n
FROM adh.google_ads_impressions_updm
GROUP BY 1;

SELECT
  customer_id,
  SAFE_DIVIDE(matched_events.n, total_events.n) AS match_rate
FROM total_events
LEFT JOIN matched_events
  USING (customer_id)

Selbst erhobene Daten und Google Ads-Daten zusammenführen

Diese Abfrage veranschaulicht, wie Sie selbst erhobene Daten mit Google Ads-Daten verknüpfen:

/* Join first-party data with Google Ads data. The customer_data_user_id field
contains your ID as BYTES. You need to cast your join key into BYTES for
successful matches. */

SELECT
  inventory_type,
  COUNT(*) AS impressions
FROM
  adh.yt_reserve_impressions_updm AS google_data_imp
LEFT JOIN
  `my_data`
ON
  google_data_imp.customer_data_user_id = CAST(my_data.user_id AS BYTES)
GROUP BY
  inventory_type

FAQs zu UPDM

Eine Liste mit häufig gestellten Fragen zu UPDM finden Sie unter Häufig gestellte Fragen zu UPDM.