Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
let func = (Kalenderjahr as number) as table =>
let
//Liste aller Bundeländer für den Aufbau der URL bei arbeitstage.org
List_Bundeslaender = {
"baden-wuerttemberg",
"bayern", "berlin",
"brandenburg",
"bremen",
"hamburg",
"hessen",
"mecklenburg-vorpommern",
"niedersachsen",
"nordrhein-westfalen",
"rheinland-pfalz",
"saarland",
"sachsen",
"sachsen-anhalt",
"schleswig-holstein",
"thueringen"
},
ToTable =
Table.FromList(
List_Bundeslaender,
Splitter.SplitByNothing(),
null,
null,
ExtraValues.Error
),
#"Umbenannte Spalten" =
Table.RenameColumns(
ToTable,
{
{
"Column1",
"BundeslaenderURL"
}
}
),
#"Geänderter Typ" =
Table.TransformColumnTypes(
#"Umbenannte Spalten",
{
{
"BundeslaenderURL",
type text
}
}
),
//Funktion für den Retrieve der Feiertage der Website
fnGetFeiertageJeBundesland =
(Bundesland as text, Jahr as number) =>
let
//Aufbau der parametrisierten URL
Quelle =
Web.Page(
Web.Contents("https://www.arbeitstage.org/" & Bundesland &"/feiertage-"& Text.From(Jahr) &"-"& Bundesland &"/")),
Data0 = Quelle{0}[Data],
#"Geänderter Typ" =
Table.TransformColumnTypes(
Data0,
{
{
"Feiertag",
type text
},
{
"Datum",
type date
},
{
"Wann",
type text
}
}
),
#"Entfernte Spalten" = Table.RemoveColumns(#"Geänderter Typ",{"Wann"}),
#"Hinzugefügte benutzerdefinierte Spalte" =
Table.AddColumn(
#"Entfernte Spalten",
"Bundesland",
each Text.Proper(Bundesland)
),
Output =
Table.ReplaceValue(
#"Hinzugefügte benutzerdefinierte Spalte",
"ue",
"ü",
Replacer.ReplaceText,{"Bundesland"}
)
in
Output,
GetFeiertage =
Table.AddColumn(
#"Geänderter Typ",
"Feiertage",
each fnGetFeiertageJeBundesland([BundeslaenderURL], Kalenderjahr)
),
#"Entfernte Spalten" =
Table.RemoveColumns(#"GetFeiertage",{"BundeslaenderURL"}),
#"Erweiterte Feiertage" =
Table.ExpandTableColumn(
#"Entfernte Spalten",
"Feiertage",
{
"Feiertag",
"Datum",
"Bundesland"
},
{
"Feiertag",
"Datum",
"Bundesland"
}
),
Output =
Table.TransformColumnTypes(
#"Erweiterte Feiertage",
{
{
"Datum",
type date
},
{
"Bundesland",
type text
},
{
"Feiertag",
type text
}
}
)
in
Output,
documentation =
[
Documentation.Name = "fnGetDeutscheFeiertageJeBundesland",
Documentation.Description =
"Liefert eine Tabelle mit den deutschen Feiertagen je Bundesland für das angegebene Jahr zurück ",
Documentation.Parameters = "Kalenderjahr vom Typ number",
Documentation.Category = " ",
Documentation.Author = " Lars Schreiber: www.ssbi-blog.de ",
Documentation.Examples =
{
[
Description = " " ,
Code = "fnGetDeutscheFeiertageJeBundesland(2020)",
Result = " "
]
}
]
in
Value.ReplaceType(func, Value.ReplaceMetadata(Value.Type(func), documentation))
@wittich
Copy link

wittich commented Oct 15, 2021

Works like a charm... just remember to set local to "Deutschand (Deutsch)" in the File menu > Options and settings > Query Options and there under Regional Settings. Otherwise, the type Date might can't be read correctly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment