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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 55 След.
факт след месяца по дате неделе предыдущего месяца, DAX факт след месяца по дате неделе предыдущего месяца
 
Цитата
BOksanaV написал:
подсчета плана на след. месяц по полю календаря "Начало месяца".
1. Это как результат должен выглядеть? Логику опишите.
2. У Вас план по неделям. Если неделя частично входит в месяц (29.08-04.08), то какую часть нужно взять? Пропорционально входящим в месяц датам? По вашим данным 6,86. Или пропорционально рабочим дням? 9,6 по Вашим данным.
3. Календарь у Вас ужасный:) Для полноценного использования timeintelligence функций даты должны быть все, а не только начала недели. А в отдельном столбце уже дату начала недели/номер недели/диапазон дат недели для среза.
Массовая замена текста в Power Query функцией List.Accumulate, Выдает ошибку: Expression.Error: Аргументы 2 были переданы функции, которая ожидает 3.
 
Александр Безроднов, Вам же PQ все дословно пишет :)
Смотрите документацию по List.Accumulate. У функции 3 аргумента:
- список (список может быть абсолютно любым: список, список списков, список записей и тд);
- начальное состояние (тут вообще, что угодно, хоть таблица :) );
- функция от двух переменных ( текущего состояния и текущего элемента списка из первого аргумента).
А у Вас в List.Accumulate нет первого аргумента (списка замен).
Разница между значениями по датам в DAX
 
Цитата
dimacrut написал:
Ну, с началом разобрались, а дальше?
А чего так дерзко-то? :) Не вижу изменения (наличия календаря) в Вашем примере.
Фильтрация вложенной таблицы Power Query
 
Михаил Л, я это для "красоты" что-ли кода использую :)
Ну и по аналогии с переменными DAX у Феррари/Руссо не очень люблю код вида
Код
let
   a=1,
   b=2
in
   a+b

Вот так как-то лучше для меня :) :
Код
let
   a=1,
   b=2,
   res = a+b
in
   res

И более удобно для отладки кода вложенного запроса на части данных.

P.S. Пора Вам перенимать эстафету :) PooHkrd совсем редко заходит (остальные M/DAX специалисты тоже :( ), а у меня сейчас все время уходит на FineBI. Ближайшее время вообще особо не смогу помогать :(
Фильтрация вложенной таблицы Power Query
 
Цитата
Константин Иванов написал:
1. Верно ли я понимаю, что далее после столбца группировки объявляется функция ( t ) =>  , разве нельзя просто там разместить List.Generate?
Так нам бы в List.Generate в каждом шаге обращаться к новой "строке". Быстро и просто - создать из таблицы список записей, в каждом шаге List.Generate увеличивать какой-то счетчик на 1 и обращаться к соответствующему элементу списка записей ( ИмяШагаСпискаЗаписей{n} ).
Цитата
Константин Иванов написал:
2. Если я все верно прочитал, то там после функции стоит [generate], вот этого я не понял совсем ))
Конструкция
[a=..., b=..., c=...][b] эквивалентна let a=..., b=..., c=... in b.
По сути это вложенный запрос. Если понятнее, то можно код переписать так:
Код
...
  group = Table.Group (
    sort,
    { "ProductID" },
    {
      {
        "recs",
        ( t ) =>
          let
            recs = List.Buffer ( Table.ToRecords ( t ) ),
            generate = List.Generate (
              () => [ i = 0, sum = recs{i}[Price], result = Record.AddField ( recs{i}, "Sum", sum ) ],
              each [i] < List.Count ( recs ),
              each [ i = [i] + 1, sum = [sum] + recs{i}[Price], result = Record.AddField ( recs{i}, "Sum", sum ) ],
              each [result]
            )
          in
            generate,
        type {record}
      }
    },
    GroupKind.Local
  ),
...

Цитата
Константин Иванов написал:
на моменте объявления функции собственно мы и получаем что t = кусок этой исходной таблицы ?
Все верно. Мы объявили функцию от одной переменной t. Для каждой группы t - это часть таблицы из предыдущего шага sort. И вот с этой таблицей можете делать все, что угодно :).
Можно было бы сделать по-другому: each перед дальнейшим кодом, а вместо t использовать _. Но тогда рискуете нарваться на сложности при вложенных each внутри. Лучше объявить имя этой таблицы.

P.S. Возможно для понимания будет полезен чуть измененный код (сортируем уже таблицу t внутри группировки; группировка глобальная, а не локальная - четвертый аргумент функции Table.Group по умолчанию GroupKind.Global.
Скорее всего, такой вариант будет медленнее. Потестите на реальных данных:
Скрытый текст
Изменено: surkenny - 09.08.2022 10:34:30
Распределение значений, Помогите рассчитать распределение значений.
 
Ігор Гончаренко, одним местом чую, что примерно ТС хочет следующее:
1. Всего за месяц было проведено N боев (180021 <= N <= 250427). В каждом бое участвовало 2 бойца из 6789 бойцов.
2. Дано распределение бойцов по количеству (от/до) проведённых ими боев.
3. «Пронумеруем» бойцов: пусть бойцы Б1, Б2, .. Б544 провели от 1 до 3 боев. Бойцы Б545 .. Б1233 от 4 до 10 боев. И так далее.
Нужно найти вариант(-ы) составов боев. Например, первый бой Б1 с Б1000, второй бой Б1 с Б1000, третий бой Б1 с Б1000 и тд. Б1 более не участвовал по условию. Б1000 во всех трёх боях намеренно, так как ограничение на повторение состава не увидел.
Отсюда уже и вытащим «распределение» между 3-ей и 7-ой группами.
Изменено: surkenny - 07.08.2022 00:09:40
Преобразование текста в Function Power Query, Написал функцию текстом в запросе
 
Никита Скляров,
1. Вы в третий аргумент функции Table.AddColumn передаете текст. А там должна быть функция.
2. Table.AddColumn - итератор. Не проверял именно в таком кейсе, но с большой долей вероятности Ваш запрос Таблица1 будет пересчитываться для каждой строки таблицы4. Вынесите результат запроса Таблица1 в отдельную переменную и уже ее используйте внутри Table.AddColumn. Чтобы "превратить" текст в выражение на языке M, есть функция Expression.Evaluate (тут даже второй аргумент не нужен, так как в тексте нет функций):
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица4"]}[Content],
    func = Expression.Evaluate ( Таблица1 ),
    #"Добавлен пользовательский объект" = Table.AddColumn ( Источник, "Сотрировка", func )
in
    #"Добавлен пользовательский объект"
Изменено: surkenny - 03.08.2022 21:35:21
Перенос данных из тегов по столбцам
 
Файлы не изучал. Полагаю, что с этим прекрасно справится Power Query.
Но тема больше похожа на ТЗ для платной ветки :)
Фильтрация вложенной таблицы Power Query
 
Цитата
Константин Иванов написал:
как работает я тоже вобщем-то разобрался
Если это так, тогда вообще не понял
Цитата
Константин Иванов написал:
код считает нарастающий итог по продукту, а мне нужен нарастающий итог по продукту с учетом даты или индекса продажи
А как сейчас считается? До расчета мы сортируем строки по продукту/дате. Не нравится по дате, сделайте по [RN]:
Код
= Table.Sort ( typed, { { "ProductID", Order.Ascending }, { "RN", Order.Ascending } } )

Разве тут не нарастающий итог с учетом RN?
Преобразование текста в Function Power Query, Написал функцию текстом в запросе
 
Без примера мало понятно, что Вы хотите.
преобразование списка в таблицу
 
Цитата
memo написал:
Но лучше такие преобразования делать в Power Query, о
Ага, довольно тривиально:
Код
let
  data = Excel.CurrentWorkbook(){[ Name = "data" ]}[Content],
  group = Table.Group (
    data,
    "data",
    { { "tbl", ( t ) => Table.Transpose ( t ), type table } },
    GroupKind.Local,
    ( s, c ) => Number.From ( c = "КТРУ" )
  ),
  combine = Table.Combine ( group[tbl] )
in
  combine
Изменено: surkenny - 02.08.2022 21:42:16
Консультация по Сводной из нескольких таблиц, Объяснить тему установки связей между таблицами на примере
 
Давайте попробуем Вам объяснить. Цену за час Вам напишу в ЛС.
Иерархия дат в Power BI, Как в иерархию дат добавить часы
 
yuppic, не нужно это делать в календаре (в целях производительности). Для времени создайте отдельную таблицу по типу календаря (86 400 значений с 00:00:00 до 23:59:59, столбцы часов/минут/секунд). В таблицах фактов дата и время должны быть в двух разных столбцах. Связь с таблицей времени делайте по этому полю время.
Дата в PowerQuery в формате ГГГГ.ММ.ДД
 
Vladislav Tsalkovskii,
mm - это минуты
MM - это месяц
Доля подкатегории в Power BI, как посчитать долю элемента в группе элементов
 
Цитата
Екатерина Смирнова написал:
Несколько дней жизни ушло на поиск решения этой проблемы.
А можно было просто почитать книгу итальянцев :)
PQ. Запрос конкретных столбцов таблицы.
 
kush.near,
Код
(Ссылка)=>
let
    //Источник = Web.BrowserContents("https://semeynaya.ru/tseny/page/103-lechenie/9316-psikhiatriya"),
    Источник = Web.BrowserContents(Ссылка),
    #"Извлеченная таблица из HTML" = Html.Table(Источник, {{"Column1", "TABLE.table.table-striped > * > TR > :nth-child(1)"}, {"Column2", "TABLE.table.table-striped > * > TR > :nth-child(2)"}, {"Column3", "TABLE.table.table-striped > * > TR > :nth-child(3)"}, {"Column4", "TABLE.table.table-striped > * > TR > :nth-child(4)"}}, [RowSelector="TABLE.table.table-striped > * > TR"]),
    #"Повышенные заголовки" = Table.PromoteHeaders(#"Извлеченная таблица из HTML", [PromoteAllScalars=true])
in
    #"Повышенные заголовки"
Смещение относительно текущего месяца в power pivot
 
Цитата
Твердый написал:
подскажите как избавиться от 'Таблица2'[calend] ?
Кто Вам сказал, что от календаря нужно избавляться? Для того, чтобы DAX функции time intelligence работали, календарь нужен (вернее, нужны даты без пропусков).
И создание календаря для нормальных моделей данных необходимо.
Тестовое задание, доделать файл, Из 2х файлов сделать консолидацию с сравнением
 
МатросНаЗебре, мне кажется, тут ТС о самолетах только если мельком слышал и не знает, летают ли они в пункт назначения. Но на самолете лететь точно не больше двух часов, а это максимум 750 руб.
«Решение», изложенное ТС, - вообще супер! Если это задача на один раз - ок. Но к чему тогда вообще тема? Быстрее, чем описывать задачу тут, можно глазками сравнить 2 не особо больших таблицы :)
Тестовое задание, доделать файл, Из 2х файлов сделать консолидацию с сравнением
 
Цитата
Далее мне предложили неадекватно-высокую цену за выполнение, аргументировав все тем, что выполнение потребует много времени(часов).
Я бы после этого уже ТС не слушал :)
Моя цена была 1000 (просто минималка). И за такую цену ни о каких часах речи не может идти :)

Меня вообще всегда поражают индивидуумы, которые не знают, как что-то сделать, но знают, сколько на это нужно времени и сколько это стоит :)
Изменено: surkenny - 30.07.2022 23:37:53
PQ. Запрос конкретных столбцов таблицы.
 
kush.near, а просто типизацию убрать не пробовали? :)
Долго пересчитывается файл, Долго пересчитывается файл
 
Цитата
tat_lyk написал:
компания дает для сдачи отчетности свою такую простыню, как затянуть свои цифры в их экселевский лист..?  
Почему и Ваши, и "Чужие" цифры не привести в PQ к единому виду и не делать Ваш анализ в одной модели данных?
Я не могу это понять :)
Все, что у Вас на рисунке можно получить в одной сводной из одной модели данных.
Изменено: surkenny - 29.07.2022 14:44:14
Преобразовать лог в таблицу, Лог показаний в столбик а надо в таблицу
 
Вообще ТС не понял. Мой вариант из #3 не подходит что ли?
Подозреваю, что и лог у вас изначально в txt/csv. Грузите в PQ прямо оттуда, так быстрее будет и в числе строк нет ограничений.
Изменено: surkenny - 29.07.2022 14:36:41
Долго пересчитывается файл, Долго пересчитывается файл
 
Согласен с Ігор Гончаренко.
tat_lyk, а почему Вы все эти расчеты не делаете в Power Pivot?
Макрос импорта txt из папки на лист excel, Макрос импорта txt из папки на лист excel
 
Цитата
Степан Ульянов написал:
множественные переносы строк которые удачнее выходит разделять когда txt просто значением вставлен
А в PQ почему это реализовать нельзя? Без примера помочь не могу.
Изменено: surkenny - 29.07.2022 13:59:55
Power Pivot итоги за неделю по последнему дню недели
 
Алена,
Код
stock :=
VAR lastVisibleDate =
    MAX ( 'остатки'[дата] )
VAR result =
    CALCULATE ( SUM ( 'остатки'[остаток] ); 'остатки'[дата] = lastVisibleDate )
RETURN
    result
Изменено: surkenny - 28.07.2022 16:13:06
DAX.НарастающийИтог_График, DAX.НарастающийИтог_График
 
Ольга, а зачем такая сложность с ISONAFTER? :)
Код
Нарастающий итог Сумма_план в Дата = 
VAR DataMax =
    CALCULATE ( MAX ( 'Нараст_Итог'[Дата] ), 'Нараст_Итог'[Тип] = "план" )
RETURN
    CALCULATE (
        [Сумма_план],
        ALLSELECTED ( 'Нараст_Итог'[Дата] ),
        'Нараст_Итог'[Дата] <= DataMax
    )

Код
Нарастающий итог Сумма_факт в Дата = 
VAR DataMax =
    CALCULATE ( MAX ( 'Нараст_Итог'[Дата] ), 'Нараст_Итог'[Тип] = "факт" )
RETURN
    CALCULATE (
        [Сумма_факт],
        ALLSELECTED ( 'Нараст_Итог'[Дата] ),
        'Нараст_Итог'[Дата] <= DataMax
    )
PQ.СЧЁТЕСЛИМН
 
Nazar93,
1. Самый очевидный вариант (но, думаю, что будет не очень шустрым):
Код
let
  src = Excel.CurrentWorkbook(){[ Name = "Таблица1" ]}[Content],
  typed = Table.TransformColumnTypes ( src, { { "Дата", type date } } ),
  group = Table.Group (
    typed,
    { "Имя" },
    {
      {
        "tbl",
        ( t ) => Table.AddColumn ( t, "Число_2", ( r ) => Table.RowCount ( Table.SelectRows ( t, ( row ) => row[Дата] < r[Дата] ) ), Int64.Type ),
        type table
      }
    }
  ),
  combine = Table.Combine ( group[tbl] )
in
  combine

2. Если в датах для одного имени нет повторов, как в примере, то тут просто можно добавить столбец индекса:
Код
let
  src = Excel.CurrentWorkbook(){[ Name = "Таблица1" ]}[Content],
  typed = Table.TransformColumnTypes ( src, { { "Дата", type date } } ),
  group = Table.Group (
    typed,
    { "Имя" },
    { { "tbl", ( t ) => Table.AddIndexColumn ( Table.Sort ( t, { { "Дата", Order.Ascending } } ), "Число_2", 0 ), type table } }
  ),
  combine = Table.Combine ( group[tbl] )
in
  combine

3. Если повторы могут быть, то такой вариант должен быть пошустрее первого:
Код
let
  src = Excel.CurrentWorkbook(){[ Name = "Таблица1" ]}[Content],
  typed = Table.TransformColumnTypes ( src, { { "Дата", type date } } ),
  sort = Table.Sort ( typed, { { "Имя", Order.Ascending }, { "Дата", Order.Ascending } } ),
  group = Table.Group (
    sort,
    { "Имя" },
    {
      {
        "recs",
        ( t ) =>
          [
            recs = List.Buffer ( Table.ToRecords ( t ) ),
            generate = List.Generate (
              () => [ k = 0, count = 0, result = Record.AddField ( recs{k}, "Число_2", count ) ],
              each [k] < List.Count ( recs ),
              each [
                k      = [k] + 1,
                count  = if recs{k}[Дата] > recs{k - 1}[Дата] then k else [count],
                result = Record.AddField ( recs{k}, "Число_2", count )
              ],
              each [result]
            )
          ][generate],
        type {record}
      }
    },
    GroupKind.Local
  ),
  toTable = Table.FromRecords ( List.Combine ( group[recs] ) ),
  typed2 = Table.TransformColumnTypes ( toTable, { { "Дата", type date }, { "Число_2", Int64.Type } } )
in
  typed2

На 20k строк третий вариант гораздо лучше первого :)
Обновление данных автоматически, Обновление данных автоматически
 
Цитата
Jack Famous написал:
тут к ТСу вопрос, а не к вам — нахрена создавать тему и не закрывать её, если исполнитель найден не в ней…
Думаю, тут Вы не совсем правы :) Я написал Алексею уже после создания темы, а до этого как раз и советовал лучше к спецам по VBA обратиться :( Утром не видел тем, поэтому и решил поковырять. Так что тут мое участие не последнюю роль сыграло :)
evgeniygeo, тогда благодарность Дмитрий(The_Prist) Щербаков :)
PQ. Оптимизация расчета многофакторного АВС анализа.
 
Neostt, тут-то уже сложности нет :)
Код
add_index = Table.Group(  
                                tip1,  
                                {"Бренд"},  
                                 {{"tab", (t)=>   
                                 [
//АВС штуки
                                 a=Table.Sort ( t, { { "Реал_шт", Order.Descending } } ),
                                 lst= List.Buffer(a[Реал_шт]),
                                 b=List.Sum(lst),
                                 n = List.Count(lst),  
                                 gen = List.Generate(()=>[i=0,s=lst{i}, sh = s/b, g = if sh <= 0.8 then "A" else if sh <= 0.95 then "B" else "C"  ],
                                                    (x)=>x[i]<n,
                                                    (x)=>[i=x[i]+1,s=x[s]+lst{i}, sh = s/b, g = if sh <= 0.8 then "A" else if sh <= 0.95 then "B" else "C"],
                                                    (x)=>x[g]),
PQ. Оптимизация расчета многофакторного АВС анализа.
 
Neostt, как минимум, Вы очень неоптимального группу считаете. Нужно отсортировать от большего к меньшему и при помощи, к примеру List.Generate или List.Accumulate, найти долю нарастающего итога по каждой строке от общей суммы. И в зависимости от результата группу назначить. У Вас же в запросе для каждого товара пересчитывается таблица с рейтингом товаров. Поэтому и очень медленно :)
Изменено: surkenny - 27.07.2022 14:29:15
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 55 След.
Наверх