Last active
January 25, 2019 13:42
-
-
Save DmitriyVlasov/020f681667fd105d912a2f49d3c0ad48 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Пример использования функции получения Производственного календаря: | |
// | |
// источник взят отсюда: http://data.gov.ru/opendata/7708660670-proizvcalendar | |
// На момент 24.05.2018 в календаре содержатся описание праздников с 1999 года по 2025 год. | |
// | |
// let | |
// PROD_СALENDAR_URL = | |
// "https://data.gov.ru/opendata/7708660670-proizvcalendar/data-20181017T0930-structure-20181017T0930.csv?encoding=UTF-8", | |
// ProductionCalendar = getProductionCalendar( PROD_СALENDAR_URL ) | |
// in | |
// ProductionCalendar | |
/////////////////////////////////////////////////////////////////////////// | |
let | |
getProductionCalendar = ( URL as text ) as nullable table => | |
let | |
MONTHS_ORDERED_BY_DEFAULT = { | |
"Январь", "Февраль", "Март", | |
"Апрель", "Май", "Июнь", | |
"Июль", "Август", "Сентябрь", | |
"Октябрь", "Ноябрь", "Декабрь" | |
}, | |
GetDataFromGovRu = | |
Csv.Document( | |
Web.Contents( URL ), | |
[ Delimiter = ",", | |
Encoding = 65001, | |
QuoteStyle = QuoteStyle.None ] | |
), | |
#"Повышенные заголовки" = | |
Table.PromoteHeaders( GetDataFromGovRu ), | |
#"Переименовали поле в год" = | |
Table.RenameColumns( #"Повышенные заголовки", | |
{ | |
{"Год/Месяц", "Год"} | |
} | |
), | |
#"Выбрали год и месяц" = | |
Table.SelectColumns( #"Переименовали поле в год", | |
{ "Год" } & MONTHS_ORDERED_BY_DEFAULT | |
), | |
#"Спрямили календарь" = | |
Table.UnpivotOtherColumns( #"Выбрали год и месяц", | |
{ "Год" }, "Месяц", "День" | |
), | |
#"Добавили номер месяца" = | |
Table.AddColumn( #"Спрямили календарь", "НомерМесяца", each | |
1 + List.PositionOf( MONTHS_ORDERED_BY_DEFAULT, [Месяц] ), | |
type number | |
), | |
#"Преобразовали строку дат в список" = | |
Table.TransformColumns( #"Добавили номер месяца", | |
{ | |
{ "День", each Text.Split( _, "," ) } | |
} | |
), | |
#"Развернули список дней" = | |
Table.ExpandListColumn( #"Преобразовали строку дат в список", | |
"День" | |
), | |
#"Добавили сокращенный день" = | |
Table.AddColumn( #"Развернули список дней", "Сокращенный День", each | |
Text.Contains( [День], "*" ) | |
), | |
#"Добавили выходной день" = | |
Table.AddColumn( #"Добавили сокращенный день", "Выходной День", each | |
not [Сокращенный День] | |
), | |
#"Удалили признак сокращенного дня" = | |
Table.ReplaceValue( #"Добавили выходной день", | |
"*", "", Replacer.ReplaceText, { "День" } | |
), | |
#"Уточнли тип полей календаря" = | |
Table.TransformColumnTypes( #"Удалили признак сокращенного дня", | |
{ | |
{ "Год", Int64.Type }, | |
{ "День", Int64.Type }, | |
{ "НомерМесяца", Int64.Type } | |
} | |
), | |
#"Рассчитали дату" = | |
Table.AddColumn( #"Уточнли тип полей календаря", "Дата", each | |
#date( [Год], [НомерМесяца], [День] ) | |
) | |
in | |
#"Рассчитали дату" | |
in | |
getProductionCalendar |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment