Grohrock.consulting

Excel, Datenbanken und mehr

Reverse-Engineering mit dem SAP PowerDesigner – Spalten mit hoher Kardinalität

Irgendwo zwischen lustig und peinlich rangiert meines Erachtens folgende Problematik. Mit Hilfe des SAP PowerDesigners soll aus einer Datenbank ein Modell erstellt werden und eigentlich klappt auch alles ganz gut, bis auf einmal folgende Fehlermeldung erscheint:

value X out of range for destination

Wobei X einen ziemlich hohen Wert einnimmt. Die Tabelle wird dabei nicht mehr vollständig geladen, heißt man hat zu wenige Spalten im Modell. Was nun?

Zielführend war hier das manuelle Ausführen der Abfrage, die man im PowerDesigner unter „Database > Edit current DBMS“ findet, indem man zur Option „Script\Objects\Column\SqlListQuery“ navigiert. Beim Betrachten der Spalte „coln“ wurde auch schnell klar, woran der Fehler liegt. Die Kardinalität der Problemspalte lag bei etwa 2,8 Milliarden, also jenseits der Grenze eines Signed-Int-Feldes und von daher der Fehler.

Abhilfe schafft hier das Auskommentieren der entsprechenden Abfragesegmente (Vorsicht mit Kommata, aus diesem Grund habe ich es auf dem Bild in die nächste Zeile gerückt und dort auskommentiert):

value X out of range for destination

Vorsicht allerdings, denn ich kann nicht garantieren, dass dadurch alle Funktionen bei der Datenmodellierung erhalten bleiben. Sollte man z. B. über den PowerDesigner einen Index erstellen wollen, kann ich mir gut vorstellen, dass es hier zu Problemen kommt. Für das reine Reverse-Engineering allerdings funktioniert die Methode wunderbar.

Power Query: Zusammengesetzte Schlüssel

Wie Tabellen miteinander verknüpft werden können habe ich in einem anderen Eintrag schon angesprochen, aber was ist, wenn eine Spalte nicht mehr ausreicht, um zwei Tabellen zu verknüpfen. Zu theoretisch? Ok ein praktisches Beispiel.

Beispieltabellen

Als Ausgangslage haben wir zwei Tabellen, die zu einer Web-basierten Software gehören.In einer Tabelle haben wir aggregierte Nutzerstatistiken, in der anderen haben wir Daten zu Micropayments aus unserer Vertriebssoftware. Wie immer gilt: in der optimalen Welt hätten wir das direkt mit einer Datenbankabfrage so zusammenbekommen, nämlich folgendermaßen:

SELECT m.date_key, m.feature, m.sales, m.sales_eure, n.users
FROM Micropayments m
INNER JOIN Nutzung n
ON m.date_key = n.date_key AND m.feature = n.feature

Zusammengesetzten Schlüssel erstellen

Wo sich bei einer SQL-Abfrage mehrere Bedingungen einbringen lassen, bietet PowerQuery diese Möglichkeit leider nicht. Der Grund hierfür ist einfach, dass als Argumente für den Join lediglich Spaltennamen übergeben werden können. Das bedeutet, dass wir zunächst einen neuen Schlüssel erstellen müssen. Dazu erstellen wir in beiden Abfragen die benutzerdefinierte Spalte „date_keyFeature“ mit folgender Formel:

= Text.From([date_key]) & [feature]

 benutzerdefinierte Spalte

Mit diesem Schritt bekommen wir eine neue Spalte mit eindeutigen Schlüsseln für die Kombination aus Datum und Feature.

Tabellen zusammenfügen

Jetzt steht dem Zusammenfügen nichts mehr im Wege, indem wir die neu erstellte Spalte „date_keyFeature“ auswählen und dann die neue Tabelle z.B. um „sales“ oder „sales_euro“ erweitern. Aussehen sollte es dann ungefähr folgendermaßen:

Tabellen zusammenfügen

Die Hilfsspalte kann auch noch entfernt werden, da sie bei der weiteren Analyse keinen wirklichen Mehrwert bringt und fertig ist unsere Kombination mittels zusammengesetztem Schlüssel.

Fragen? Einfach kommentieren.

Excel 2016: ein kurzer Überblick

Erster Blick

Rein oberflächlich betracht hat sich bei Excel 2016 nur wenig getan. Ein neues Farbschema, einige Designänderungen und die direkte Integration von PowerQuery in den Daten-Reiter sind keine bahnbrechenden Änderungen … andererseits wäre das auch überhaupt nicht nötig gewesen, denn ehrlich gesagt war schon das Design von Excel 2013 sehr gut.

Die meiner Ansicht nach sinnvollsten Updates an der Benutzeroberfläche sind die farblich unterstützte Formeleingabe in PowerPivot und die Umbenennung der Metriken von „berechnete Felder“ in Measures. Außerdem werden die Measures in der Auswahl der PivotTable-Felder nun besser als solche angezeigt (siehe das kleine fx):

Measures_PivotTable

MeasuresMenüband

Datenmodell und PowerQuery

Die direkte Einbindung von PowerQuery in den Datenreiter zeigt eine klare Richtung. Excel wird immer mehr ein Anzeige- und Bearbeitungstool für Daten aus verschiedenen Systemen und Microsoft stellt die passenden Werkzeuge dafür zur Verfügung. Dadurch gewinnt das Datenmodell insgesamt an Bedeutung, was in den meisten Anwendungsfällen nur Vorteile hat. Im Gegensatz zu regulären Formeln und Tabellen sind die Berechnungen wesentlich schneller und lassen sich auch bei Bedarf leichter anpassen.

Einziger Nachteil: Nutzer benötigen mindestens Excel 2010 Professional Plus oder Excel 2013, um bestimmte Funktionen zu nutzen. Tja und was wenn der Nutzer es mit einer anderen Version versucht? Die gute Nachricht zuerst: öffnen lassen sich die Dateien auf jeden Fall. Problematisch wird es, wenn auf das Datenmodell zugegriffen werden muss; also jedes Mal, wenn eine Berechnung stattfinden soll. Hinzufügen und Entfernen von Elementen in PivotTables funktioniert nicht, das ist fast schon offensichtlich und auch nicht wirklich problematisch, aber auch andere Funktionen sind eingeschränkt. Zwei prominente Beispiele sind Datenschnitte und reduzierte Tabellen.

Datenschnitt_Reduzierte Tabelle

Mein persönliches Fazit: Microsoft setzt ganz stark auf die ständige Erweiterung von BI-Features und wer seine Lösung darauf aufbauen möchte, ist mit einem Aboplan gut beraten. Klar ist das gut für Microsoft, aber wenn die Updates weiter so fließen, dann ist das auch gut für den Nutzer.

Neue Diagrammtypen

Die neue Version kommt mit sechs neuen Diagrammtypen, die von Microsoft selbst schon ziemlich gut vorgestellt wurden. Der folgende (englische) Artikel zeigt die Diagramme und einige Anwendungsbeispiele: https://blogs.office.com/2015/07/02/introducing-new-and-modern-chart-types-now-available-in-office-2016-preview/

Was in der Theorie sehr gut aussieht, hat in der Praxis leider einen erheblichen Haken. Alle neuen Diagramme sind nicht für PivotTables verfügbar und somit meiner Meinung nach fast schon unbrauchbar. Microsoft hat hier schon Besserung gelobt, aber noch keinen Zieltermin genannt. Man kann also nur hoffen, dass der Druck der Nutzer hoch genug ist.

Fazit

Klar, den meisten Nutzern würde vermutlich auch noch Excel 2007 genügen (mal ganz ehrlich, die Welt hat sich mit den Menübändern schon verbessert) und für die meisten Anwendungsfälle kann es auch Version 2013 sein, aber dann sind es einfach die vielen kleinen Features, die mir persönlich bei Excel 2016 sehr gut gefallen haben. Durch die Integration von PowerQuery wirkt es übersichtlicher und sobald die neuen Diagrammtypen für PivotTables verfügbar sind, werden wohl viele Menschen aufatmen, die bislang noch manuell an solchen Lösungen gebastelt haben.

Excel-Basics: Tabellen verwenden (Teil 1)

Einführung

Seit wann es die Tabellen gibt, könnte ich selbst kaum noch sagen, Fakt ist, dass sie zumindest meiner Erfahrung nach viel zu wenig verwendet werden. Vermutlich ist für viele auch kaum ersichtlich, warum man innerhalb eines riesigen Haufens an Zellen noch extra eine Tabelle definieren sollte. Vielleicht ist die Funktion aber auch einfach zu unbekannt und deshalb zunächst einmal eine  grundlegende Information, es geht um diese Funktion im Reiter „Start“:

Als Tabelle formatieren

Grundlagen

Zum besseren Verständnis ist ausprobieren natürlich immer eine wunderbare Lösung, weshalb ich eine einfache Beispieltabelle erstellt habe. Diese kann hier frei heruntergeladen werden: Weltbevölkerung (Daten aus Wikipedia).

Noch stehen unsere schönen Informationen völlig unformatiert mitten im Raum, doch das soll sich schnell ändern. Zunächst wählen wir eine beliebige Zelle innerhalb unserer Daten. Wichtig ist hierbei entweder keine Zelle zu markieren und Excel das Erkennen der Größe zu überlassen oder die Tabelle komplett per Hand zu markieren. Dann klicken wir auf „Als Tabelle formatieren“ und wählen das Design unserer Wahl. Wenn alles klappt, dann sollte Excel uns folgenden Dialog präsentieren:

Tabelle selektieren

Normalerweise erkennt Excel Überschriften von alleine, ansonsten muss im Nachhinein das Häkchen aktiviert werden. Nach einem Klick auf „OK“ haben wir schließlich das fertige Ergebnis:

Formatierte Tabelle

Auf den ersten Blick sieht das Ergebnis nicht besonders aufregend aus, aber ab jetzt gilt dieser Bereich innerhalb der Mappe als Tabelle. Das heißt jede Spalte hat einen eigenen Namen (der einzigartig sein muss), beim Sortieren bleiben Zeilen immer zusammen und die Formatierung kann leicht geändert werden. Ein weiterer Vorteil ist, dass eine gesamte Spalte markiert werden kann. Der passende schwarze Pfeil erscheint, wenn man die Maus in den oberen Teil des Spaltennamens bewegt.

Spalte selektieren plus Menü

Das Einfügen von Zeilen und Spalten geht bequem per Menü. Außerdem wird automatisch eine neue Zeile eingefügt, wenn man in der letzten Zelle der Tabelle die Tabulatortaste drückt. Sehr praktisch, wenn man zum Beispiel Tabellen nutzt, um seine Ausgaben oder Einnahmen Zeile für Zeile aufzulisten. So viel zu den Grundlagen, aber was kann man jetzt konkret damit anfangen? Näheres dann im nächsten Teil 😉

Schicke Dashboards ohne Pivot, feat. SUMMENPRODUKT

Irgendwo in einem Büro … eher in vielen Büros. Ganz schnell sollen ein paar Dinge ausgewertet werden, dann auf in eine Tabelle damit und ganz wichtig: Das Ergebnis hat dann genau SO auszusehen. Eine Pivot-Tabelle wäre hier der einfachere Ansatz, aber wenn es dann doch mal ohne gehen muss, hat Excel auch hier passende Formeln parat. Die Beispieldatei habe ich wie immer angehängt.

Heruntergeladen werden kann sie hier: Qualitätsanalyse

Die Datentabelle

Die Tabelle umfasst zwei Originalspalten: die Mail-ID und das Thema. Die weiteren Spalten kamen zu Analysezwecken hinzu und mussten je nach Spalte mit x oder mit einer Zahl ausgefüllt werden. Der Einfachheit halber wurden die Daten als Tabelle formatiert, so dass Spalten auch über ihren Namen angesprochen werden können. Also Daten[Thema] statt B2:B51.

Datentabelle

Das fertige Dashboard sollte dann folgendermaßen gestaltet sein:

Dashboard

Mengen zählen mit ANZAHL und ZÄHLENWENN

Die einfachste Funktion des gesamten Berichts ist wohl die Funktion ANZAHL. Mit ihr zählen wir die Anzahl aller Zellen im Bereich, die eine Zahl enthalten.

Anzahl

Hinweis: Soll eine Spalte mit Textwerten gezählt werden, muss stattdessen ANZAHL2 verwendet werden.

Wer auf die grandiose Idee kam, die nächste Funktion ZÄHLENWENN statt ANZAHLWENN zu nennen, ist mir leider ein Rätsel. Fakt ist, wir müssen wohl damit leben. Im Prinzip macht die Funktion aber genau das gleiche, zählt aber nur die Zellen, in denen ein bestimmter Wert enthalten ist. In unserem Beispiel ist das „Technik“.

Zählenwenn

Ähnliches funktioniert übrigens auch mit Summen, denn genau für diesen Zweck gibt es die Funktion SUMMEWENN.

Summen bilden mit SUMMEWENN

Wenden wir uns nun zunächst der Detailanalyse unseres Technikbereichs zu. Wir wollen wissen, wie viele Rechtschreibfehler in den Mails gefunden wurden. Im Klartext also die Summe aller Werte aus der Spalte [Rechtschreibfehler], aber nur, wenn die Spalte [Thema] den Begriff „Technik“ enthält. In Excel ausgedrückt sieht das dann folgendermaßen aus:

Summewenn

Bis jetzt konnten wir alles mit eher einfach gestrickten Formeln erledigen, doch bei so vielen verschiedenen Möglichkeiten, die Daten zu untergliedern, ist selbstverständlich noch Luft nach oben. Was passiert zum Beispiel, wenn wir bei der Summierung noch mehr Faktoren eingrenzen wollen.

Summen bilden mit SUMMENPRODUKT

Einfache Anwendungesszenarien

Eines direkt vorweg, das SUMMENPRODUKT ist nicht das Produkt von Summen, sondern in der „Grundausführung“ die Summe von Produkten (man verzeihe mir diesen kurzen Ausflug in die Erbsenzählerei).

Was bedeutet das also ganz konkret. Zunächst die Voraussetzungen: Das SUMMENPRODUKT verlangt als Parameter mehrere Spalten; sinnvollerweise mindestens zwei. Wichtig ist, dass alle Spalten gleich lang sein müssen, da Excel ansonsten keine Berechnung durchführen kann. Was die Formel genau macht, schauen wir uns am besten direkt am Beispiel an:

summenprodukt_1

Ausgeschrieben würde die Berechnung dann folgendermaßen aussehen: (1*5) + (2*3) + (4*1). Jede zusätzliche Spalte wird nach dem gleichen Prinzip multipliziert.

Leider ist die Office-Hilfe bei der Beschreibung unvollständig, denn die Formel kann auch ohne Semikolon verwendet werden … und zwar wesentlich besser. Ersetzt man es also durch einen mathematischen Operator, wird stattdessen dieser zur Berechnung herangezogen. Hier ein Beispiel mit Quotienten:

summenprodukt_quotient

Ausgeschrieben: (1/5) + (2/3) + (4/1)

Komplexe Anwendungsszenarien

Das SUMMENPRODUKT kann aber noch mehr. Innerhalb der Formel können nicht nur Zahlen, sondern auch logische Ausdrücke ausgewertet werden. Das heiße Excel prüft eine Bedingung und wenn diese wahr ist, wird 1 zurückgegeben, ansonsten 0. Dazu auch direkt ein Beispiel:

summenprodukt_logik

Ausgeschrieben: (1*5) + (0*3) + (1*1)

Hinweis: Texte immer in Anführungszeichen.

Gleiches funktioniert natürlich auch mit Zahlenvergleichen. In meinem Datenbeispiel möchte ich zum Beispiel die Quote aller Technik-Mails berechnen, die mindestens einen Rechtschreibfehler enthalten.

summenprodukt_rechtschreibfehler_technik

Ist das Thema nicht Technik, wird automatisch eine 0 zurückgegeben und egal was in den anderen Zellen steht, das Produkt ergibt immer 0. Ergebnis: Die Zeile fließt nicht in die Berechnung mit ein. Auf diese Art und Weise lässt sich also mit Hilfe einer logischen Abfrage ein Zeilenfilter erstellen.

Der Vollständigkeit halber noch eine Zusatzinformation. In der obigen Formel haben mich nur die nicht-leeren Zellen der Spalte Daten[Thema] interessiert. Die Formel funktioniert also auch folgendermaßen:

=SUMMENPRODUKT((Daten[Thema]="Technik")*(Daten[Rechtschreibfehler]<>""))/F5

Weitere Anwendungsmöglichkeiten gibt es direkt in meiner Exceldatei und wie immer gilt:

Falls es hier Rückfragen gibt, die Kommentarfunktion ist aktiv 😉

Power Pivot: Gruppieren nach Monat / Quartal / Halbjahr

Wer die Funktion „Gruppieren“ aus normalen Pivottabellen in Excel kennt, wird sie bei Power Pivot zunächst vermissen. Auch bei korrekter Formatierung als Datum lassen sich Werte nicht nach Monat oder Quartal gruppieren. Abhilfe schafft hier die Einführung von Beziehungen zwischen einem Datum und der dazugehörigen Gruppe.

Kurz zu den Ausgangsdaten. Das Beispiel enthält Verkäufe mit Summen und Datumsangaben. Denkbare Analysen wären nun die Preisentwicklung pro Monat oder die Einnahmen pro Quartal.

Die Beispieldatei kann hier heruntergeladen werden: Verkäufe Gruppieren

Schritt 1: Zuordnungstabelle erstellen

Das kleinste Gemeinsam, welches wir zuordnen wollen, ist der Monat. Dementsprechend müssen wir eine Tabelle erstellen, in welcher jeder Monat einem Monatsnamen, Quartal und Halbjahr zugeordnet wird. In meinem Fall sind das folgende Spalten:

  • Monat (Nummer)
  • MonatKurz
  • MonatLang
  • Quartal
  • Halbjahr

Schritt 2: Spalte Monat hinzufügen

Ich setze voraus, dass die beiden Tabellen spätestens jetzt über „PowerPivot > Zu Datenmodell hinzufügen“ ins Datenmodell aufgenommen wurden. Zunächst brauchen wir also für die Rohdaten eine neue Spalte namens „Monat“, welche sich aus folgender Formel errechnet:

=MONTH([Datum])

Wer es gerne ganz sauber mag, der macht nun einen Rechtsklick auf den Spaltennamen und wählt die Option „Aus Clienttools ausblenden“. Dieser Schritt bewirkt, dass die Spalte nachher nicht als verfügbare Spalte für die Pivottabelle angezeigt wird.

Schritt 3: Zuordnungstabelle vorbereiten

Die Zuordnungstabelle ist an sich schon fertig, aber eine Gemeinheit versteckt sich noch darin. Alphabetisch kommt Februar vor Januar, aber selbstverständlich wollen wir die Monate korrekt sortieren. Passend dazu gibt es die Funktion „Nach Spalte sortieren“, die für jede Spalte ausgewählt werden muss, die nicht automatisch richtig sortiert werden. In unserem Fall sind das MonatKurz und MonatLang.

Nach Spalte sortieren

Schritt 4: Verknüpfung herstellen

Das Erstellen der Verknüpfung lässt sich am einfachsten in der Diagrammsicht bewerkstelligen. Der Button zum Wechseln befindet sich ganz rechts unten im Power Pivot-Fenster. In dieser Ansicht werden die verfügbaren Tabellen mit allen Spalten, berechneten Werten und KPI angezeigt. Zur Verknüpfung genügt es, die Spalte „Verkäufe.Monat“ per Drag & Drop auf die Spalte „Zuordnung_Monate.Monat“ zu ziehen.

Verknüpfung erstellen

An dieser Stelle direkt ein Hinweis zu Verknüpfungen. Power Pivot kennt von sich aus nur 1:n-Verknüpfungen. Das heißt ein Wert in einer Spalte darf auf der einen Seite genau ein Mal vorkommen, in der anderen Spalte aber n Mal.

In unserem Beispiel existiert der Monat 1 in „Zuordnung_Monate.Monat“ genau ein Mal, in der Spalte „Verkäufe.Monat“ hingegen kann er beliebig oft vorkommen.

Nutzung in einer Pivottabelle

Zum Einfügen der Pivottabelle haben wir zwei verschiedene Möglichkeiten. Die direkteste ist über das Power Pivot-Fenster über „Home > PivotTable“. Ich persönlich möchte aber nicht jedes Mal dieses Fenster öffnen, wenn ich eine neue Tabelle in mein Datenblatt einfüge. Meiner Meinung nach wesentlich einfacher geht es direkt im Excel-Fenster über „Einfügen > PivotTable“. Dort je nach Wunsch die Position wählen und „Externe Datenquelle verwenden“ wählen. Als Verbindung wählen wir dann „Tabellen im Datenmodell der Arbeitsmappe“.

Vorhandene Verbindungen

Nun wird wie gewohnt eine Pivottabelle eingefügt, in der man Zeilen und Spalten je nach Wunsch einfügen kann. Als kleines Beispiel habe ich die Produkte in die Spalten und die Quartale und Monate in die Zeilen gepackt. Als Wert habe ich einfach die Summe der Gesamtpreise genommen.

PivotTable

Also alles im Kern ganz einfach und das Ergebnis besticht durch sauber aufteilbare Daten, ohne dass die Originaltabelle um die gesamte Palette an möglichen Datumswerten erweitert werden muss. Wie man sehen kann, taucht die Spalte „Verkäufe.Monat“ nicht auf, da ich sie vorher für Clienttools ausgeblendet habe. Für mich ist das vor allem eine Frage der Nutzbarkeit. Alle Spalten und Werte, die der Endnutzer der Tabelle nicht braucht, sollten zur Vermeidung von Unklarheiten einfach von vornherein ausgeblendet werden.

Ach ja, netter Nebeneffekt: Selbstverständlich wird die Tabelle mit den Zuordnungen von mir regelmäßig wiederverwendet und das spart in der Tat eine Menge Zeit.

Fragen? Anregungen? Einfach eine Nachricht hinterlassen und ich schaue, was ich machen kann.

Power Query: Eine Einführung (Teil 2)

Quellen zusammenführen

Neben dem Import von Daten kann Power Query aber noch einiges mehr. In der Theorie haben wir natürlich das perfekte Data Warehouse, welches alle Daten in aufbereiteter Form zur Verfügung stellt, aber die Praxis zeigt doch immer wieder, dass Ad-Hoc-Berichte aus Bestandsdaten gemischt mit anderen Quellen erstellt werden müssen.

Wir erinnern uns an den externen Parter aus Teil 1, der uns die CSV-Dateien zugesandt hat. Wir wollen nun die Austausch-Kunden-ID durch die echte ersetzen. Letztere wird in unserem DWH zusammen mit anderen Informationen zum Kunden gespeichert und könnte nach einem ersten Import mit Power Query etwa folgendermaßen aussehen:

Power Query-Fenster 3

Verwenden wir nun die Funktion „zusammenführen“ um zwei Abfragen zu kombinieren. Im ersten Schritt müssen die Spalten ausgewählt werden, auf deren Basis ein Bezug hergestellt wird. In unserem Fall ist das die Übergangs-ID. Dann können wir uns entscheiden, ob alle Daten verwendet werden sollen oder nur Übereinstimmungen. Wir entscheiden uns hier für Option 2:

Power Query-Fenster 4

Was wir nun erhalten ist eine neue Abfrage, in der wir die zu übernehmenden Spalten aus der angefügten Tabelle selektieren können; im Beispiel hier waren das Name und Vorname. Das Ergebnis sieht dann so aus:

Power Query-Fenster 5

Mit Power Query haben wir also eine großartige Möglichkeit, Daten aus verschiedenen Quellen zusammenzuführen. Im Gegensatz zum SVERWEIS ist diese Möglichkeit auch wesentlich stabiler und flexibler.

Fazit

Power Query ist zwar nicht die perfekte Basis für eine unternehmensweite Strategie im Berichtswesen, aber es ist ein gutes Werkzeug, wenn schnell und auf unkomplizierte Weise Datenquellen importiert und verknüpft werden müssen.

In weiteren Beiträgen werde ich Schritt für Schritt zeigen, wie man Daten aus verschiedenen Quellen importieren, ändern und zusammenführen kann.

Fragen, Anregungen, Kritik, Wünsche? Hinterlasst mir einfach einen Kommentar und ich schaue, was ich tun kann.

Power Query: Eine Einführung (Teil 1)

Was ist Power Query?

Seit einiger Zeit bietet Microsoft für alle Besitzer von Office Professional Plus das Excel-Addon Power Query an. Beworben wird es als DIE Lösung für den Import und das Verschmelzen von Daten aus verschiedenen Quellen.

Die werksmäßig mitgelieferte Unterstützung von Datenimporten beschränkt sich bei Excel hauptsächlich auf Microsoft-Quellen und Textdateien. Power Query hingegen bietet die Möglichkeit, Daten aus verschiedenen Quellen zu importieren:

  • MySQL
  • Oracle
  • Sybase
  • Salesforce
  • Hadoop
  • etc.

Quellen bearbeiten

Einige Formate, wie z. B. CSV, können schon jetzt von Excel importiert werden. Die Anpassung muss dann aber in einem zweiten Schritt erfolgen. Mit Power Query können Anpassungen schon während des Imports vorgenommen werden, wodurch das Endprodukt schon sauber zur Verfügung steht.

Nehmen wir dazu ein einfaches Beispiel. Ein externer Partner verkauft Wartungsverträge an Bestandskunden. Jeden Tag erhalten wir eine CSV-Datei mit den folgenden Informationen:

  • Kunden-ID: ######## (int)
  • Verkaufsdatum: yyyymmdd (int)
  • Agenten-ID: ### (int)
  • ID des verkauften Vertrags: ###### (int)

Ein normaler Import würde den folgenden Datensatz produzieren:

Customer ID Date Agent ID Contract ID
52689425 20150228 23 653392
23485621 20150228 12 653392
13894651 20150228 15 653393
12346925 20150228 23 653392
96423678 20150228 16 653393
32649821 20150228 16 653392
36485196 20150229 23 653392
73915864 20150229 12 653392
67895126 20150301 15 653393

Auffällig ist zunächst das rein ID-basierte Datenformat. Zusätzlich nehmen wir jetzt an, dass wir unserem Partner aus Datenschutzgründen lediglich eine Austausch-Kunden-ID übermitteln. Glücklicherweise bietet PowerQuery hier genau die Möglichkeit, die wir brauchen. Ich möchte an dieser Stelle nur einen kurzen Überblick verschaffen, über die genauen Schritte werde ich in weiteren Artikeln eingehen. So in etwa könnten unsere Daten nach dem Import aussehen:

Power Query-Fenster 1

Ein paar Änderungen später bekommen wir dann folgendes heraus:

Power Query-Fenster 2

Im Prinzip ist das nichts, was man nicht auch mit Bordmitteln von Excel erreichen könnte, aber mit einem sehr klaren Vorteil. Nach einem Klick auf „Schließen & Laden“ werden die Daten direkt in das Datenmodell von Excel importiert und falls später neue Datensätze in der CSV-Datei hinzukommen, genügt eine einfache Aktualisierung, damit diese ebenfalls geladen werden; inklusive aller Veränderungen.

In Teil 2: Quellen zusammenführen werde ich auf die Möglichkeit eingehen, Daten mit Hilfe von PowerQuery zu verknüpfen.

Across: Terminologie verwalten (Teil 1)

Einleitung

Vermutlich unbestreitbar ist, dass es grundlegend für den Übersetzer ist, die Bedeutung von Wörtern in einer anderen Sprache zu kennen. Übersetzer werden kaum bestreiten, dass es ohne Kontext oft unmöglich ist, die Bedeutung eines Wortes in einer anderen Sprache zu kennen.

Es gibt dutzende von Beispielen, aber nehmen wir doch das deutsche Wort „Bremse“. Im Englischen kann es mit „brakes“ oder mit „horse-fly“ übersetzt werden; in der Tat ein nicht ganz kleiner Unterschied. Zugegeben, das Beispiel ist sehr einfach gewählt, aber kommen wir nun zu einem anderen. Das deutsche Wort „Tempomat“ wird meist für „cruise control“ verwendet, ist aber ein Warenzeichen von Mercedes-Benz. Es wäre also kaum ratsam, dieses Wort bei einem anderen Hersteller zu verwenden. Diese beiden Beispiele zeigen, dass der Kontext sich nur auf das Fachgebiet bezieht, sondern eine Vielzahl von Attributen eines Terms einschließen kann.

Kurz gesagt, je mehr Attribute man innerhalb eines Terms zur Verfügung stellt, desto einfacher fällt die Entscheidung, welche Übersetzung korrekt ist. Im ersten Teil dieser Reihe möchte ich anhand der obigen Beispiele zeigen, wie man mit crossTerm Attribute verwendet, um so einen Eintrag oder Term genauer zu bestimmen.

Terminologie in crossTerm

Die Standardeinstellungen von Across geben zwei Arten der Klassifizierung vor: Fachgebiet und Relation. Das Fachgebiet kann alles von „Mode“ bis „IT“ sein, wohingegen sich die Relation auf einen bestimmten Kunden oder ein Produkt beziehen kann. Da Theorie ziemlich langweilig sein kann, wollen wir doch direkt einmal in die Praxis einsteigen und aus den obigen Beispielen Einträge erstellen. Bevor wir diese Einträge erstellen können, benötigen wir die Fachgebiete „Biologie“ und „Technik“ (alternativ auch „Technik – KFZ“ als Untergebiet von „Technik“), sowie die Relation „Mercedes-Benz“ (zur Erstellung dieser Werte, siehe Across-Benutzerhandbuch).

Erster Satz Einträge: Bremse und die englischen Übersetzungen

Der erste Teil ist ziemlich einfach. Der erste Eintrag hat das Fachgebiet „Biologie“ und enthält den deutschen Term Bremse (Fachgebiet: Biologie) sowie den englischen Term horse-fly (Fachgebiet: Biologie). Der zweite Eintrag hat das Fachgebiet „Technik“ und enthält den deutschen Term Bremse (Fachgebiet: Technik) sowie den englischen Term brakes (Fachgebiet: Technik).

Beim Anlegen des zweiten Eintrags mit dem Term Bremse wird Across unter Umständen nachfragen, ob die beiden Einträge verschmolzen werden sollen. Das verneinen wir natürlich, da die Einträge semantisch nichts miteinander zu tun haben.

Zweiter Satz Einträge: cruise control und die deutschen Übersetzungen

An dieser Stelle wird es ein bisschen kniffliger, denn mehrere Szenarien müssen bedacht werden. Die gute Nachricht zuerst: wir benötigen natürlich nur einen Eintrag mit dem Fachgebiet „Technik“. Eine Relation wird an dieser Stelle nicht gesetzt, denn die Funktion „automatisch die Geschwindigkeit halten“ ist per se mit keinem Hersteller verknüpft. Zuerst werden wir den englischen Term cruise control (Fachgebiet: Technik) sowie die deutschen Termini Geschwindigkeitsregelanlage (Fachgebiet: Technik) und Tempomat (Fachgebiet: Technik; Relation: Mercedes-Benz) hinzufügen.

Möchte man es jetzt noch ein bisschen genauer machen, dann erstellt man einen weiteren deutschen Term Tempomat (Fachgebiet: Technik) und gibt diesem die Verwendung: Unwort. Falls nun jemand durch Einträge schaut ist völlig klar, dass Tempomat in der Relation Mercedes-Benz eine korrekte Übersetzung, ohne Relation aber ein Unwort ist.

Ein Ausblick auf Teil 2

In Teil 2 dieser Reihe werde ich erklären, wie man mit Hilfe von Attributen und der Filterfunktion die Vokabelsuche in crossDesk verbessern kann. Wie immer gilt natürlich, dass bei Fragen gerne die Kommentarfunktion genutzt werden kann. Ich werde dann versuchen, so schnell wie möglich zu antworten.

Across: creating HTML/XML templates

The first question you might ask when talking about templates in Across is: why should I invest my precious time in creating something that already exists? While it is true that Across comes with templates to segment HTML and XML, you should always keep in mind that those templates are for standard use and thus pretty generic. I for instance created my own for a knowledge system that uses basic HTML only. This means there will be no scripting and nearly no attributes that have to be translated. So for the sake of code safety it is much easier to simply hide everything the translators will never need. It makes work for them easier and it makes me sleep better.

The following text refers to HTML, but it is exactly the same for XML

So let us have a look into that special case of restricted HTML, because it shows which steps need to be taken to create a good template. First of all you need to determine which tags will be used in your documents. In my case that is:

  • br, hr
  • div, p, table, tbody, tr, td
  • span, a

As you can see, all forms of text formatting is done via the span tag, which reduces the amount of tags we need a lot. Now we can proceed to determining the attributes we will need to translate. Attributes are added based on tags, so in my case that is:

  • a: href, name

Everything else has attributes which should not be touched. Span for instance is used to allocate CSS styles. One could debate whether it is a good idea to translate href and name (for document internal links), but an author who doesn’t speak my language will find it incredibly hard to work with German anchor names.

Now to the practice part. In the menu bar, go to Tools > System settings and in the tree Document settings to the left, select Tagged HTML or Tagged XML, depending on what you need. There click New to create a new filter template.

Let’s start by adding a new HTML tag by clicking on Add. The name you see there is the tag, so let’s start with br. Content type will be empty, because there is nothing in between br tags. It’s the same for hr, by the way. Element type is set to external, because we won’t find br (or hr) in the middle of a sentence. This might of course be different in your setting, but external means that the tag will not be found inside a sentence. The consequence is that an external tag provokes a new segment.

We will keep the external setting to unconditional, but we will change it from normal to hidden. Hidden means that the tag will not appear for the translator, but it will be saved and later exported to the translated document. So why can we hide those tags? The reason is pretty simple. The position of these tags is defined by the end of the previous segment and the beginning of the next segment and there is nothing to translate in there. This reduces the overall chance to meddle with tags and cause damage.

Next we will move to div, p, etc. Those are external tags as well, because they all divide the document. They are also unconditional, but they are normal and not hidden. If you hide these tags, then Across will think that everything between <p> and </p> needs to be hidden, which is clearly not what we intend. After all the text between those tags needs to be translated. Will your text be full of useless tags? The answer is no. By making this tag external we told Across that this tag will not be found inside a sentence, which means it’s not relevant for translation. Therefore Across will automatically hide it from the translator.

The last set of tags is span and a. Both may appear inside a sentence, which is why they need to be set to internal and normal. Setting a tag to internal will make it visible in crossDesk, but the tag itself can still not be changed by the translator. All he can do is move the position around, which is useful because links and certain formats can appear at different places in a translation. Small hint: adding the tag to the target editor can be done by double clicking on the tag in the segment window.

Now to the next part, attributes. Attributes are parts of code found inside tags, but not all need to be translated. If you don’t need it translated, just don’t add it and Across will handle it by itself. In my case the href and the name attributes will need to be translated for the reasons mentioned earlier. All we need to do for that is select the a tag in the list and click Edit. Then we click the Attribute tab and Add. Now enter a name and click Save. You will now be able to select the attribute in the list and choose Translatable. This will mean that the attribute can be translated so if I have an anchor with name=“Anker“, Across will show that Anker can be translated.

The last settings can be found by clicking on Configure. In Splitting properties I activated splitting of paragraphs into sentences, because most of the time, the number of sentences will be equal in source and target text. Of course there will be exceptions, but it’s always possible to merge segments. Removing white spaces is a bit more tricky, though. When I tried that with my test documents, certain tags were not treated correctly and thus not the whole text was shown. If I ever find out why, I’ll update this document. In Advanced Settings you will a lot of – as the name suggests – advanced options. Script translation is not important in my case and charset and encoding should be set to never change. The target documents will be used in the same knowledge base as the source documents, so nothing needs to be changed. The standard element type is not important as well, because only a very restricted set of HTML will be used. Convert character entities is completely deactivated in my case, because the document encoding supports every special character used in the documents. What I activated in my case is Normalize white spaces, because contrary to removing white spaces in the Splitting properties, this doesn’t seem to affect tags.

So that’s it. We created a custom template that helps us filter custom HTML or XML documents. It makes translating easier because you don’t see every part of the code and it makes the code safer because things that should not be changed are simply locked.

Questions? Like? Hate? Feel free to comment and I will try to answer as soon as possible or edit my text.

Läuft mit WordPress & Theme erstellt von Anders Norén