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.
| Feldname | Beschreibung | Datentyp | Pflichtfeld |
|---|---|---|---|
case_id | Ãber dieses Feld können die Prozessinstanzen unterschieden werden. | nvarchar | ✓ |
activity | Dieses Feld beschreibt die Aktivität, die stattgefunden hat. | nvarchar | ✓ |
activity_grouped | Dieses Feld beschreibt die Gruppe der Aktivität, die stattgefunden hat. | nvarchar | ✗ |
timestamp | Dieses Feld beschreibt, wann ein Ereignis stattgefunden hat. | datetime2 | ✓ |
timestamp_end | Dieses Feld kann verwendet werden, um die Dauer von Aktivitäten zu berechnen. | datetime2 | ✗ |
sort_key | Dieses Feld kann verwendet werden, um die Sortierung des Ereignisprotokolls anzupassen. | numeric | ✗ |
value | Hier können Sie die Kosten für das aktuelle Ereignis festlegen. | numeric | ✗ |
automated | Hier 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ätswerte | Weitere 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 Values | Weitere 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 gruppiert | Weitere 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.
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.
## 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.
## 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()