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

Страницы: 1
Нехватка данных в источнике при пагинации посредством Power Query
 
Уважаемые форумчане, приветствую! Прошу помощи в решении возникшей трудности при парсинге посредством Power Query. С сайта-источнике отдача происходит по 100 строк на странице, максимум 20 страниц (максимум 2000 строк). Но бывает, что в источнике страниц меньше, чем фиксированного в Power Query. В этом случае возникает ошибка. Изучил у Илья Назаров предложенный им  "API в Power Query часть 2: пагинация", попробовал перенести на свою задачу, но не получил требуемого результата. Код выводит в итог запроса только первые 100 строк, а на 101 строке во всех столбцах фиксирует ошибку. Если кто-то сможет помочь в решении данной задачи, буду крайне благодарен. При текущем указанном url в источнике содержится в районе 450 строк.

Код
let
  
   url = "https://api.hh.ru/vacancies?text=агроном",
   
    parameters = [
        per_page = "100"
    ],
    
    getPage = ( optional page ) => let
        response = Web.Contents(url, [
            Query = parameters & [ page = Text.From( page ?? 0 ) ], //as record
            // page ?? 0 === if page = null then 0 else page
            ManualStatusHandling = { 400, 403, 406, 409 } 
        ]),
        metadata = Value.Metadata(response),
        buffer = Binary.Buffer( response ),
        status = metadata[Response.Status],
        json = try Json.Document( buffer ),
        result = if not json[HasError] and status >=200 and status < 300 
            then json[Value][items]
            else error Error.Record(json[Value][error],json[Value][description],json[Value][message])
    in result,

    getNextPage = ( previousPage ) => let
        metadata = Value.Metadata( previousPage ),
        page = metadata[page],
        nextPage = Function.InvokeAfter( () => getPage( page + 1 ), #duration(0,0,0,1/5) )
    in nextPage,

    pages = List.Generate(
        () => getPage(),
        each _ <> {},
        each getNextPage ( _ )
    ),

    result = Table.FromRecords( List.Combine( pages ) )
in
    result
Расчет коэффициента сезонности
 
Уважаемые форумчане, приветствую вас! Есть потребность в помощи при расчете коэффициента сезонности продаж. Имеется таблица продаж ("Операции"), в которой приведены строки ежедневных продаж за несколько лет. Коэффициент сезонности рассчитываю по следующему алгоритму:
1. Агрегатирую количество продаж за несколько лет по номеру месяца продаж.
2. Вычисляю среднее количество продаж по агрегатированным 12 месяцам.
3. Вычисляю коэффициент сезонности в помесячной разбивке, как деление агрегатированных продаж в конкретном месяце к среднему (п.2).
Код
КоэффСезонности = 
VAR EndData = CALCULATE (MAX('Операции'[Дата]),ALL())
VAR Period = 
MAXX(
    FILTER(
        '_Константы',
        '_Константы'[Константа] = "Количество периодов сезонности, лет"
    ),
    '_Константы'[Значение]
)
var StartData = EDATE(EndData,- Period*12)
VAR MonthsValues =
CALCULATETABLE(
    ADDCOLUMNS ( 
        VALUES ( '_Календарь'[№_месяца] ), 
            "@sum", 
                CALCULATE ( SUM ( 'Операции'[Количество] ) )           
                ), 
                FILTER(ALL('_Календарь'[Дата]),'_Календарь'[Дата] > StartData && '_Календарь'[Дата] <= EndData))
VAR sredZnach = 
    AVERAGEX(
            MonthsValues,
        [@sum]
    )

Первые два пункта описал в коде, а как вывести сумму агрегатированных продаж в конкретном месяце и соотнести к пункту 2 не понимаю. Буду благодарен за помощь в данном вопросе
Изменено: Sergey Chernichenko - 29.09.2022 12:15:46
Расчет стандартного отклонения и коэффициента вариации при отсутствующих данных в периодах
 
Уважаемые форумчане, добрый день! Выявилась потребность в расчете  коэффициента вариации. Как мы все знаем, это соотношение стандартного отклонения к среднему значению. В исходных данных детализация оборота - по дням,  требуемое значение вариации необходимо рассчитать с помесячной агрегацией.  Написал такой код (подсмотрел у surkenny, спасибо):

Код
КоэффВариации = 
var standOtkl = 
IF (
    NOT HASONEFILTER ( '_КалендарьAUTO'[Month] ),
    STDEVX.P (
        ADDCOLUMNS (
            SUMMARIZE ( FILTER ( 'Оборот', 'Оборот'[ОборотКолич] <> BLANK () ), '_КалендарьAUTO'[Month]),
            "w", CALCULATE ( SUM ( 'Оборот'[ОборотКолич] ) )
        ),
        [w]
    )
)
var sredZnach = 
IF (
    NOT HASONEFILTER ( '_КалендарьAUTO'[Month] ),
    AVERAGEX(
        ADDCOLUMNS (
            SUMMARIZE ( FILTER ( 'Оборот', 'Оборот'[ОборотКолич] <> BLANK () ), '_КалендарьAUTO'[Month]),
            "w", CALCULATE ( SUM ( 'Оборот'[ОборотКолич] ) )
        ),
        [w]
    )
)
return
 DIVIDE(standOtkl,sredZnach)

Код работает, но только в случае, когда во всех месяцах есть строки с данными по обороту. Если в каком-либо месяце оборота нет (нет строк в исходнике), код не воспринимает этот месяц. А для корректности требуемой задачи должен принимать исходные данные, как нулевые по этому месяцу и производить расчет стандартного отклонения, среднего значения и коэффициента вариации с учетом всех этих нулевых месяцев. Буду благодарен, если кто-нибудь сможет подсказать решение данной задачи.

Изменено: Sergey Chernichenko - 01.09.2022 16:44:56
Расчет ежедневных остатков при наличии данных по остаткам на промежуточные даты
 
Уважаемые форумчане, добрый день! Выявилась проблема с расчетом ежедневных остатков. Есть промежуточные ежемесячные данные по остаткам на 1-й день месяца (1 января, 1 февраля и т.д.) и есть оборот (приходы, расходы) по каждому дню в отдельной таблице. Необходимо рассчитать начальный и конечный остаток каждого дня.
Логику расчета конечного остатка понимаю - надо вычислить ближайшую, более раннюю дату промежуточного остатка  к минимальной дате установленного срезом временного промежутка. И затем к вычисленному на эту дату промежуточному остатку прибавить обороты за промежуток с даты этого промежуточного остатка до максимальной даты среза. Попытался создать меру по этому алгоритму.
Код
КонечныйОстаток = var MinDate = MIN('_КалендарьAUTO'[Data])
var MaxDate = MAX('_КалендарьAUTO'[Data])
var DateUst = 
    maxx(
        filter(
            'ПромежИтоги',
            'ПромежИтоги'[Дата]>=MinDate&&
            'ПромежИтоги'[Дата]<=MaxDate
        ),
        'ПромежИтоги'[Дата]
    )
return
CALCULATE(
    SUM('Оборот'[ОборотКолич]),
    FILTER(
        ALL('_КалендарьAUTO'),
        '_КалендарьAUTO'[Data]>=DateUst&&
        '_КалендарьAUTO'[Data]<=MaxDate
        )
)+
CALCULATE(
    SUM('ПромежИтоги'[ПромежКоличество]),
        FILTER(
                ALL('_КалендарьAUTO'),
                '_КалендарьAUTO'[Data] = DateUst
            )
)

Но она считает неправильно. Просьба помочь в решении вопроса.
Анализ "Что-Если" в Power BI
 
Добрый день! Есть необходимость в организации анализа "What if" в Power BI. Для этого в Моделировании создал параметр "Множитель расхода" и создал формулу расчета в таблице Тест (2) РасходМножитель:
Код
РасходМножитель = 'Тест (2)'[Расход]*'Множитель расхода'[Значение Множитель расхода]

Но на изменение движка "Множитель расхода" никак не происходит вывод данных и их изменение в таблице. Подчеркну, что изменение необходимо именно в таблице Тест (2). Возможно требуется другая формула, но я не знаю, какая. Просьба помочь по данному вопросу.
Изменено: Sergey Chernichenko - 04.05.2022 12:02:04 (Вложение)
Расчет приходов и остатков по периодам
 
Добрый день, уважаемые форумчане! Встретился с нетривиальной задачей по расчету необходимого планируемого прихода и остатка на конец месяца. Суть задачи - на основании данных начального остатка, планируемого расхода и количества в упаковке (параметры в файле выделены цветом) рассчитать требуемые партии прихода и остаток на конец месяца.  Нетривиальность задачи заключается в том, что расчет прихода осуществляется с градацией до упаковки (округление) и поэтому расчеты имеют цикличность (то есть данные для расчета текущего месяца обращаются к ячейке этого же столбца предыдущего месяца). В Excel считается всё хорошо, но требуется решение в PQ (DAX).

Изучил форум на эту тему, видел варианты уважаемых гуру (Андрей VG, PooHkrd, Максим Зеленский) и других форумчан, но в варианты решения своей задачи трансформировать не смог. Буду благодарен за любую помощь в её решении.
Изменено: Sergey Chernichenko - 21.04.2022 19:55:40 (Ошибка вложения)
Выгрузка электронных писем из Яндекс.Почты в Excel
 
Добрый день! Есть потребность в выгрузке писем из Яндекс.Почты в Excel формата дата письма, тема письма, отправитель, вид (входящее, исходящее), текст письма. Поискал в сети,  вариантов не увидел. Есть у вас мысли, как это можно сделать?
Годовой план нарастающим итогом при неравномерной квартальной разбивке
 
Доброго времени суток!
Прошу помочь со следующим вопросом:

Есть потребность в расчете нарастающим итогом плана продаж. Но здесь есть нюанс - план выставлен на каждый квартал. В году 4 квартала. Внутри квартала план линейный (его размер установлен на дату начала квартала в таблице ПланПрод). При этом план разбит ещё по сотрудникам и товарным группам. Для расчета используется логика - нарастающий план равен полному плану за квартал, умноженному на количество прошедших рабочих дней и делённому на полное количество рабочих дней в квартале. Рабочие дни фиксированы в таблице дат в столбце РД (рабочий день -1).

Необходимо на каждую календарную дату получить план нарастающим итогом с возможностью использования срезов (фильтрации) по датам (месяц, год),сотрудникам и товарным группам. При этом, если промежуток дат захватывает несколько кварталов, нарастающий итог должен соответствовать алгоритму суммирования данных каждого квартала с учетом их разного плана.
Пример во вложении
dax нарастающим итогом со сдвигом дат
 
Доброго времени суток, форумчане! Возникла задача подсчета данных продаж нарастающим итогом за промежуток дат, но сдвинутых на год назад. По расчету по текущему промежутку вопросов нет, формулу создал -
Код
ВыручкаНИ = CALCULATE(SUM(Sale[Выручка]), FILTER(ALLSELECTED (Дата),Дата[Дата]<=max(Дата[Дата])))

Но попытка просчёта за этот же промежуток со сдвигом на год назад не получилась. Попытался применить DATEADD, на она не работает с max. Буду благодарен, если кто-то встречался с подобной задачей и даст рецепт её решения
Изменено: Sergey Chernichenko - 07.10.2020 07:51:06 (некорректное отображение формулы)
Страницы: 1
Наверх