Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 96 След.
"Проблема с преобразованием формулы Excel в Power Query"., "Не удается корректно преобразовать формулу Excel в Power Query для работы с датами".
 
Цитата
SShakeno0220 написал:
"DataFormat.Error: Не удалось выполнить синтаксический анализ входных данных, предоставленных в качестве значения даты. Сведения: 1999.2.30"
а у февраля есть 30 число?
Почему просто не сделать Date.AddMonths([Дата приема], 3)?
Да, 28.10.1998, 29.10.1998 и 30.10.1998 будут 28.02.1999

Если уж хотите по-вашему, то
Код
  #"Добавлен пользовательский объект" = Table.AddColumn (
    #"Измененный тип", 
    "Пользовательский", 
    each [ new_date = Date.AddMonths ( [Дата приема], 3 ), result = Date.AddDays ( new_date, Date.Day ( [Дата приема] ) - Date.Day ( new_date ) ) ][
      result
    ], 
    type date
  )


Но смотрите, что дает Ваша формула (и последний эквивалентный код в PQ): для более поздней даты истечение срока раньше :)


P.S. Вообще, поэтому сроки обычно задаются в днях, а не месяцах.
Изменено: surkenny - 17.04.2024 09:31:53
Power Query. Сводная таблица (столбец сведения) с использованием нескольких столбцов значений
 
Цитата
Nigle2 написал:
Какое более элегантное решение может быть для работы со столбцом сведения и несколькими столбцами значений?
Сводная таблица (обычная или Power Pivot, если будут нужны меры посложнее).
Не нужно этого делать в PQ. Он не для этого.
Power query более миллиона строк
 
ponrussell,
1. А нафига Вы данные на лист грузите? Загрузите только в модель.
2. А нафига Вы данные храните в файлах excel? Выгружайте в csv.
Там нет ограничения строк + чтение из csv гораздо быстрее.
Среднее значение прироста, Dax
 
mechanix 85, иногда для краткости лучше предикаты использовать :) И для вычисления "за текущий год" изменение контекста излишне:
просто CALCULATE ( [кол-во] ) вместо CALCULATE([кол-во];FILTER(ALL( 'Таблица1'[Год]);'Таблица1'[Год]=MAX('Таблица1'[Год])))

Я бы с помощью переменных попонятнее делал. А то длинно читать это все:
Код
av:=
AVERAGEX (
    VALUES ( 'Таблица1'[Год] );
    VAR PY = 'Таблица1'[Год] - 1
    VAR valueCY =
        CALCULATE ( [кол-во] )
    VAR valuePY =
        CALCULATE ( [кол-во]; 'Таблица1'[Год] = PY )
    VAR result =
        DIVIDE ( valueCY; valuePY )
    RETURN
        result
)


В случае CALCULATE ( [кол-во] ) CALCULATE излишний, так как [кол-во] - мера и неявно оборачивается в CALCULATE. Но лишний раз напомнить о преобразовании контекста строки в контекст фильтра - стоит :)
Изменено: surkenny - 01.04.2024 16:53:15
Выгрузка данных из Power Query в сводную таблицу Excel, Вопрос по выгрузке данных из Power Query в сводную таблицу Excel
 
Golubev.aa, а Вам никто не ответит. А если ответит, то это будет ложь :)
1. Лучше выгружать данные в модель данных (движок их там сохранит с заниманием меньшего объема памяти). Так же в этом случае Вы получаете огромный функционал Power Pivot с написанием сложных мер.
2. Ваш запрос грузится очень долго. И проблему просто так не понять. Это может быть и долгое получение большого объема данных с какого-то ресурса, и (более вероятно) Ваш неоптимальный код, и другие причины.
Скорее всего, Вы делаете какие-то расчеты в PQ не оптимально и/или их вообще не нужно там делать, а реализовать в PP.

P.S. Не нужно нас заставлять гадать по картинкам. Сделайте пример данных + файл с Вашим запросом из этого примера.
Изменено: surkenny - 06.03.2024 11:05:09
В Power Query при отмене свертывания столбцов исчезли строки с нулевыми значениями, В Power Query при отмене свертывания столбцов исчезли строки с нулевыми значениями
 
Цитата
AlienSx написал:
придать им действительно нулевое значение.
Ну это же не по-нашему :) Ведь замена null (которое ТС называет "нулевым") на 0 будет совсем не эквивалентна для дальнейшей аналитики :)
Можно просто погуглить:
Код
/**
 * Unpivots columns (or optional other columns) while keeping empty fields (with
 * null). Any entry to the 3rd parameter will set to 'Unpivot Other Columns'
 * instead.
 * 
 * @categories table, pivot
 * @author https://github.com/ImkeF
 * @source https://github.com/ImkeF/M
 * @license MIT (c) 2017 Imke Feldmann
 * @version 2021-02-09-1
 */
let
  func = (Table_ as table, Columns as list, optional Others as any) =>
    let
      NonSelectedColumns = List.Difference(Table.ColumnNames(Table_), Columns),
      Unpivot = if Others <> null then NonSelectedColumns else Columns,
      AddColumn = Table.AddColumn(
        Table_,
        "Custom",
        each Record.ToTable(Record.SelectFields(_, Unpivot))
      ),
      Cleanup = Table.RemoveColumns(AddColumn, Unpivot),
      Expand = Table.ExpandTableColumn(Cleanup, "Custom", {"Name", "Value"}, {"Name", "Value"})
    in
      Expand,
  documentation = [
    Documentation.Name = " Table.UnpivotKeepNulls#(cr,lf)",
    Documentation.Description
      = " Unpivots columns (or optional other columns) while keeping empty fields (with null). #(cr,lf)",
    Documentation.LongDescription
      = " Unpivots columns (or optional other columns) while keeping empty fields (with null). Any entry to the 3rd parameter will set to ""Unpivot Other Columns"" instead. #(cr,lf)",
    Documentation.Category = " Table Transformation#(cr,lf)",
    Documentation.Source = " local#(cr,lf)",
    Documentation.Author = " Imke Feldmann: www.TheBIccountant.com .#(cr,lf)",
    Documentation.Examples = {[Description = " #(cr,lf)", Code = " #(cr,lf) ", Result = " #(cr,lf)"]}
  ]
in
  Value.ReplaceType(func, Value.ReplaceMetadata(Value.Type(func), documentation))
Расчет цен для товаров, Расчет цен для товаров
 
Цитата
excelboy1 написал:
Необходимо чтобы функция автоматически выбрала необходимое значение для цены продажи товара (ЗЕЛЕНОЕ ВЫДЕЛЕНИЕ), условием истиности является % от закупки - 15% (голубые ячейки). Или процент от продажи 15% (желтые ячейки)
Так от чего именно нужен расчет? Вы руками будете вводить либо % от закупки, а % от продажи будет вычисляться по формуле (учитывая рассчитанную цену товара), либо наоборот.

* Если еще актуально - могу сделать любой из вариантов. В ЛС отправил стоимость.

Цитата
tolikt написал:
при данной постановке задачи она не решаема из-за циклических ссылок.
Не совсем так. Во-первых, можно в VBA/PQ просто перебрать цены и вернуть максимально соответствующую условию.
Ну или чуть громоздкой, но формулой :)
Установить связь между таблицами в power bi
 
Цитата
dim678 написал:
в таблице перестало считать другие параметры
Вам бы эту книжку почитать... Хотя, желательно перед этим DAX изучить, но все же.
В таблице Вы выводите измерения из одной из таблиц фактов, а нужно из справочника. Направление стрелочки на связях показывает направление фильтра. То есть таблица фактов никак не фильтрует справочники, которые, в свою очередь, фильтруют остальные таблицы фактов, поэтому Вы видите ожидаемое значение только у мер, которые используют данные этой таблицы фактов, а у остальных мер тупо вся сумма.
В визуалы выносите измерения ТОЛЬКО из справочников. Для удобства и избегания ошибок даже сделайте соответствующие столбцы в таблицах фактов скрытыми.
Установить связь между таблицами в power bi
 
dim678,
Во-первых, исправьте свой ник (уберите оттуда цифры).
Во-вторых, а если нормальную модель создать?
* Для Тип операции тоже создайте отдельный справочник.

НЕ используйте связь N:N до того момента, как Вы начнете понимать ее работу.
Изменено: surkenny - 07.02.2024 10:48:23
Создание отчета с использованием query и pivot
 
Написал в ЛС.

upd. ТС не устроила стоимость решения.
Видимо, решение найдено где-то в другом месте.
Изменено: surkenny - 31.01.2024 19:46:33
Как заменить null на 0 при отмене свертывания и далее
 
Цитата
Сергей написал:
Как убрать отражение на графике из  сводной с нарастающим итогом нарастающий итог после последней операции(на последнюю ненолевую дату)
На каком графике? У нас он есть? :) Мне вот неизвестно, какую Вы меру пишите для нарастающего итога. Может, проблема в ней?

* Не растягивайте сообщения. Зачем Вы пишите через строку, когда следующее предложение продолжает мысль предыдущего?
Как заменить null на 0 при отмене свертывания и далее
 
Цитата
Сергей написал:
Цель -- сделать по таблице в PQ сводную
PQ не для создания сводной... А как раз для получения плоской таблицы, из которой уже строить сводную.
Цитата
Сергей написал:
А исходно конечно талбичка составляется в экселе и пустые ячейки (например перерыв в финансировании или погашении   и  при оокнчании ) не отражаются в PQ при отмене свертывания  и посему нарастающий итог в сводной  и при составлении графика по ней уходит в бесконечность
Этот поток сознания я вообще не понял... Нафига Вам в плоском виде строки с null?
Каким образом нарастающий итог в сводной уходит в бесконечность?

* AlienSx, не хочу весь бред читать :)
1. ТС подойдет замена "n квартал yyyy" на дату "01.n*3.yyyy". Ну и календарь добавить со столбцами кварталов/годов-кварталов и тд в нужном формате.
2. ТС мало что понимает не только в M/DAX, а просто в том, как должны выглядеть данные (модель данных) для аналитики в BI.
Можно сделать платно под ключ.
Или ТС сам хоть как-то изучит тему. Иначе это бесконечные вопросы не по задаче, а по видению ТС решения задачи (скорее всего, неправильному видению) :)
Как заменить null на 0 при отмене свертывания и далее
 
В примере же нет null... Тупо можно null заменить на 0 кнопками...
Или можно просто погуглить :) Вот функция анпивота с сохранением null.
Код
let
  func = (Table_ as table, Columns as list, optional Others as any) =>
    let
      NonSelectedColumns = List.Difference(Table.ColumnNames(Table_), Columns),
      Unpivot = if Others <> null then NonSelectedColumns else Columns,
      AddColumn = Table.AddColumn(
        Table_,
        "Custom",
        each Record.ToTable(Record.SelectFields(_, Unpivot))
      ),
      Cleanup = Table.RemoveColumns(AddColumn, Unpivot),
      Expand = Table.ExpandTableColumn(Cleanup, "Custom", {"Name", "Value"}, {"Name", "Value"})
    in
      Expand,
  documentation = [
    Documentation.Name = " Table.UnpivotKeepNulls#(cr,lf)",
    Documentation.Description
      = " Unpivots columns (or optional other columns) while keeping empty fields (with null). #(cr,lf)",
    Documentation.LongDescription
      = " Unpivots columns (or optional other columns) while keeping empty fields (with null). Any entry to the 3rd parameter will set to ""Unpivot Other Columns"" instead. #(cr,lf)",
    Documentation.Category = " Table Transformation#(cr,lf)",
    Documentation.Source = " local#(cr,lf)",
    Documentation.Author = " Imke Feldmann: www.TheBIccountant.com .#(cr,lf)",
    Documentation.Examples = {[Description = " #(cr,lf)", Code = " #(cr,lf) ", Result = " #(cr,lf)"]}
  ]
in
  Value.ReplaceType(func, Value.ReplaceMetadata(Value.Type(func), documentation))
Подсчет стоимости остатки, Есть остатки товаров и надо подсчитат их общую стоимость по принципу средный взвешанный.
 
Цитата
Otabek228 написал:
ЛИФО же наооборот то есть Last in firs out.
Тут чуть-чуть логики нужно. Продаете Вы товар по FIFO (первым пришел, первым ушел). И его стоимость нужно вычислять по FIFO.
Но Вы же вычисляете стоимость остатков.
Можно "по-тупому": вычислить общую стоимость, стоимость проданного и найти разницу.
А можно схитрить. Подмените понятия: "остатки" - реально проданное, "проданное" - реальные остатки. Теперь у Вас "проданное" "продается" по LIFO.
Так что бочку на AlienSx не катите!
как сделать чтобы код аэропорта изменялся на полное наименование?, Нужна помощь
 
Цитата
nolegg написал:
коды Уфы потом добавлю
Да у Вас есть коды Уфы. Но они УФА UFA УВУУ. Нет кода UWUU (это транслит последнего кода; почти транслитерация, так как В в W преобразуем).
Можно тоже это сделать в запросе (чтобы UWUU автоматом добавился как транслитерация УВУУ, если есть правила транслитерации. Ну и аналогично для всех кодов кириллицей).

*Что-то мне кажется, что это тестовое задание :) Если совсем нет своих идей, то, может, и не стоит устраиваться? :)
Изменено: surkenny - 24.01.2024 12:40:08
как сделать чтобы код аэропорта изменялся на полное наименование?, Нужна помощь
 
В PQ:
запрос airports_codes
Код
let
  data     = Excel.CurrentWorkbook(){[ Name = "airport_codes" ]}[Content],
  unpivot  = Table.UnpivotOtherColumns ( data, { "Аэропорт" }, "Тип кода", "Код" ),
  distinct = Table.Distinct ( unpivot, { "Аэропорт", "Код" } ),
  typed    = Table.TransformColumnTypes ( distinct, { { "Аэропорт", type text }, { "Код", type text } } ),
  rec      = Record.FromList ( typed[Аэропорт], typed[#"Код"] )
in
  rec

запрос routes_1
Код
let
  data = Excel.CurrentWorkbook(){[ Name = "routes" ]}[Content],
  typed = Table.TransformColumnTypes ( data, { { "Маршрут", type text } } ),
  transform = Table.TransformColumns (
    typed,
    {
      {
        "Маршрут",
        ( x ) =>
          [
            split = Text.Split ( x, "-" ),
            tr    = List.Transform ( split, ( y ) => Record.FieldOrDefault ( airport_codes, y, y ) ),
            res   = Text.Combine ( tr, "-" )
          ][res],
        type text
      }
    }
  )
in
  transform

запрос routes_2
Код
let
  data      = routes_1, 
  value     = "УФА", 
  transform = Table.TransformColumns ( data, { { "Маршрут", ( x ) => Text.AfterDelimiter ( "-" & x, "-" & value & "-" ), type text } } ), 
  rename    = Table.RenameColumns ( transform, { { "Маршрут", "Из " & value & " в" } } )
in
  rename
как сделать чтобы код аэропорта изменялся на полное наименование?, Нужна помощь
 
nolegg, а вы откуда в последнем маршруте взяли Уфу?
Такого кода нет в справочнике кода: UWUU-UWWW

Предлагаю название темы: "В маршрутах заменить коды аэропортов на соответствующее наименование из справочника".
Изменено: surkenny - 24.01.2024 12:31:53
Оплата поставщикам в определённое число каждый месяц! (месяца текущие), Предварительная подсветка за два дня, за день и в день оплаты на одну дату но разные месяцы.
 
Цитата
ser-jo написал:
Наверное версия excel не позволяет такое сделать
Наверное, Вы не прочитали правила форума, раз не приложили пример данных и результата.
И из Вашего первого сообщения я при беглом прочтении ничего не понял. Если не понял - пройду мимо :) Скорее всего, так поступит большинство пользователей.

Например,
Цитата
ser-jo написал:
статический только день ... и дни разные
не находите в этом предложении противоречие?

Даже третий раз прочитав, я не понимаю, что Вам нужно. Заполнены даты, при дальнейших открытиях файла даты, в зависимости от текущей даты, должны сами поменяться на новый месяц? Или Вам нужно из одной начальной даты составить список платежных дней на весь период договора?
Короче, нужен пример.
PQ: разный тип суммирования в одном столбце
 
Цитата
0033s написал:
У вас ошибка в расчете.
Спасибо, что заметили. Только это не в расчетах ошибка, просто срез не был подключен к таблице. Исправился :)
Изменено: surkenny - 24.01.2024 10:38:04
PQ: разный тип суммирования в одном столбце
 
Цитата
Garrys написал:
подскажите, пожалуйста, как вы это сделали?
Что именно? Если про меры в столбце, то после добавления нескольких мер в сводную в столбцах появится поле «значения». Его перетащить в строки.
PQ: разный тип суммирования в одном столбце
 
Цитата
0033s написал:
Это вы про PP или PQ говорите ?
Странный вопрос.
Еще раз: у Вас в данных может быть много столбцов с данными о продажах: сумма, количество, себестоимость, вес, объем и тд. В моделе данных PP эти данные продаж должны быть в разных столбцах. НЕ НУЖНО из 5 столбцов делать 2 (показатель/значение). Это негативно скажется как на занимаемом объеме, так и на производительности вычислений. Более того, придется писать более сложные меры.

Для Вашего примера никаких преобразований в PQ не требуется. Это данные в нужном виде. Я только загрузил через PQ, указав там тип данных для столбцов.
PQ: разный тип суммирования в одном столбце
 
Цитата
0033s написал:
По заданию "Вес" и "Сумма", а в реале - "стредне-списочный состав" и куча KPI ,  должны находиться в одном столбце.
В данных подобные значения должны быть в разных столбцах.
Если Вы о конечном виде в сводной таблице - то это уж как пожелаете (у меня на скрине вес и сумма в "одном столбце", хотя в данных они в разных столбцах).
Мера Power Pivot для обычной и средневзвешенной наценки
 
Прошу прощения у всех, кто смотрел решение в предыдущем моем ответе :)
Изначально я слишком все усложнил. Изменил на оптимальный вариант.

Vladimir Ch, думаю, Вам зайдет краткость решения по новым вводным от Юлии. И такая наценка мне кажется уже нормальным показателем, в отличие от начального :)

Alex, совершил такую же ошибку сам, так как в голове было предыдущее решение (вычисляли какую-то дичь сложным способом). Не нужны вообще условия, на каком уровне происходит вычисление (наименования/бренда/итогов). Все довольно тривиально:
Код
Наценка:=
DIVIDE (
    SUMX ( VALUES ( 'Таблица1'[Наименование] ); [Наценка товара] * [Выручка] );
    [Выручка]
)


P.S. Как обычно, моя жопа чуйка подсказала, что в изначальном условии ТС есть некорректные вычисления, противоречащие здравому смыслу.
Всегда стоит изначально разработать нормальную математическую модель, а потом уже пытаться ее перенести в отчет.
Изменено: surkenny - 23.01.2024 14:24:28
Преобразование таблицы в Power Query. Работа со списками
 
Sviman144, не умею в PQ преобразовывать графические файлы :(
Где пример данных? Где попытки реализовать? Почему нужно делать в PQ, а не преобразовать в PQ, а вычислять в PP?
Мера Power Pivot для обычной и средневзвешенной наценки
 
Юлия, как бы существенное изменение. И теперь я считаю такой расчет корректным, а не хренью, как было :)
Ваша задача вообще на платную тянет...

По сути тут уже не нужно будет всего гемороя (первые 3 меры, скорее, для уменьшения кода; и чтобы их отдельно выводить).
Ну и мера наценки довольно простая + она уже будет работать с брендами, у которых только один товар, корректно.
Код
Выручка:=SUM ( 'Таблица1'[Сумма] )

Код
СС:=SUM ( 'Таблица1'[Себестоимость] )

Код
Наценка товара:=DIVIDE ( [Выручка]; [СС] ) - 1

Код
Наценка:=
DIVIDE (
    SUMX ( VALUES ( 'Таблица1'[Наименование] ); [Наценка товара] * [Выручка] );
    [Выручка]
)
Изменено: surkenny - 23.01.2024 14:13:41
PQ: разный тип суммирования в одном столбце
 
0033s, можно так сделать.
Если убрать измерение товара из сводной, то не будет "+" для разворачивания, как на примере результата.
Но!!! Можно это реализовать (будет доп таблица с наименованиями мер), но нафига? При сворачивании категории что должно выводиться (сумма продаж или средний вес)?

Можно сделать и анпивотом, как Вы что-то пытались. Тогда не будет нужна доп таблица с названием мер. Но такое решение неверное с точки зрения оптимальности, плюс такая структура данных ведет к усложнению кода мер, что плохо скажется на поддержке.
Короче, данные по весу и сумме должны быть в разных столбцах :)

Возможно, кто-то Вам поможет. Если захотите моей помощи, то в данном случае считаю задачу платной - можете попросить модераторов перенести в платный раздел. По стоимости будет 1800 (стоимость 1 часа), заказы менее 1800 не беру.
Изменено: surkenny - 23.01.2024 12:22:59
Убрать нарастающий итог, Убрать нарастающий итог по 4 показателям и разбить их на отдельные кварталы
 
Садулла Михадов, простите, но Вы уверены, что там всегда нарастающий итог?

В любом случае, вот код в PQ (сразу с заменой в текущих столбцах).
Код
let
  clmns = { "Страховые премии ", "Страховые выплаты", "Количество договоров ", "Количество урегул. страховых случаев" }, 
  data = Excel.CurrentWorkbook(){[ Name = "Свод_данных_Кварталы" ]}[Content], 
  typed = Table.TransformColumnTypes (
    data, 
    {
      { "Страховые премии ", type number }, 
      { "Страховые выплаты", type number }, 
      { "Количество договоров ", Int64.Type }, 
      { "Количество урегул. страховых случаев", Int64.Type }, 
      { "Средняя страховая премия", type number }, 
      { "Средняя страховая выплата", type number }, 
      { "Частота страховых случаев", type number }, 
      { "Год", Int64.Type }
    }
  ), 
  group = Table.Group (
    typed, 
    { "Наименование СК", "Регион", "Федеральный округ" }, 
    {
      {
        "t", 
        ( t ) =>
          [
            sort = Table.Sort ( t, { { "Год", Order.Ascending }, { "Квартал", Order.Ascending } } ), 
            recs = List.Buffer ( Table.ToRecords ( sort ) ), 
            gen = List.Generate (
              () =>  [
                i       = 0, 
                vals    = Record.FromList ( Record.FieldValues ( Record.SelectFields ( recs{i}, clmns ) ), clmns ), 
                new_rec = recs{i}
              ], 
              ( x ) => x[i] < List.Count ( recs ), 
              ( x ) =>  [
                i = x[i] + 1, 
                vals = Record.FromList ( Record.FieldValues ( Record.SelectFields ( recs{i}, clmns ) ), clmns ), 
                new_rec = Record.TransformFields (
                  recs{i}, 
                  List.Transform ( clmns, ( c ) => { c, ( y ) => y - Record.Field ( x[vals], c ) } )
                )
              ], 
              ( x ) => x[new_rec]
            ), 
            toTbl = Table.FromRecords ( gen, Value.Type ( typed ) )
          ][toTbl], 
        type table
      }
    }
  ), 
  combine = Table.Combine ( group[t] )
in
  combine
PQ: разный тип суммирования в одном столбце
 
0033s, не понял. Данные подготавливаются в PQ. Ок. Именно подготавливаются, не рассчитываются.
Цитата
0033s написал:
Проблема, на мой взгляд, состоит в том, что если период выбирается слайсером, то не понятно, как ему дать понять, на какое число надо разделить общий "Вес", чтобы получить средне-месячное значение.
А зачем среднемесячное значение вычислять в PQ? Он для подготовки данных.
Сделайте это в Power Pivot.
И отчет в PP уже отлично будет реагировать на срезы.
И создается элементарно.

Хватит микроскопом гвозди заколачивать :)
А потом еще и жаловаться, что не очень удобно.
Изменено: surkenny - 22.01.2024 18:56:27
суммесли VS агрегирование в PQ, Скорость выполнения
 
Цитата
AlienSx написал:
в значениях полей словаря должны быть записи
ага, я про это. Так понятнее для поддержки.
Изменено: surkenny - 22.01.2024 16:08:12
Мера Power Pivot для обычной и средневзвешенной наценки
 
Vladimir Ch, по факту Вы итератором SUMX создаете эквивалент вычисляемого столбца. Только он несколько раз создается, оптимальнее создать вычисляемый столбец.
Только мерой (при наличии столбца с номером строки) тоже можно. Даже почти Вашим выражением :) Хоть и медленнее, чем вычисляемым столбцом.
Изменено: surkenny - 22.01.2024 15:52:38
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 96 След.
Наверх