Posts

Empfohlener Beitrag

nützliche Text Funktionen in Power Query

Bild
Im Folgenden werden ein paar in der Praxis nützliche Text Funktionen in Power Query aufgelistet. Im Voraus soll darauf hingewiesen werden, dass es 2 wesentliche Unterschiede zwischen Excel und Power Query Formeln / Funktionen gibt: case sensitivity Excel Formel unterscheiden nicht zwischen Groß- und Kleinschreibung, Power Query Formeln indes schon. Wenn eine Power Query Signatur Text.Range vorgibt, dann wird TEXT.RANGE oder text.range nicht funktionieren (case sensitive). Basis 1 versus Basis 0 Excel Formeln / Funktionen beziehen sich immer auf die Basis 1, d.h. man fängt mit 1 an zu zählen. Auf der anderen Seite startet das Zählen in einer Power Query Funktion immer mit 0, nicht 1. Vergleich Excel Text mit Power Query Funktionen Text.Contains(Text,Suchstring) gibt TRUE zurück, wenn <Suchstring> in <Text> beinhaltet ist, andernfalls FALSE z.B. Text.Contains("Power Query","Query") Rückgabewert = TRUE Text.Remove([Column],{"

Power BI,Power Pivot, DAX dynamischen Kalender erstellen

in Power BI Desktop in die Modellansicht wechseln, neue Tabelle -> DAX einfügen:  --- SCHNIPP ---  Kalender_DAX =   //VAR StartDatum = EDATE(TODAY(),-48)  //VAR EndDatum = EDATE(TODAY(),48)  //VAR StartDatum =DATE(2013,1,1)  //VAR EndDatum = DATE(2014,12,31)  //oder mit DAX Funktionen FIRSTDATE,LASTDATE   VAR StartDatum = FIRSTDATE(Min_Datum[Min_Datum])  VAR EndDatum = LASTDATE(Max_Datum[Max_Datum])    RETURN     ADDCOLUMNS(         CALENDAR(StartDatum,EndDatum),         "Jahr", YEAR([Date]),         "Jahr Monat", YEAR([Date])  &"."& MONTH([Date]),         "Quartal", QUARTER([Date]),         "Monat", MONTH([Date]),         "Monatsname", FORMAT(MONTH([Date]),"mmmm"),         "Tag", DAY([Date]),         "KW", WEEKNUM([Date],1),         "Datum Datenschnitt", IF([Date]=TODAY(), "HEUTE",                             IF([Date] = TODAY()-1, "Gestern",              

Power Query, Geodaten auf Basis Adressdaten ermitteln (Längengrad, Breitengrad)

Bild
wiederverwendbare Funktion zur Ermittlung von Längen- und Breitengrad auf Basis von Adressdaten neue, leere Abfrage erstellen -> Code kopieren, Funktion umbenennen (zB fxGetLonLat) --- SCHNIPP --- let     GetCoordinates = (address as text) =>     let         // Hier verwenden wir eine Webabfrage, um die Koordinaten zu ermitteln.         // Diese Methode nutzt öffentliche Geodatenquellen.         url = "https://nominatim.openstreetmap.org/search?format=json&q=" & Text.From(address),         response = Web.Contents(url),         json = Json.Document(response),         coordinates = if List.Count(json) > 0 then json{0} else null,         latitude = if coordinates <> null then coordinates[lat] else null,         longitude = if coordinates <> null then coordinates[lon] else null     in         [Latitude = latitude, Longitude = longitude] in     GetCoordinates --- SCHNAPP --

Power Pivot, ersten Wert pro Gruppe über alle Gruppen summieren

Bild
  DAX Formel für measure: --- SCHNIPP --- SollStd_Gesamt:= SUMX ( SUMMARIZE ( Tabelle2; Tabelle2[Arbeitsplatz]; "SollStd_ErsterWert" ; FIRSTNONBLANK (Tabelle2[SollStd]; 1) ); [SollStd_ErsterWert] ) --- SCHNAPP ---

Power Query, Telefonnummer formatieren

 Basis Code zum Formatieren von Telefonnummern --- SCHNIPP --- (phoneNumber as text) =>         let             // Entfernen von Leerzeichen aus der Telefonnummer             // zugelassene Zeichen siehe 2ter Parameter Funktion Text.Select()             strippedPhoneNumber = Text.Select(phoneNumber, {"0".."9","(",")","-"}),             // Überprüfen, ob die Telefonnummer mit einer Ländervorwahl beginnt             startsWithPlus = Text.StartsWith(strippedPhoneNumber, "+"),             // Wenn die Telefonnummer mit einer Ländervorwahl beginnt, wird sie zurückgegeben             formattedPhoneNumber = if startsWithPlus then strippedPhoneNumber else "+" & strippedPhoneNumber in     formattedPhoneNumber --- SCHNAPP ---

Power Query, leere Spalten dynamisch entfernen

Bild
  --- SCHNIPP --- let     Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],          RemoveBlankColumns =                  let             BlankCols = List.Transform(Table.ToColumns(Quelle), each List.IsEmpty(List.RemoveNulls(_))),             TabCols = Table.ColumnNames(Quelle),             RemoveCols = List.Transform(List.PositionOf(BlankCols, true, Occurrence.All), each TabCols{_})         in              Table.RemoveColumns(Quelle, RemoveCols) in     RemoveBlankColumns ---SCHNAPP ---

Power Query, bestimmtes Arbeitsblatt je Excel Datei von allen Excel Dateien in einem Ordner anbinden

Bild
  neue Abfrage erstellen und in zB fxFolderFiles umbenennen --- SCHNIPP --- (FolderPath as text, WorksheetName as text) =>     let         Source = Folder.Files(FolderPath),         ExcelFiles = Table.SelectRows(Source, each ([Extension] = ".xlsx")),         ContentNameSpalte = Table.SelectColumns(ExcelFiles,{"Content", "Name"}),         ContentSpalte = Table.AddColumn(ContentNameSpalte, "Custom", each Excel.Workbook([Content],true)),         Arbeitsblatt = Table.AddColumn(ContentSpalte, WorksheetName, each [Custom]{[Name=WorksheetName]}[Data]),         Tabellen = Table.SelectColumns(Arbeitsblatt,{WorksheetName})     in         Tabellen --- SCHNAPP ---

Normalzeit in Industriezeit (Dezimalzahl) umrechnen und umgekehrt

Bild
  Normalzeit in Industriezeit (Dezimalzahl) umrechnen --- SCHNIPP --- (time as text) as number => let     timeList = Text.Split(time, ":"),     hour = Number.FromText(timeList{0}),     minute = Number.FromText(timeList{1}),     second = Number.FromText(timeList{2}),     decimalTime = hour + minute/60 + second/3600 in     decimalTime --- SCHNAPP --- Industriezeit in Normalzeit umrechnen --- SCHNIPP --- (dezUhrzeit as number) as text =>  let     timelist= Text.Split(Text.From(dezUhrzeit),","),     hours = Text.PadStart(timelist{0},2,"0"),     minute = Text.PadStart(Text.From(Number.RoundDown(Number.Mod(dezUhrzeit * 60,60),0)),2,"0"),     second = Text.PadStart(Text.From(Number.RoundDown(Number.Mod(dezUhrzeit * 3600,60),0)),2,"0"),     normaltime = hours &":"& minute &":"& second in     normaltime --- SCHNAPP ---