Я создаю регулярный отчет с помощью PowerQuery в Excel, который поворачивает данные.Сводная таблица содержит последние четыре квартала в качестве имен столбцов в порядке дат (например, 30/09/2018, 31/12/2018, 31/03/2019, 30/06/2019).Значения в каждом столбце даты являются числовыми.Каждый раз, когда запускается отчет, имена столбцов будут меняться, потому что ... новые даты!
Строки представляют разные объекты (например, Банк Мамы, Банк Папы, Банк Дедушки).Мне нужно создать несколько производных столбцов, которые рассчитывают разницу между столбцами последнего квартала (последний столбец) и столбцами предыдущего квартала (например, движение за 3 месяца, движение за 6 месяцев).Вот некоторые примерные данные:
Вот как будут выглядеть данные перед сводкой:
Entity_Name Quarter Date Value
Bank of Dad 30/09/2018 4
Bank of Dad 31/12/2018 2
Bank of Dad 31/03/2019 3
Bank of Dad 30/06/2019 3
Bank of Grandpa 30/09/2018 4
Bank of Grandpa 31/12/2018 6
Bank of Grandpa 31/03/2019 1
Bank of Grandpa 30/06/2019 2
Bank of Mum 30/09/2018 5
Bank of Mum 31/12/2018 5
Bank of Mum 31/03/2019 4
Bank of Mum 30/06/2019 4
И после сводки:
Entity_Name 30/09/2018 31/12/2018 31/03/2019 30/06/2019
Bank of Grandpa 4 6 1 2
Bank of Mum 5 5 4 4
Bank of Dad 4 2 3 3
И воткуда бы я хотел попасть (последний квартал минус три месяца назад и шесть месяцев назад):
Entity_Name Movement (3 months) Movement (6 months)
Bank of Grandpa 1 -4
Bank of Mum 0 -1
Bank of Dad 0 1
Я хорошо поохотился в Интернете и нашел похожие, но не совсем там примеры (обычно для переименования столбцов или фильтрации значений из столбцов).Моя проблема на самом деле намного проще, чем то, что я обнаружил, поэтому я чувствую, что это должно быть относительно просто, и я просто упускаю что-то очевидное, что никто не должен был задавать вопросы.Я - девушка-панда / питон, работающая в PowerQuery впервые (мне нужно передать ее клиенту для регулярного запуска, поэтому мне нужен отчет, чтобы «говорить» на их языке - то есть в Excel). PowerQuery действительно делает некоторые вещихорошо (присоединяется и группируется в Excel? - Круто!).Другие вещи немного драки - вот так!
Я смотрел на эту проблему двумя способами - во-первых, попробуйте сделать это до разворота, чтобы я не боролся с изменением имен столбцов.Это кудрявый.Возможно, было бы проще, если бы существовала только одна сущность, но несколько сущностей усложняют ее.Мой предпочтительный подход, согласующийся с тем, как этот отчет был ранее написан (в Excel, не используя мощный запрос), состоит в том, чтобы извлекать столбцы из сводных данных.Чтобы сделать это, мне нужно будет ссылаться на столбцы по позициям при добавлении новых столбцов.
Если я смогу решить проблему получения возвращаемого столбца, который содержит значения другого столбца через позиционную ссылку, то яНа 99% пути, поэтому я ищу помощь для решения этой конкретной части проблемы.
то есть, чтобы добраться до этой точки, используя позиционную ссылку для столбца (а не явное имя столбца):
Entity_Name 30/09/2018 ... Values_in_col_1
Bank of Dad 4 ... 4
Bank of Grandpa 4 ... 4
Bank of Mum 5 ... 5
Вот что я попробовал:
let
Source = Excel.CurrentWorkbook(){[Name="Table14"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Entity name", type text}, {"Quarter date", type date}, {"Value", Int64.Type}}),
#"Sorted Rows" = Table.Sort(#"Changed Type",{{"Entity name", Order.Ascending}, {"Quarter date", Order.Ascending}}),
#"PrevTable" = Table.Pivot(Table.TransformColumnTypes(#"Sorted Rows", {{"Quarter date", type text}}, "en-NZ"), List.Distinct(Table.TransformColumnTypes(#"Sorted Rows", {{"Quarter date", type text}}, "en-NZ")[#"Quarter date"]), "Quarter date", "Value", List.Sum),
#"Column names" = Table.ColumnNames(#"PrevTable"),
#"Test 1" = Table.AddColumn(#"PrevTable", "Test1", each #"Column names"{1}),
#"Test 2" = Table.AddColumn(#"Test 1", "Test2", each Table.SelectRows(#"PrevTable", each(Record.Field(_,Table.ColumnNames(#"PrevTable"){1}))))
in
#"Test 2"
Тест 1: Мне удалось добраться до точки, где я могу создать список имен столбцов и ссылаться на них по индексу- но возвращается возвращаемый столбец значений, которые являются именем столбца, а не фактическими значениями!Ха-ха.
Тест 2: я также попробовал эту другую вещь, чтобы посмотреть, могу ли я получить значения строк (пытаясь переделать код, который я обнаружил, который также должен был фильтровать), но который возвращает таблицу без столбцов вЭто.
Вот таблица, которую я получаю из этого кода:
Entity_Name 30/09/2018 ... Test1 Test2
Bank of Dad 4 ... 30/09/2018 [Table]
Bank of Grandpa 4 ... 30/09/2018 [Table]
Bank of Mum 5 ... 30/09/2018 [Table]
И если я нажму на значения 'Table', я получу ответ этого типа:
Expression.Error: Мы не можем преобразовать значение 4 в тип Logical.
Любая помощь будет принята с благодарностью - так много инструментов для изучения, так мало мозгов!