Skip to content

Apache Spark (PySpark) Transformation

Die Apache Spark (PySpark) Transformation wird in der Enterprise Version von process.science für Power BI zur Aufbereitung der Daten verwendet. Das Paket ist so konzipiert, dass die Daten direkt im Power BI Bericht transformiert werden können. Es erstellt vier Tabellen, die für die Analyse in Power BI verwendet werden können.

Vorbereiten der Eingabetabelle

Bevor die Skripte verwendet werden können, müssen Sie sicherstellen, dass Ihre Eingabetabelle die folgenden Anforderungen erfüllt. Die Spaltennamen für case_id, activity und timestamp sind festgelegt und müssen in Ihrer Eingabetabelle vorhanden sein.

FeldnameBeschreibungDatentypPflichtfeld
case_idÜber dieses Feld können die Prozessinstanzen unterschieden werden.nvarchar
activityDieses Feld beschreibt die Aktivität, die stattgefunden hat.nvarchar
activity_groupedDieses Feld beschreibt die Gruppe der Aktivität, die stattgefunden hat.nvarchar
timestampDieses Feld beschreibt, wann ein Ereignis stattgefunden hat.datetime2
timestamp_endDieses Feld kann verwendet werden, um die Dauer von Aktivitäten zu berechnen.datetime2
sort_keyDieses Feld kann verwendet werden, um die Sortierung des Ereignisprotokolls anzupassen.numeric
valueHier können Sie die Kosten für das aktuelle Ereignis festlegen.numeric
automatedHier können Sie festlegen, ob der Vorgang automatisiert wurde oder nicht.numeric
resourceÜber dieses Feld können Nutzerinformationen pro Aktivität mitgegeben werden.Beliebig
Zusätzliche AktivitätswerteWeitere Informationen pro Aktivität, z. B. die Menge der Positionen. Alle Felder, die nicht mit anderen Namen übereinstimmen, werden als zusätzliche Aktivitätswerte abgebildet und in der neu erstellten Ereignisprotokolltabelle gespeichert.Beliebig
Additional Cases ValuesWeitere Informationen pro Fall, z.B. ein Unternehmensbereich. Alle Felder, die mit case_ beginnen, werden als zusätzliche Fallwerte abgebildet und in der neu erstellten Falltabelle gespeichert.Beliebig
Zusätzliche Aktivitätswerte gruppiertWeitere Informationen pro Aktivitätsgruppe, z. B. die Menge der Positionen. Alle Felder, die mit _grouped enden, werden als zusätzliche Aktivitätsgruppenwerte abgebildet und in der neu erstellten Ereignisprotokolltabelle gespeichert.Beliebig

Herunterladen der Skripte

Die Skripte können immer in der aktuellsten Version aus unserem Self Service Portal heruntergeladen werden. Die Skripte sind in einer ZIP-Datei enthalten und müssen entpackt werden.

Installation und Konfiguration

Anpassungen für genutzte Datenbanken

Die Skripte sind so konzipiert, dass sie mit den meisten Datenbanken funktionieren. Es ist jedoch notwendig diese für die passeden Datenbanken anzupassen. Im oberen Teil des Skriptes müssen die Jar-Dateien für die Datenbanktreiber angegeben werden. Diese können in der Regel auf der Website des Datenbankanbieters heruntergeladen werden.

python
    spark = SparkSession.builder
            .config('spark.jars', '/Users/jars/spark-mssql-connector_2.12-1.2.0.jar, /Users/jars/mssql-jdbc-11.2.1.jre8.jar')
            .getOrCreate()

Ebenfalls müssen die Verbindungsdaten für die Datenbank angepasst werden.

python
	## TODO Set the MS SQL parameters
    server_name = "jdbc:sqlserver://xy.database.windows.net:1433"
    database_name = ""
    url = server_name + ";" + "databaseName=" + database_name + ";"
    table_name = "dbo.eventlog_en"
    username = ""
    password = ""

Ereignisprotokoll (Event Log)

Die Schritte 1 - 3 sind für die Erstellung der Ereignisprotokolltabelle notwendig. In diesen wird eine temporäre Tabelle erstellt, die die Daten aus der Eingabetabelle enthält. Diese wird dann in die finale Tabelle umgewandelt. Wenn die gruppieren Aktivitäten verwendet werden, müssen die entsprechenden Spalten in der Eingabetabelle vorhanden sein.

Alle zusätzlichen Spalten, die nicht mit case_ anfangen oder mit _grouped enden, werden in der Tabelle eventlog gespeichert. Alle zusätzlichen Spalten mit dem Suffix _grouped werden in der Tabelle eventlog_grouped gespeichert.

Filtertabellen (Filter Tables)

Die Schritte 4 - 6 sind für die Erstellung der Filtertabellen notwendig. In diesen wird eine temporäre Tabelle erstellt, die die Daten aus der Eingabetabelle enthält. Diese wird dann in die finale Tabelle umgewandelt.

Aktivitätsgruppenmapping (Activity Group Map)

Der Schritt 7 ist für die Erstellung der Aktivitätsgruppenmappingtabelle notwendig. Diese wird benötigt, wenn mit Aktivitätsgruppen gearbeitet wird.

Falltabelle (Cases Data)

Schritt 8 ist für die Erstellung der Falltabelle notwendig. Alle zusätzlichen Spalten, die mit case_ beginnen, werden in der Tabelle cases_data gespeichert.

Schreiben der Daten in die Datenbank

Im letzten Schritt werden die Daten in die Datenbank geschrieben. Hier muss gegenbenenfalls die Funktion write_to_sql_server zum Schreiben in die Datenbank angepasst werden, im Beispiel unten ist das Ziel eine Microsoft SQL Datenbank.

python
    ## Write tables to MS SQL,
    def write_to_sql_server(df: any, output_name: str):,
        df.write.mode("overwrite")
                .format("jdbc")
                .option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver")
                .option("url", url)
                .option("dbtable", output_name)
                .option("user", username)
                .option("password", password)
                .save()