ML-fähige Daten für die Personalisierung vorbereiten

Diese Anleitung enthält eine Reihe von Dataflow-Pipelines, die Sie in einer bestimmten Reihenfolge ausführen können, um Datasets für maschinelles Lernen (ML) aus Daten zu erstellen, die in Geschäftstools wie Google Analytics 360 (GA360) oder Customer-Relationship-Management-Systemen (CRM) gespeichert sind.

Unternehmen sind sich zunehmend des Wertes anspruchsvoller ML-Modelle bewusst. Mithilfe von Modellen für Neigung, Customer Lifetime Value, Antwort/Uplift und "Next-Best-Action" sowie mit Recommender-Systemen können Unternehmen durch Personalisierung Kunden gewinnen und binden.

Für die Erstellung solcher Modelle sind jedoch oft zusätzliche Schritte erforderlich, wenn die Daten in Tools wie GA360 oder CRM-Systemen gespeichert sind. Diese Tools können Unternehmen helfen, ihre Daten zu organisieren und zu transformieren, um Geschäftsziele auf aggregierter Ebene zu erreichen. Für die ML-Modellierung müssen die Daten aber in der Regel umgearbeitet werden.

Das in dieser Anleitung beschriebene System kann Sie bei Folgendem unterstützen:

  • Daten in ein generisches Format für die ML-Verarbeitung strukturieren
  • Daten analysieren, um sicherzustellen, dass sie für die ML-Verarbeitung bereit sind
  • Ein Dataset erstellen, mit dem Sie ML-Modelle für die Binärklassifizierung wie Neigungsmodelle, Antwort-/Uplift-Modelle und Recommender-Systeme erstellen können

In dieser Anleitung richten Sie Dataflow so ein, dass ML-fähige Daten-Snapshots erstellt werden. Die Snapshots erfolgen jeweils an einem bestimmten Datum, das in festgelegten Intervallen verschoben wird. Jeder Daten-Snapshot besteht aus folgenden Elementen:

  • ML-fähige Trainingsfunktionen, die widerspiegeln, was in der Vergangenheit (relativ zum Snapshot-Datum) über ein vordefiniertes Verlaufsfenster (Lookback-Window) passiert ist
  • Ein ML-fähiges binäres Trainingslabel, das widerspiegelt, was in der Zukunft (relativ zum Snapshot-Datum) über ein vordefiniertes Vorhersagefenster passieren könnte

Diese Anleitung richtet sich an Data Engineers und Data Scientists, die Standardkenntnisse über die Ausführung von Dataflow-Pipelines und grundlegende Kenntnisse über ML-Prinzipien haben.

Architektur

Das folgende Diagramm veranschaulicht die Architektur, die in dieser Anleitung beschrieben wird.

Diagramm: Architektur für Pipelines, die ML-Datasets ausgeben

Dieser Prozess umfasst die folgenden Schritte:

  • Schritt 1: GA360- oder CRM-Daten in Cloud Storage einlesen
  • Schritt 2 (optional): Dataset in BigQuery untersuchen
  • Schritt 3: Dataset in Cloud Storage anzeigen
  • Schritt 4: Features generieren, um ein ML-fähiges Dataset in BigQuery auszugeben

Diese Schritte erzeugen ein ML-fähiges Dataset, mit dem Sie ein ML-Modell mit Tools wie AutoML Tables, TensorFlow oder einem bevorzugten ML-Modellierungstool trainieren können.

Ziele

Kosten

Für diese Anleitung sind die Kosten für die Verwendung des Beispiel-Datasets von Google Analytics 360 minimal. Die Kosten für die Implementierung dieser Lösung in der Produktion hängen von der Dataset-Größe ab. Die Pipeline verwendet standardmäßige Dataflow-VM-Maschinen, um die Pipeline für diese Anleitung so effizient wie möglich zu halten. Weitere Informationen finden Sie unter "Dataflow-Preise".

Vorbereitung

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  4. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  5. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  6. Aktivieren Sie die Dataflow API und die Cloud Storage API.
  7. APIs aktivieren

Umgebung vorbereiten

In dieser Anleitung führen Sie Befehle in Cloud Shell aus.

  1. Öffnen Sie Cloud Shell in der Cloud Console.

    Zu Cloud Shell

    Cloud Shell bietet Zugriff auf die Befehlszeile in Google Cloud und umfasst das Cloud SDK und andere Tools, die Sie für die Entwicklung in Google Cloud brauchen. Die Initialisierung von Cloud Shell kann mehrere Minuten dauern.

  2. Standardvariablen festlegen:

    export PROJECT_ID=$(gcloud config get-value project)
    export BUCKET_NAME=${PROJECT_ID}-mldwp
    export REGION=YOUR_REGION
    export ZONE=YOUR_ZONE
    export DATASET=mldwp_dataset
    

    Dabei gilt:

    • YOUR_REGION ist eine Region Ihrer Wahl, z. B. us-west1.
    • YOUR_ZONE ist eine Zone Ihrer Wahl, z. B. us-west1-b.

      Weitere Informationen finden Sie unter Geografie, Regionen und Zonen.

  3. Erstellen Sie einen funktionierenden Bucket:

    gsutil mb -p ${PROJECT_ID} -l ${REGION} gs://${BUCKET_NAME}
    
  4. Erstellen Sie das relevante BigQuery-Dataset:

    bq mk ${DATASET}
    
  5. Klonen Sie das Open-Source-Projekt "ML Data Windowing Pipeline":

    git clone https://github.com/GoogleCloudPlatform/cloud-for-marketing
    
  6. Rufen Sie "cloud-for-marketing/tree/master/marketing-analytics/predicting/ml-data-windowing-pipeline" auf.

Apache Maven installieren

  1. Laden Sie die Version 9 oder höher des Java Development Kits (JDK) herunter und installieren Sie sie. Prüfen Sie, ob die Umgebungsvariable JAVA_HOME festgelegt ist und auf Ihre JDK-Installation verweist.
  2. Laden Sie das Cloud SDK herunter und installieren Sie es.
  3. Laden Sie Apache Maven herunter, installieren Sie es und folgen Sie der Installationsanleitung von Maven für Ihr Betriebssystem.

Schritt 1: AVRO-Dateien aus BigQuery-Tabellen erstellen

Im ML Data Windowing-Pipelineprojekt ist die UserSessionPipeline.java-Pipeline so optimiert, dass sie Daten direkt aus einer Google Analytics 360 BigQuery-Ausgabetabelle zwischen einer Reihe von angegebenen Daten liest. In diesem Schritt führen Sie die Pipeline UserSessionPipeline.java aus, um die GA360-Daten in AVRO-Dateien zu verarbeiten, die Sie dann in Schritt 2 (optional) und Schritt 3 verwenden.

Wenn Sie die Pipeline UserSessionPipeline.java in Cloud Shell aufrufen, verwenden Sie die Argumente in der folgenden Tabelle.

Flag Beschreibung Beispielargument

--inputBigQuerySQL

Die SQL-Abfrage, mit der Daten aus der Google Analytics-Tabelle in BigQuery ausgewählt werden. Sorgen Sie dafür, dass die Pipeline auf das Dataset und die Tabellen zugreifen kann.

SELECT * FROM bigquery-public-data.google_analytics_sample.ga_sessions_*

--predictionFactName

Der Name der BigQuery-Spalte, die den Wert (Label des ML-Datasets) enthält, den Sie vorhersagen möchten.

hits.eventInfo.eventAction

--predictionFactValues

Der Wert in der BigQuery-Spalte, der ein positives Label für die Vorhersage darstellt. Sie können das positive Label mit mehreren Werten, die durch Kommas getrennt sind, definieren.

Add to Cart

--outputSessionsAvroPrefix

Der Speicherort in Cloud Storage, an den die AVRO-Dateien ausgegeben werden sollen. Sie haben den übergeordneten Bucket unter Umgebung vorbereiten weiter oben in dieser Anleitung erstellt.

gs://${BUCKET_NAME}/usersession-output/

  1. Führen Sie in Cloud Shell die Pipeline UserSessionPipeline.java in Dataflow aus:

    export RUN_ID=`date -I`/`date +%s`
    
    mvn -Pdataflow-runner compile exec:java \
    -D_MAIN_CLASS=UserSessionPipeline \
    -Dexec.args="--runner=DataflowRunner \
        --project='${PROJECT_ID}' \
        --inputBigQuerySQL='SELECT * FROM \`bigquery-public-data.google_analytics_sample.ga_sessions_*\`' \
        --predictionFactName='hits.eventInfo.eventAction' \
        --predictionFactValues='Add to Cart' \
        --outputSessionsAvroPrefix='gs://${BUCKET_NAME}/usersession-output/${RUN_ID}'"
    

    Dieser Befehl erstellt einen eindeutigen Ordner RUN_ID für die Ausgabe, um zu verhindern, dass die Pipeline Dateien aus früheren Ausführungen überschreibt.

    Die Ausgabe sieht etwa so aus:

    [INFO] --------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] --------------------------------------------------------------------
    [INFO] Total time:   19.760 s
    [INFO] Finished at:  2020-02-19T10:50:57+11:00
    [INFO] --------------------------------------------------------------------
    
  2. Prüfen Sie, ob Ihr Job Staging-Dateien im Cloud Storage-Ordner gs://${BUCKET_NAME}/usersession-output/ erstellt hat:

    gsutil ls gs://${BUCKET_NAME}/usersession-output/${RUN_ID}*
    

    Die Ausgabe sieht etwa so aus:

    gs://mldatawindowingpipeline/usersession-output/
    gs://mldatawindowingpipeline/usersession-output/2020-10-27/1603838232-00000-of-00025.avro
    gs://mldatawindowingpipeline/usersession-output/2020-10-27/1603838232-00001-of-00025.avro
    gs://mldatawindowingpipeline/usersession-output/2020-10-27/1603838232-00002-of-00025.avro
    gs://mldatawindowingpipeline/usersession-output/2020-10-27/1603838232-00003-of-00025.avro
    gs://mldatawindowingpipeline/usersession-output/2020-10-27/1603838232-00004-of-00025.avro
    gs://mldatawindowingpipeline/usersession-output/2020-10-27/1603838232-00005-of-00025.avro
    gs://mldatawindowingpipeline/usersession-output/2020-10-27/1603838232-00006-of-00025.avro
    

Schritt 2 (optional): Daten zur explorativen Datenanalyse in BigQuery speichern

Obwohl diese nächste Pipeline (DataVisualizationPipeline.java) optional ist, gibt sie die Daten aus, damit Sie sie vor der weiteren Verarbeitung ansehen können. Mit den Daten aus Schritt 1 generiert diese Pipeline die folgenden BigQuery-Tabellen (falls sie bereits vorhanden sind, werden sie aktualisiert). Mit diesen Tabellen können Sie Ihre Daten grafisch im Zeitverlauf darstellen und auf Konsistenz prüfen.

  • Eine Fakten-Tabelle. Diese Tabelle enthält eine Liste von Variablen und Werten für jede Aktivitätszeit und für jeden Nutzer (basierend auf den Originaldaten).
  • Eine Instanztabelle. Diese Tabelle enthält ausgewählte ML-Instanzen für jedes Snapshot-Datum (auch als Datum des Inkrafttretens bezeichnet). Für jedes Snapshot-Datum gibt die Pipeline Daten zu allen vorhandenen Nutzern aus, die vor diesem Datum eine Aktion ausgeführt haben, zusammen mit den folgenden Informationen:
    • Ein Label innerhalb eines vordefinierten Vorhersagefensters (Spalte hasPositiveLabel)
    • Anzahl der Tage zwischen der ersten verfügbaren Aktivität und dem Snapshot-Datum (Spalte daysSinceFirstActivity)
    • Anzahl der Tage seit der letzten verfügbaren Aktivität und des Snapshot-Datums (Spalte daysSinceLatestActivity)

Die Kombination aus Nutzer und Snapshot-Datum definiert einen Instanz-Snapshot. Das Datum der Snapshots wird wie im folgenden Diagramm dargestellt um eine vordefinierte Zeit verschoben.

Diagramm: Snapshot-Instanz, die die Lookback- und Vorhersagefenster für ein bestimmtes Datum anzeigt

snapshotStartDate und snapshotEndDate definieren das erste und das letzte Snapshot-Datum, das extrahiert werden soll. maximumLookaheadTime und minimumLookaheadTime definieren die Vorhersage in Bezug auf das aktuelle Snapshot-Datum. In diesem Schritt geben Sie Argumente für diese Parameter als Eingaben an. Diese Argumente werden in der folgenden Tabelle näher erläutert.

Wenn Sie die Pipeline DataVisualizationPipeline.java in Cloud Shell aufrufen, verwenden Sie die Argumente in der folgenden Tabelle.

Flag Beschreibung Beispielargument
--inputAvroSessionsLocation Der Speicherort der AVRO-Dateien aus Schritt 1. gs://${BUCKET_NAME}/usersession-output/
--snapshotStartDate Erstes Snapshot-Datum im dd/mm/yyyy-Format.

31/01/2017

--snapshotEndDate

Datum des letzten Snapshots im dd/mm/yyyy-Format

31/01/2018

--slideTimeInSeconds

Das Zeitintervall (in Sekunden), um das das Snapshot-Datum verschoben wird. 604800 (für 7 Tage)

--minimumLookaheadTimeInSeconds

Die Zeit (in Sekunden) für das Vorhersagefenster, das mit dem aktuellen Snapshot-Datum beginnt. 86400 (für ein Vorhersagefenster, das 86.400 Sekunden ab dem aktuellen Snapshot-Datum beginnt, also am nächsten Tag)

--maximumLookaheadTimeInSeconds

Die Zeit (in Sekunden) für das Vorhersagefenster, das mit dem aktuellen Snapshot-Datum endet. Die Länge des Vorhersagefensters ist die Differenz zwischen maximumLookaheadTimeInSeconds und minimumLookaheadTimeInSeconds. 1209600 (für ein Vorhersagefenster von 14 Tagen)

--stopOnFirstPositiveLabel

Sobald ein Nutzer in den nachfolgenden Snapshots ein positives Label hat, müssen Sie ihn nicht mehr berücksichtigen.

true

--outputBigQueryFactsTable

Der Speicherort der BigQuery-Faktentabelle. Beachten Sie das Format des Arguments:

${PROJECT_ID}.${DATASET}.TABLE_ID

Dabei gilt:
  • ${DATASET} ist die ID Ihres BigQuery-Datasets.
  • TABLE_ID ist die ID Ihrer BigQuery-Faktentabelle.

${PROJECT_ID}.${DATASET}.ga_facts_table

--outputBigQueryUserActivityTable

Der Speicherort Ihrer BigQuery-Instanztabelle. Beachten Sie das Format des Arguments:

${PROJECT_ID}.${DATASET}.INSTANCE_ID

Dabei gilt:
  • ${DATASET} ist die ID Ihres BigQuery-Datasets.
  • INSTANCE_ID ist die ID Ihrer BigQuery-Instanztabelle.

${PROJECT_ID}.${DATASET}.ga_instance_table

  1. Führen Sie in Cloud Shell die Pipeline DataVisualizationPipeline.java in Dataflow aus:

    mvn -Pdataflow-runner compile exec:java \
    -D_MAIN_CLASS=DataVisualizationPipeline \
    -Dexec.args="--runner=DataflowRunner \
        --project=${PROJECT_ID} \
        --inputAvroSessionsLocation='gs://${BUCKET_NAME}/usersession-output/${RUN_ID}*' \
        --snapshotStartDate='31/01/2017' \
        --snapshotEndDate='31/01/2018' \
        --slideTimeInSeconds='604800' \
        --minimumLookaheadTimeInSeconds='86400' \
        --maximumLookaheadTimeInSeconds='1209600' \
        --stopOnFirstPositiveLabel='true' \
        --outputBigQueryFactsTable='${PROJECT_ID}:${DATASET}.ga_facts_table' \
        --outputBigQueryUserActivityTable='${PROJECT_ID}:${DATASET}.ga_instance_table'"
    
  2. Prüfen Sie, ob Dataflow die beiden BigQuery-Tabellen erstellt hat:

    bq ls ${PROJECT_ID}:${DATASET}
    

    Die Ausgabe sieht etwa so aus:

          tableID         Type     Labels      Time Partitioning      Clustered Fields
    ------------------- -------- ----------  -------------------  --------------------
     ga_facts_table      TABLE
     ga_instance_table   TABLE
    

Nachdem Dataflow die Tabellen erstellt hat, können Sie die Konsistenz und Integrität Ihrer Daten analysieren. Mit den folgenden Analysen können Sie nach zufälligen Datenspitzen im Zeitverlauf oder nach inkonsistenten Datentrends und Datenpunkten suchen:

  • Analysieren Sie die Größe und die Verteilung der Vorhersagelabels von Instanzen im Zeitverlauf.
  • Analysieren Sie daysSinceFirstActivity- und daysSinceLastActivity-Daten, um einen aussagekräftigen Lookback-Window-Zeitraum zu verstehen und zu definieren.
  • Filtern Sie die Instanzen auf der Grundlage von Vorhersage-Label-Ungleichgewicht oder Label-Werten oder nach daysSinceLastActivity, um aktive Instanzen für die Modellerstellung auszuwählen.

Schritt 3: Datenfenster erstellen

Mit den AVRO-Dateien aus Schritt 1 können Sie mit der Pipeline WindowingPipeline.java Snapshots von Snapshot-Daten erstellen, die in festgelegten Intervallen verschoben werden. Mit dieser Pipeline werden die Daten basierend auf bestimmten Lookback- und Vorhersagefenstern, die sich entlang der Zeitachse der Snapshot-Daten verschieben, wie im folgenden Diagramm dargestellt.

Diagramm: Das Datum der Snapshots wird in festgelegten Intervallen verschoben

Die im Diagramm verwendeten Begriffe sind in der folgenden Argumenttabelle für diesen Schritt definiert. Das Dataset kann jetzt in Features in Schritt 4 zusammengefasst werden.

Die Pipeline WindowingPipeline.java gibt außerdem für jede GA-Sitzung anstelle eines Snapshot-Datums gefensterte Daten aus. Diese Daten können nützlich sein, wenn Sie Features auf GA-Sitzungsebene generieren möchten.

Wenn Sie die Pipeline WindowingPipeline.java in Cloud Shell aufrufen, verwenden Sie die Argumente in der folgenden Tabelle.

Flag Beschreibung Beispielargument

--inputAvroSessionsLocation

Der Speicherort der AVRO-Dateien aus Schritt 1.

gs://${BUCKET_NAME}/usersession-output/

--snapshotStartDate

Erstes Snapshot-Datum im dd/mm/yyyy-Format.

31/01/2017

--snapshotEndDate

Datum des letzten Snapshots im dd/mm/yyyy-Format

31/01/2018

--slideTimeInSeconds

Das Zeitintervall (in Sekunden), um das das Snapshot-Datum verschoben wird. 604800 (für 7 Tage)

--minimumLookaheadTimeInSeconds

Die Zeit (in Sekunden) für das Vorhersagefenster, das mit dem aktuellen Snapshot-Datum beginnt. 86400 (für ein Vorhersagefenster, das 86.400 Sekunden ab dem aktuellen Snapshot-Datum beginnt, also am nächsten Tag)

--maximumLookaheadTimeInSeconds

Die Zeit (in Sekunden) für das Vorhersagefenster, das mit dem aktuellen Snapshot-Datum endet. Die Länge des Vorhersagefensters ist die Differenz zwischen maximumLookaheadTimeInSeconds und minimumLookaheadTimeInSeconds. 1209600 (für ein Vorhersagefenster von 14 Tagen)

--stopOnFirstPositiveLabel

Sobald ein Nutzer in den nachfolgenden Snapshots ein positives Label hat, müssen Sie ihn nicht mehr berücksichtigen.

true

--lookbackGapInSeconds

Lücke (in Sekunden), die zwischen dem aktuellen Snapshot-Datum und dem Lookback-Window hinzugefügt werden soll. Diese Einstellung wird normalerweise auf einen Tag festgelegt, um ein echtes Scoring-Szenario wie Datenverzögerungen zu simulieren. 86400 (für 1 Tag)

--windowTimeInSeconds

Die Größe (in Sekunden) des Lookback-Windows. 7776000 (für 90 Tage)

--outputSlidingWindowAvroPrefix

Der Speicherort in Cloud Storage für gefensterte Daten in Datumsintervallen, die auf dem angegebenen Gleitbetrag basieren, an den die AVRO-Dateien ausgegeben werden sollen.

gs://${BUCKET_NAME}/windowing-output/

--outputSessionBasedWindowAvroPrefix

Der Speicherort in Cloud Storage für gefensterte Daten in Zeitintervallen basierend auf Google Analytics-Sitzungen, an den die AVRO-Dateien ausgegeben werden sollen. In diesen Daten wird für jede Sitzung ein Fenster ausgegeben.

gs://${BUCKET_NAME}/windowing-session-output/

  1. Führen Sie in Cloud Shell die Pipeline WindowingPipeline.java in Dataflow aus:

    mvn -Pdataflow-runner compile exec:java \
    -D_MAIN_CLASS=SlidingWindowPipeline \
    -Dexec.args="--runner=DataflowRunner \
        --project=${PROJECT_ID} \
        --inputAvroSessionsLocation='gs://${BUCKET_NAME}/usersession-output/${RUN_ID}*' \
        --snapshotStartDate='31/01/2017' \
        --snapshotEndDate='31/01/2018' \
        --slideTimeInSeconds='604800' \
        --minimumLookaheadTimeInSeconds='86400' \
        --maximumLookaheadTimeInSeconds='1209600' \
        --stopOnFirstPositiveLabel='true' \
        --lookbackGapInSeconds='86400' \
        --windowTimeInSeconds='7776000' \
        --outputSlidingWindowAvroPrefix='gs://${BUCKET_NAME}/windowing-output/${RUN_ID}'"
    
  2. Prüfen Sie, ob Ihr Job Staging-Dateien im Cloud Storage-Ordner gs://${BUCKET_NAME}/usersession-output/ erstellt hat:

    gsutil ls gs://${BUCKET_NAME}/windowing-output/${RUN_ID}*
    

    Die Ausgabe sieht etwa so aus:

    gs://mldatawindowingpipeline/windowing-session-output/
    gs://mldatawindowingpipeline/windowing-session-output/-00000-of-00052.avro
    gs://mldatawindowingpipeline/windowing-session-output/-00001-of-00052.avro
    gs://mldatawindowingpipeline/windowing-session-output/-00002-of-00052.avro
    gs://mldatawindowingpipeline/windowing-session-output/-00003-of-00052.avro
    gs://mldatawindowingpipeline/windowing-session-output/-00004-of-00052.avro
    

Schritt 4: Zeitfenstergesteuerte Daten aggregieren, um Funktionen zu erstellen

Die GenerateFeaturesPipeline.java-Pipeline gibt unter Verwendung der AVRO-Dateien aus Schritt 3 eine BigQuery-Tabelle aus, die Funktionen für alle Snapshots von Nutzern enthält und für die ML-Verarbeitung bereit ist. Die Funktionen basieren auf verschiedenen Arten von aggregierten Ereignissen, die in den zuvor erstellten Lookback-Windows aufgetreten sind.

Sie können zwei Arten von Features erstellen:

  • Numerisch Diese Features haben eine Bedeutung als Messwert, z. B. Summen, Anzahlen und Durchschnittswerte.
  • Kategorial Diese Features stellen Merkmale wie "am häufigsten" und "neueste" dar.

Die GenerateFeaturesPipeline.java-Pipeline erfordert unabhängig davon, ob Sie numerische oder kategoriale Features erstellen, die in der folgenden Tabelle aufgeführten Argumente. Wenn Sie die Pipeline in Cloud Shell aufrufen, übergeben Sie diese Argumente.

Flag Beschreibung Beispielargument

--windowedAvroLocation

Der Speicherort der AVRO-Dateien des gleitenden oder Sitzungsfensters aus Schritt 3.

gs://${BUCKET_NAME}/windowing-output/

--featureDestinationTable

Der Speicherort der BigQuery-Features-Tabelle.

'${PROJECT_ID}':${DATASET}.ga_features_table

--trainMode

Legen Sie true fest, wenn Sie predictionLabel in die Ausgabe aufnehmen möchten.

true

--showEffectiveDate

Legen Sie true fest, um das Datum des Inkrafttretens (Snapshot-Datum) in die Ausgabe aufzunehmen.

true

--showStartTime

Legen Sie true fest, wenn Sie die Startzeit für die Berücksichtigung von Daten in die Ausgabe aufnehmen möchten.

true

--showEndTime

Legen Sie true fest, wenn Sie die Endzeit für die Berücksichtigung von Daten in die Ausgabe einschließen möchten.

true

--showEffectiveDateWeekOfYear

Legen Sie true fest, um die Woche des Jahres des Gültigkeitsdatums (Snapshot-Datum) in die Ausgabe aufzunehmen.

true

--showEffectiveDateMonthOfYear

Legen Sie true fest, um den Monat des Jahres des Gültigkeitsdatums (Snapshot-Datum) in die Ausgabe aufzunehmen.

true

--showUserTenure

Legen Sie true fest, wenn Sie userTenure (daysSinceFirstActivity) in die Ausgabe aufnehmen möchten.

true

Zum Erstellen numerischer oder kategorialer Features benötigt die GenerateFeaturesPipeline.java-Pipeline andere Argumente.

Argumente für numerische Features

Zum Erstellen numerischer Features benötigt die GenerateFeaturesPipeline.java-Pipeline auch die in der folgenden Tabelle aufgeführten Argumente.

Flag Beschreibung Beispielargument

--sumValueFromVariables

Dieses Feature berechnet die Summe aller numerischen Werte einer bestimmten Variablen innerhalb des Lookback-Windows. Die Eingabe erwartet mindestens ein Element oder eine durch Kommas getrennte Liste von zwei oder mehr Elementen.

totals.hits, totals.pageviews, totals.timeOnSite

--averageByTenureValueFromVariables

Dieses Feature berechnet den täglichen Durchschnitt aller numerischen Werte einer bestimmten Variablen innerhalb des Lookback-Windows (oder ihrer Dauer, wenn sie kleiner als die Größe des Lookback-Windows ist). Die Eingabe erwartet mindestens ein Element oder eine durch Kommas getrennte Liste von zwei oder mehr Elementen.

totals.hits, totals.pageviews, totals.timeOnSite

--averageValueFromVariables

Dieses Feature berechnet den Durchschnitt der Werte einer bestimmten Variablen im Lookback-Window. Die Eingabe erwartet mindestens ein Element oder eine durch Kommas getrennte Liste von zwei oder mehr Elementen.

totals.hits, totals.pageviews, totals.timeOnSite

Argumente für kategoriale Features

Zum Erstellen von kategorialen Features benötigt die GenerateFeaturesPipeline.java-Pipeline die in der folgenden Tabelle aufgeführten Argumente.

Flag Beschreibung Beispielargument

--countValueFromVariables

Dieses Feature zählt die Anzahl der Vorkommen eines Wertes im Lookback-Window. Die Eingabe erwartet eine durch Kommas getrennte Liste von Spaltennamen und eine Liste von Zählwerten. Wenn der Wert nicht in der Liste der gesendeten Werte enthalten ist, gilt der Standardwert [Others].

channelGrouping:[Organic Search,Social,Direct,Referral,Paid Search,Affiliates,Others]:[Others],trafficSource.source:[direct,yahoo,google,Others]:[Others]

--mostFreqValueFromVariables

Dieses Feature berechnet den häufigsten Wert, der im Lookback-Window aktiv ist. Die Eingabe erwartet eine durch Kommas getrennte Liste von Spaltennamen und eine Liste von Werten, anhand derer die häufigsten Werte gefunden werden. Wenn der Wert nicht in der Liste der gesendeten Werte enthalten ist, gilt der Standardwert [Others].

channelGrouping:[Organic Search,Social,Direct,Referral,Paid Search,Affiliates,Others]:[Others],trafficSource.source:[direct,yahoo,google,Others]:[Others]

--proportionsValueFromVariables

Dieses Feature berechnet den Anteil einer Gruppe von Werten, die im Lookback-Window aktiv sind. Die Eingabe erwartet eine durch Kommas getrennte Liste von Spaltennamen und eine Liste von Werten, aus denen die Verhältnisse ermittelt werden. Wenn der Wert nicht in der Liste der gesendeten Werte enthalten ist, gilt der Standardwert [Others].

channelGrouping:[Organic Search,Social,Direct,Referral,Paid Search,Affiliates,Others]:[Others],trafficSource.source:[direct,yahoo,google,Others]:[Others]

--recentValueFromVariables

Dieses Feature extrahiert den zuletzt im Lookback-Window verwendeten Wert. Die Eingabe erwartet eine durch Kommas getrennte Liste von Spaltennamen und eine Liste von Werten. Wenn der Wert nicht in der Liste der gesendeten Werte enthalten ist, gilt der Standardwert [Others].

channelGrouping:[Organic Search,Social,Direct,Referral,Paid Search,Affiliates,Others]:[Others],trafficSource.source:[direct,yahoo,google,Others]:[Others]

  1. Führen Sie in Cloud Shell die Pipeline GenerateFeaturesPipeline.java in Dataflow aus:

    mvn -Pdataflow-runner compile exec:java \
    -D_MAIN_CLASS=GenerateFeaturesPipeline \
    -Dexec.args="--runner=DataflowRunner \
        --project='${PROJECT_ID}' \
        --windowedAvroLocation='gs://${BUCKET_NAME}/windowing-output/${RUN_ID}*.avro' \
        --featureDestinationTable='${PROJECT_ID}:${DATASET}.ga_features_table' \
        --recentValueFromVariables='' \
        --averageByTenureValueFromVariables='' \
        --sumValueFromVariables='totals.hits,totals.pageviews,totals.timeOnSite' \
        --countValueFromVariables='' \
        --proportionsValueFromVariables='channelGrouping:[Organic Search,Social,Direct,Referral,Paid Search,Affiliates,Others]:[Others],trafficSource.source:[direct,yahoo,google,Others]:[Others]' \
        --averageValueFromVariables='' \
        --mostFreqValueFromVariables=''"
    
  2. Rufen Sie in der Cloud Console die Dataflow-Seite auf.

    Zur Seite "Dataflow"

  3. Prüfen Sie, ob der Jobstatus zuerst Running und dann Succeeded lautet.

    Der Jobstatus wird als erfolgreich angezeigt.

  4. Rufen Sie in der Cloud Console die BigQuery-Seite auf.

    Zur Seite „BigQuery“

  5. Prüfen Sie, ob ga_features_table aufgelistet ist.

    Auflistungen in der BigQuery-Featurestabelle.

Bereinigen

Wenn Sie Kosten für Ihr Google Cloud-Konto für die in dieser Anleitung verwendeten Ressourcen vermeiden möchten, können Sie das Google Cloud-Projekt, das Sie für diese Anleitung erstellt haben, oder die mit dieser Anleitung verknüpften Ressourcen löschen.

Google Cloud-Projekt löschen

Am einfachsten vermeiden Sie weitere Kosten, indem Sie das für die Anleitung erstellte Projekt löschen.

  1. Wechseln Sie in der Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Ressourcen löschen

Wenn Sie das in dieser Anleitung verwendete Google Cloud-Projekt beibehalten möchten, löschen Sie die einzelnen Ressourcen.

Cloud Storage-Ressourcen löschen

  1. Rufen Sie in der Cloud Console die Seite "Storage" auf.

    Zur Cloud Storage-Seite

  2. Klicken Sie auf das Kästchen neben dem Bucket, den Sie löschen möchten.

  3. Klicken Sie auf Löschen.

BigQuery-Ressourcen löschen

  1. Rufen Sie in der Cloud Console die BigQuery-Seite auf.

    Zur Seite „BigQuery“

  2. Wählen Sie die Tabellen aus, die Sie löschen möchten.

  3. Klicken Sie auf Löschen.

Nächste Schritte