Zuletzt bearbeitet vor 2 Wochen
von Daniel Quathamer

Hochschuleigene Laderoutinen: Unterschied zwischen den Versionen

Markierung: 2017-Quelltext-Bearbeitung
Keine Bearbeitungszusammenfassung
Markierung: 2017-Quelltext-Bearbeitung
Zeile 1: Zeile 1:
=Beispielanforderung=
=Übersicht =
Eigene Laderoutinen sind öfter gewünscht, wenn bestimmte Daten von den bisherigen Modulen (noch) nicht übernommen werden.
Als Beispiele könnten sein
* erfasste Mathenote von Bewerbern
* neue Tabelle zu Lehrbeauftragten
* bestimmte Zusatzfelder in MBS.inst
Dabei geht es darum, die Daten zunächst aus dem Quellsystem zu entladen (CSV), sie dann in SuperX/BI einzuspielen und ggfs. noch zu transformieren.
=mögliche Lade-Techniken=
* Shellscripte (DOQUERY, sx_upload_table.x )
* Kettle
* BI Sonderladeroutinen
=Beispielanforderung Mathenote=
Die Technische Universität Hamburg (TUHH) erfasst die Mathematiknoten, welche Bewerber auf ihrem bisherigen Bildungsweg erreichten. Diese Mathematiknoten sollen zukünftig in Auswertungen einbezogen werden.
Die Technische Universität Hamburg (TUHH) erfasst die Mathematiknoten, welche Bewerber auf ihrem bisherigen Bildungsweg erreichten. Diese Mathematiknoten sollen zukünftig in Auswertungen einbezogen werden.
=Lösungsansatz=
==Ziel der Laderoutine==
==Ziel der Laderoutine==
Das Ziel der Laderoutine ist das Befüllen einer neuen Tabelle mit Bewerbernummer und Mathematiknote. Diese neue Tabelle wird über das Feld 'Weitere Tabellen' im "Bewerbungen und Zulassungen Datenblatt" erreichbar sein. Ggf. ist noch ein Zeitraum anzugeben. </br>Tabellenstruktur:
Das Ziel der Laderoutine ist das Befüllen einer neuen Tabelle mit Bewerbernummer und Mathematiknote. Diese neue Tabelle wird über das Feld 'Weitere Tabellen' im "Bewerbungen und Zulassungen Datenblatt" erreichbar sein. Ggf. ist noch ein Zeitraum anzugeben. </br>Tabellenstruktur:
Zeile 15: Zeile 24:
* Shellscripte (DOQUERY, sx_upload_table.x )
* Shellscripte (DOQUERY, sx_upload_table.x )
* Kettle
* Kettle
* BI Sonderladeroutine
===Unload aus dem Vorsystem===
===Unload aus dem Vorsystem===
Entladen der Tabelle '''application_content''', im Ergebnis eine CSV Datei
Entladen der Tabelle '''application_content''', im Ergebnis eine CSV Datei
Zeile 26: Zeile 36:
* sx_tables: Einfügen der Tabellennamen
* sx_tables: Einfügen der Tabellennamen
* sx_fields: Einfügen der Spaltennamen inkl. Relationen (Fremdschlüssel-Beziehung von Bewerber-Mathenote zu Bewerbung Datenblatt (zul_bew_mathenote.bewnr = zul_antr_aggr.bewnr)
* sx_fields: Einfügen der Spaltennamen inkl. Relationen (Fremdschlüssel-Beziehung von Bewerber-Mathenote zu Bewerbung Datenblatt (zul_bew_mathenote.bewnr = zul_antr_aggr.bewnr)
=BI Sonderladeroutinen=
In der HisInOne-BI gibt es die Möglichkeit, eigene Sonderladeroutinen zu entwerfen.<br>
Voraussetzung dafür ist, dass das ETL-Modul aus dem [https://download.superx-projekt.de Downloadbereich] installiert ist.<br>
Eine Laderoutine kann Entladeschritte, Ladeschritte und Transformationsschritte (SQL) enthalten.
Die Installation einer Sonderladeroutine läuft über ein komplexes Script, dass mit Freemarker-Variablen gefüllt wird und dann später zu reinem SQL transformiert wird, der die Installation ausführt.<br>
==Definition von Sonderladeroutinen==
Ausgangspunkt ist die Definition einer (oder mehrerer) Sonderladeroutinen.
Als uniquename muss eine eindeutige Kennung gewählt werden, die auf "special" endet und bei systeminfo, die ID zu welchem Teilbereich (wie Finanzen,Personal oder Studierende) entsprechend der Tabelle systeminfo die Sonderladeroutine gehört und unter deren Hauptkonnektor sie erscheinen soll. etl_job_params können leer bleiben.
<pre>
<#assign  etl_jobs = [
  {"uniquename":"fin_inst_special", "name":"Zusatzfelder Inst und Proj aus MBS übertragen", "systeminfo_id":3 ,"logfile":""}
  ] />
<#assign  etl_job_params = [
  ] />
</pre>
== Beispiel Entladen/Laden-Schritte ==
In einem einfachen Fall will man bestimmte Zusatzfelder entladen. Dazu legt man zwei ETL-Steps an.
Das Attribut "etl_job" verweist auf den ETL-JOB ("fin_inst_special") zu dem die Steps gehören sollen.<br>
Dann gibt man ihnen einen uniquename, einen Namen und einen Typ
* UNLOAD zum Entladenaus einer Quell-Datenbank
* LOAD zum Einspielen in die BI-Datenbank
<pre>
<#assign  etl_steps = [
{"etl_job":"fin_inst_special", "uniquename":"unload_fin_inst", "name":"Zusatzfelder Inst entladen", "type":"UNLOAD", "parent":""},
{"etl_job":"fin_inst_special", "uniquename":"upload_fin_inst", "name":"Zusatzfelder Inst laden", "type":"LOAD", "parent":"" }
  ] />
</pre>
== Parameter für UNLOAD-Steps ==
Folgende Parameter müssen für einen UNLOAD-Step hinterlegt werden.<br>
Das attribut "datasource" gibt die Quelldatenbankverbindung in HisInOne an. (hier im Beispiel mbs).<br>
Im Script darf es für alle step_properties nur eine Definition mit <#assign etl_step_properties= .. geben, weitere StepProperties müssen in dieser Aufzählung ergänzt werden.<br>
<pre>
<#assign  etl_step_properties = [
{"etl_step":"unload_fin_inst","prop_name":"active", "prop_value":"true" },
{"etl_step":"unload_fin_inst","prop_name":"custom", "prop_value":"true" },
{"etl_step":"unload_fin_inst","prop_name":"datasource", "prop_value":"mbs" },
{"etl_step":"unload_fin_inst","prop_name":"sourceVersions", "prop_value":"" },
{"etl_step":"unload_fin_inst","prop_name":"sql", "prop_value":"select inst_nr, key_ext,lehr,freitext01,freitext02,freitext03,freitext04,freitext05,freitext06,freitext07,freitext08,freitext09,freitext10 from  cob.inst; " },
{"etl_step":"unload_fin_inst","prop_name":"sqlVarSource", "prop_value":"" },
{"etl_step":"unload_fin_inst","prop_name":"systemInfoId", "prop_value":"3" },
{"etl_step":"unload_fin_inst","prop_name":"unlFile", "prop_value":"$FIN_LOAD_PATH/unl/fin_inst_plus.unl" }
  ] />
</pre>
== Parameter für LOAD-Steps ==
Folgende Parameter müssen für einen LOAD-Step hinterlegt werden.<br>
Das Attribut "tableName" (hier im Beispiel "fin_inst_plus")gibt die Zieltabelle an, in die vorher entladenen Daten eingespielt werden sollen.<br>
Im Script darf es für alle step_properties nur eine Definition mit <#assign etl_step_properties= .. geben, weitere StepProperties müssen in dieser Aufzählung ergänzt werden.<br>
<pre>
<#assign  etl_step_properties = [
{"etl_step":"upload_fin_inst","prop_name":"unlFilePath", "prop_value":"$FIN_LOAD_PATH/unl/fin_inst_plus.unl" },
{"etl_step":"upload_fin_inst","prop_name":"database", "prop_value":"eduetl" },
{"etl_step":"upload_fin_inst","prop_name":"delimiter", "prop_value":"^" },
{"etl_step":"upload_fin_inst","prop_name":"custom", "prop_value":"true" },
{"etl_step":"upload_fin_inst","prop_name":"refresh", "prop_value":"true" },
{"etl_step":"upload_fin_inst","prop_name":"header", "prop_value":"false" },
{"etl_step":"upload_fin_inst","prop_name":"active", "prop_value":"true" },
{"etl_step":"upload_fin_inst","prop_name":"systemInfoId", "prop_value":"3" },
{"etl_step":"upload_fin_inst","prop_name":"usePostgresCopyApi", "prop_value":"true" },
{"etl_step":"upload_fin_inst","prop_name":"tableName", "prop_value":"fin_inst_plus" }
] />
</pre>

Version vom 24. April 2025, 08:49 Uhr

Übersicht

Eigene Laderoutinen sind öfter gewünscht, wenn bestimmte Daten von den bisherigen Modulen (noch) nicht übernommen werden. Als Beispiele könnten sein

  • erfasste Mathenote von Bewerbern
  • neue Tabelle zu Lehrbeauftragten
  • bestimmte Zusatzfelder in MBS.inst

Dabei geht es darum, die Daten zunächst aus dem Quellsystem zu entladen (CSV), sie dann in SuperX/BI einzuspielen und ggfs. noch zu transformieren.

mögliche Lade-Techniken

  • Shellscripte (DOQUERY, sx_upload_table.x )
  • Kettle
  • BI Sonderladeroutinen

Beispielanforderung Mathenote

Die Technische Universität Hamburg (TUHH) erfasst die Mathematiknoten, welche Bewerber auf ihrem bisherigen Bildungsweg erreichten. Diese Mathematiknoten sollen zukünftig in Auswertungen einbezogen werden.

Ziel der Laderoutine

Das Ziel der Laderoutine ist das Befüllen einer neuen Tabelle mit Bewerbernummer und Mathematiknote. Diese neue Tabelle wird über das Feld 'Weitere Tabellen' im "Bewerbungen und Zulassungen Datenblatt" erreichbar sein. Ggf. ist noch ein Zeitraum anzugeben.
Tabellenstruktur:

  • Tabellenname: zul_bew_mathenote
  • Felder:
    • Bewerbernummer (INT)
    • Mathenote (FLOAT)
  • Zusätzlich zum Hochladen noch eine "_neu"-Tabelle, die quasi als Zwischenlager dient.

Implementierung der Laderoutine

Entscheidung über die Technik des Ladens

  • Shellscripte (DOQUERY, sx_upload_table.x )
  • Kettle
  • BI Sonderladeroutine

Unload aus dem Vorsystem

Entladen der Tabelle application_content, im Ergebnis eine CSV Datei

Laden der CSV-Datei

Hochladen mit Kettle oder Shellscript in _neu-Tabelle

Transformation in finale Tabelle

Aus der _neu-Tabelle in die finale Tabelle schreiben, ggf. noch Tranformation, z.B. von Noten-Punkten zur Note Dezimal (z.B. 11="gut")

Automatisierung

Nächtliches Laden mit Shellscript oder Kettle

Einbinden in das Bewerbungen Datenblatt

  • sx_tables: Einfügen der Tabellennamen
  • sx_fields: Einfügen der Spaltennamen inkl. Relationen (Fremdschlüssel-Beziehung von Bewerber-Mathenote zu Bewerbung Datenblatt (zul_bew_mathenote.bewnr = zul_antr_aggr.bewnr)

BI Sonderladeroutinen

In der HisInOne-BI gibt es die Möglichkeit, eigene Sonderladeroutinen zu entwerfen.
Voraussetzung dafür ist, dass das ETL-Modul aus dem Downloadbereich installiert ist.
Eine Laderoutine kann Entladeschritte, Ladeschritte und Transformationsschritte (SQL) enthalten.

Die Installation einer Sonderladeroutine läuft über ein komplexes Script, dass mit Freemarker-Variablen gefüllt wird und dann später zu reinem SQL transformiert wird, der die Installation ausführt.

Definition von Sonderladeroutinen

Ausgangspunkt ist die Definition einer (oder mehrerer) Sonderladeroutinen. Als uniquename muss eine eindeutige Kennung gewählt werden, die auf "special" endet und bei systeminfo, die ID zu welchem Teilbereich (wie Finanzen,Personal oder Studierende) entsprechend der Tabelle systeminfo die Sonderladeroutine gehört und unter deren Hauptkonnektor sie erscheinen soll. etl_job_params können leer bleiben.

<#assign  etl_jobs = [
  {"uniquename":"fin_inst_special", "name":"Zusatzfelder Inst und Proj aus MBS übertragen", "systeminfo_id":3 ,"logfile":""}
   ] />

<#assign  etl_job_params = [
  ] />

Beispiel Entladen/Laden-Schritte

In einem einfachen Fall will man bestimmte Zusatzfelder entladen. Dazu legt man zwei ETL-Steps an. Das Attribut "etl_job" verweist auf den ETL-JOB ("fin_inst_special") zu dem die Steps gehören sollen.
Dann gibt man ihnen einen uniquename, einen Namen und einen Typ

  • UNLOAD zum Entladenaus einer Quell-Datenbank
  • LOAD zum Einspielen in die BI-Datenbank
<#assign  etl_steps = [
{"etl_job":"fin_inst_special", "uniquename":"unload_fin_inst", "name":"Zusatzfelder Inst entladen", "type":"UNLOAD", "parent":""},
{"etl_job":"fin_inst_special", "uniquename":"upload_fin_inst", "name":"Zusatzfelder Inst laden", "type":"LOAD", "parent":"" }
  ] />

Parameter für UNLOAD-Steps

Folgende Parameter müssen für einen UNLOAD-Step hinterlegt werden.
Das attribut "datasource" gibt die Quelldatenbankverbindung in HisInOne an. (hier im Beispiel mbs).
Im Script darf es für alle step_properties nur eine Definition mit <#assign etl_step_properties= .. geben, weitere StepProperties müssen in dieser Aufzählung ergänzt werden.

<#assign  etl_step_properties = [
 
{"etl_step":"unload_fin_inst","prop_name":"active", "prop_value":"true" },
{"etl_step":"unload_fin_inst","prop_name":"custom", "prop_value":"true" },
{"etl_step":"unload_fin_inst","prop_name":"datasource", "prop_value":"mbs" },
{"etl_step":"unload_fin_inst","prop_name":"sourceVersions", "prop_value":"" },
{"etl_step":"unload_fin_inst","prop_name":"sql", "prop_value":"select inst_nr, key_ext,lehr,freitext01,freitext02,freitext03,freitext04,freitext05,freitext06,freitext07,freitext08,freitext09,freitext10 from  cob.inst; " },
{"etl_step":"unload_fin_inst","prop_name":"sqlVarSource", "prop_value":"" },
{"etl_step":"unload_fin_inst","prop_name":"systemInfoId", "prop_value":"3" },
{"etl_step":"unload_fin_inst","prop_name":"unlFile", "prop_value":"$FIN_LOAD_PATH/unl/fin_inst_plus.unl" }

  ] />

Parameter für LOAD-Steps

Folgende Parameter müssen für einen LOAD-Step hinterlegt werden.
Das Attribut "tableName" (hier im Beispiel "fin_inst_plus")gibt die Zieltabelle an, in die vorher entladenen Daten eingespielt werden sollen.
Im Script darf es für alle step_properties nur eine Definition mit <#assign etl_step_properties= .. geben, weitere StepProperties müssen in dieser Aufzählung ergänzt werden.

<#assign  etl_step_properties = [
 {"etl_step":"upload_fin_inst","prop_name":"unlFilePath", "prop_value":"$FIN_LOAD_PATH/unl/fin_inst_plus.unl" },
{"etl_step":"upload_fin_inst","prop_name":"database", "prop_value":"eduetl" },
{"etl_step":"upload_fin_inst","prop_name":"delimiter", "prop_value":"^" },
{"etl_step":"upload_fin_inst","prop_name":"custom", "prop_value":"true" },
{"etl_step":"upload_fin_inst","prop_name":"refresh", "prop_value":"true" },
{"etl_step":"upload_fin_inst","prop_name":"header", "prop_value":"false" },
{"etl_step":"upload_fin_inst","prop_name":"active", "prop_value":"true" },
{"etl_step":"upload_fin_inst","prop_name":"systemInfoId", "prop_value":"3" },
{"etl_step":"upload_fin_inst","prop_name":"usePostgresCopyApi", "prop_value":"true" },
{"etl_step":"upload_fin_inst","prop_name":"tableName", "prop_value":"fin_inst_plus" }
 ] />