Страницы: 1
RSS
Подставить год к дате (в идеале в Power Query)
 
Помогите пожалуйста.
Есть 2 колонки в одной период в формате 18\19 год
В другой дата 01.02
Как по подрядку проставить сначала до 31.12 - 18 год, а потом 19.
Возможно ли в формате даты использовать дату без года, только число и месяц? (У меня только в текстовом формате записало :( )
 
.
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    Split = Table.SplitColumn(Source, "Столбец1", Splitter.SplitTextByDelimiter("/", QuoteStyle.Csv), {"c", "d"}),
    Index = Table.AddIndexColumn(Split, "Индекс", 0),
    Changed = Table.TransformColumnTypes(Table.TransformColumns(Index,{{"Столбец2", each _&".2018"}}),{{"Столбец2", type date}}),
   Index1 = Table.AddIndexColumn(Changed, "Индекс.1", 1),
    Merged = Table.NestedJoin(Index1,{"Индекс.1"},Index1,{"Индекс"},"b",JoinKind.LeftOuter),
    Expanded = Table.ExpandTableColumn(Merged, "b", {"Столбец2"}, {"Столбец2.2"}),
    Custom1 = Table.AddColumn(Index, "a", each if [Индекс] <= List.Min( List.RemoveLastN(Table.AddColumn
    (Expanded, "a", each if [Столбец2.2] < [Столбец2] then [Индекс] else null)[a],1)) then [c] else [d]),
    Merged1 = Table.CombineColumns(Custom1,{"Столбец2", "a"},Combiner.CombineTextByDelimiter(".", QuoteStyle.None),"b"),
    Changed1 = Table.TransformColumnTypes(Merged1,{{"b", type date}})[[b]]
in
    Changed1
 
artyrH, В который раз огромное спасибо. Как только у вас получаеться решать такие задачки :)
 
еще вариант
Код
let
    Source = 
        Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    Grouped =
        Table.Group(
            Source, 
            {"Столбец2"}, 
            {{"a", each _, type table}},
            0,
            (a,b)=>let c=(s)=>Number.From(Text.AfterDelimiter(s,".")) 
                   in Number.From(c(b[Столбец2])<c(a[Столбец2]))
        )[a],
    fn=(i)=>
        Text.Split(Grouped{0}{0}[Столбец1],"/"){i},
    Transformed = 
        List.Generate(()=>
            [i=0,year=fn(i)],
            each [i]<List.Count(Grouped),
            each [i=[i]+1,year=fn(i)],
            each 
                let 
                    year=[year], 
                    addyear=Table.TransformColumns(Grouped{[i]},{{"Столбец2", each Date.From(_&"."&year)}}) 
                in Table.TransformColumnTypes(addyear,{{"Столбец2",type date}})),
    Combined = 
        Table.Combine(Transformed)
in
    Combined
Изменено: Андрей Лящук - 09.01.2020 16:40:45
 
И еще вариантик:
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    GroupedRows = Table.Group(Source, {"Дата"}, {{"таб", each _, type table}}, GroupKind.Local, (a,b) => Number.From( Number.From( Text.End( a[Дата], 2 ) ) > Number.From( Text.End( b[Дата], 2 ) ) ) ),
    AddedIndex = Table.AddIndexColumn(GroupedRows, "Индекс", 0, 1)[[Индекс],[таб]],
    Expanded = Table.ExpandTableColumn(AddedIndex, "таб", {"Год", "Дата", "Нужно"}, {"Год", "Дата", "Нужно"}),
    AddedCustom = Table.AddColumn(Expanded, "нужно", each Date.From( [Дата] & "." & Text.Split( [Год], "/" ){[Индекс]} ), type date )
in
    AddedCustom

З.Ы. О, сразу не глянул, а у Андрея практически тот ж алгоритм.
Андрей Лящук, а зачем в List.Buffer тащите список таблиц? Оно же с составными элементами не работает. В память, если мне не изменяет мой склероз, пишутся только скалярные элементы списка, составные все равно лениво вычисляются.
Изменено: PooHkrd - 09.01.2020 11:39:32
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
зачем в List.Buffer тащите список таблиц? Оно же с составными элементами не работает.
Не до конца проснулся еще, видимо, когда писал.
 
PooHkrd, добрый день.
Код ваш понятен, кроме последней строчки кода (перед in)
Подскажите, пожалуйста, почему для индекса 0 проставляется 18, а для 1 соответственно 19
Я правильно понимаю, что индекс 0  как "ложь" , а 1 как "истина" по аналогии с формулами или принцип другой?
Благодарю
 
Дико извеняюсь. Но как оказалось я не совсем корректно поставил задачу :(
В таблице более широкий дапозон дат. с 2010 года и в некоторых случаях год указывается одинковый.
Сформировал более правильный пример.
Очень благодарен всем за помощь.  
Страницы: 1
Наверх