Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 125 След.
ТДАТА в Power Query
 
Денис, кто он? Он сам ничего не ставит. Вы ставите. Подставите текущую - преобразует текущую. Как получить текущую - смотрите в №3
F1 творит чудеса
DAX мера - динамический процент
 
Цитата
Андрей VG написал:
Написать в DAX меру, универсально определяющую, что произвольный столбец таблицы является нижним уровнем, и какой из других следующим - достаточно проблемно.
Сомневаюсь, что это вообще возможно. С точки зрения DAX нет разницы между строками и столбцами, и в рамках одной таблицы мы всего лишь можем определить наличие или отсутствие фильтра на столбце.
У нас в распоряжении ISFILTERED, ISCROSSFILTERED и может быть HASONEVALUE.
Соответственно можно для ограниченного количества конкретных столбцов, которые могут быть помещены в строки, мы можем какую-то логику прописать, но не более.
F1 творит чудеса
PQ Поиск вложенных связей
 
Цитата
Андрей VG написал:
Максим, попробуйте с таким{{1,2},{2,3},{4},{3}, {1, 3}}
Хм... да нормально собирает, получаем в итоге 2 клиента, {1,2,3} и {4}
Код
let
   Contacts = {{1,2}, {2,3}, {4}, {3}, {1,3}},
   Pos = List.Buffer(List.Positions(Contacts)),
   fnCombinator = (modContacts as list) => 
       List.Transform(
           Pos, 
           (p)=>List.Accumulate(
               modContacts, 
               modContacts{p}, 
               (s,c)=> if s = {} then {} else 
                    List.Union(
                   {
                       s, 
                       if List.ContainsAny(s, c) then c else {}
                   }
               )
           )
       ),
   First = List.Buffer(fnCombinator(Contacts)),
   Second = List.Transform(fnCombinator(First), List.Sort),
    Distinct = List.Distinct(Second)
in
    Distinct

32-битный Excel вешает процессор надолго (что вообще непонятно, не должно так быть, наверное, пресловутые promises в List.Accumulate дают прикурить), но 64-битный Power BI решает быстрее. С ростом количества элементов списка O(N^2) дает себя знать, конечно.
Цитата
Андрей VG написал:
Мой пример, похоже, Максим не смотрел.
Если вы про пример на T-SQL, то это для меня темный лес, увы.
Цитата
Vsevolod написал:
не могли бы Вы выложить пример, интересно изучить как Вы в цикле делается возврат ко 2 пункту.
А кода недостаточно? Цикл по заявкам обеспечивается List.Transform,  внутри каждой петли цикла используем List.Accumulate для нахождения связей текущей заявки с остальными заявками.
Там, конечно, можно оптимизировать чуть-чуть, убирая текущую заявку из рассмотрения, но это не принципиально.
F1 творит чудеса
PQ Поиск вложенных связей
 
Порыл немного в теорию обхода графов, всё же хочется как-то O(n+m), а не O(n^2)... прямо очень зацепило, помучаю на досуге :)
F1 творит чудеса
PQ Поиск вложенных связей
 
Я думаю, здесь всё дело в исключительной жадности моего алгоритма. На 10 заявках это 200 циклов по списку заявок, на 100 заявках это 20000 циклов, а как правильно посчитать сложность алгоритма - не знаю, наверное это O(2N^2) :)
Быть может, есть менее жадный алгоритм объединения множеств по условию пересечения?
F1 творит чудеса
PQ Поиск вложенных связей
 
Цитата
Андрей VG написал:
Что-то, Максим, у меня похоже ваш код зациклился
я решал исходную задачу, где один столбец - номер заявки, второй - контакт, имеющийся в заявке.
Логика такая: группируем по заявкам, получаем список списков контактов.
Дальше бежим по этому списку:
1. Берем первый элемент (список контактов первой заявки)
2. Последовательно проверяем, есть ли пересечения с другими списками: если пересечение с конкретным списком есть, то объединяем списки, запоминаем этот список, и проверяем следующий.
3. Проверяем второй элемент и запускаем п.2
4. и так проверяем все заявки.
Например, есть список {{1,2},{2,3},{4},{3}}
Первая пробежка даст результат {{1,2,3},{1,2,3},{4},{2,3}}
Запускаем пробежку еще раз, получим {{1,2,3},{1,2,3},{4},{1,2,3}}
В итоге там N^2 на первой пробежке и N^2 на второй, что супер далеко от оптимального. На больших списках это малореально.

Затем группируем таблицу "Заявка"-"Список заявок" по обработанным спискам, получаем пару: список заявок/список контактов, одна пара = 1 клиент.
F1 творит чудеса
PQ Поиск вложенных связей
 
Ну вроде сделал, но на длинных цепочках может очень сильно тупить
Код
F1 творит чудеса
PQ Поиск вложенных связей
 
любопытная задачка. В принципе, решаемая, только прожорливая.
Может, Андрей VG сделает на рекурсиях, у меня с ними плохо :)
F1 творит чудеса
Подсчет кол-ва нулей в таблице с помощью DAX
 
Цитата
e.safonov написал:
В другой перечислены все магазины, которые есть в сети на текущий момент.
Если другая таблица называется 'Магазины', и эта таблица связана со второй по принципу 1-ко-многим, то

мера, считающая количество магазинов без продаж:
Код
=COUNTROWS(FILTER('Магазины';[Мера суммы продаж по второй таблице]=0))

Количество магазинов с продажами:
Код
=COUNTROWS(FILTER('Магазины';[Мера суммы продаж по второй таблице]>0))
F1 творит чудеса
Сводные. Классические. Как при копировании данных из сводной повторить её группировку, Обзор нескольких способов.
 
Цитата
Jack Famous написал:
как группировать, если отступов в сводной нет?
ну в примере вы как раз группируете по отступам в исходной сводной. Если вы хотите группировать по жестко заданной структуре данных, то тогда либо одновременно с номерами строк запоминайте будущий OutlineLevel, или еще проще - передавайте его не как массив, а как фиксированный integer при вызове обработчика (вы же знаете, какой именно уровень вам нужен):

Код
Call file_Group2(arrD, 6) ' детали
Call file_Group2(arrT, 5) ' типы
Call file_Group2(arrR, 4) ' расценки
Call file_Group2(arrG, 3) ' группы
Call file_Group2(arrC, 2) ' категории
...
'=====
Private Sub file_Group2(ByRef arr(), ol&)
Dim x
    For Each x In arr
        Rows(x).OutlineLevel = ol
    Next x
End Sub
F1 творит чудеса
Power pivot: как объединить две/три сводные таблицы в одну
 
Связываются не сводные, а исходные таблицы для этих сводных. Чтобы посмотреть, есть ли в исходном файле модель данных, можно на вкладке PowerPivot нажать кнопку Управление, но, похоже, это не тот случай.

Вообще если в сводных сохранены данные, вы можете двойным кликом по общему итогу получить исходные таблицы.
Цитата
jullia_v написал:
нет уникальных элементов по дате.
нужен справочник дат, который вы свяжете с исходными таблицами и будете использовать поля дат из него при построении сводных.
Цитата
jullia_v написал:
Надо ведь приводить в один формат?
да, естественно, к единому формату, и этот формат должен быть распознаваемой датой
F1 творит чудеса
Сводные. Классические. Как при копировании данных из сводной повторить её группировку, Обзор нескольких способов.
 
Я что-то не пойму смысла происходящего. Но выбранный вами способ группировки мне кажется избыточным.
Можно так: сначала
Код
arr = [_PTdetBody].Value2
n = UBound(arr, 1)

ReDim arrO(1 To n)
For i = 1 To n
    arrO(i) = [_PTdetBody].Cells(i, 1).IndentLevel
Next i
i = 0

затем
Код
Private Sub file_Group2(ByRef arr(), ByRef arrO())
Dim x
    For Each x In arr
        Rows(x).OutlineLevel = arrO(x) + 1
    Next x
End Sub

и вызываете так:
Код
Call file_Group2(arrD, arrO) ' детали
Call file_Group2(arrT, arrO) ' типы
Call file_Group2(arrR, arrO) ' расценки
Call file_Group2(arrG, arrO) ' группы
Call file_Group2(arrC, arrO) ' категории
Изменено: Максим Зеленский - 14 Авг 2018 11:52:10
F1 творит чудеса
Объединить продажи, справочники, мониторинг цен в Power Pivot Excel 2016, Объединить продажи, справочники, мониторинг цен в Power Pivot Excel 2016
 
А почему две таблицы Источник1 и чем они отличаются?
F1 творит чудеса
Объединить продажи, справочники, мониторинг цен в Power Pivot Excel 2016, Объединить продажи, справочники, мониторинг цен в Power Pivot Excel 2016
 
Если Power Pivot, то не обязательно объединять в одну таблицу, можно настроить связи между существующими.
Данные ценового мониторинга иногда можно объединять в одну, если есть общая структура.
Но нужно смотреть пример и задачу - конкретные решения могут быть разные.
F1 творит чудеса
PQ. Замена значений по нескольким условиям
 
Цитата
Kintoho написал:
суть записи (value, old, new)
Примитивное исследование показало, что по умолчанию в функции Table.ReplaceValue используется например, функция Replacer.ReplaceText, принимающая на вход 3 аргумента, в справке по ней обозванные как value, old, new. При этом понятно, что раз мы указываем в Table.ReplaceValue название функции без прямой передачи этих аргументов, значит, Table.ReplaceValue передает эти аргументы где-то внутри, хотя по сути мы их задаем там же в общих аргументах - имя столбца, старое значение, новое значение.  Но сама функция замены нас не устроила, поэтому создали свою функцию, которая также берет три аргумента, в том же порядке.
Код функций (в сокращенном представлении) пишется как (arg1, arg2, ..., argN) => function body. Можно задать типы аргументов и тип возвращаемого значения.
Цитата
(value, old, new)=>Text.Combine(Splitter.SplitTextByAnyDelimiter(Text.ToList(old))(value),new)
ну назвал их тоже value, old, new, хотя изначально они были v, o, n - тут сами имена не важны, важен порядок подачи в функцию.
Изменено: Максим Зеленский - 9 Авг 2018 18:48:06
F1 творит чудеса
PQ. Замена значений по нескольким условиям
 
Андрей VG, ну если именно удаление, то конечно так проще. Я среагировал на это:
Цитата
Kintoho написал:
указать сразу несколько значений для замены
и в моем примере я заменяю на точку, кстати :)
Изменено: Максим Зеленский - 9 Авг 2018 12:32:21
F1 творит чудеса
Power Query: отображение шагов в параметрах запроса, отображение (или нет) пошагового решения в параметрах запроса
 
Код
let
    ...
    Последний шаг = ...
in
    Последний шаг

видны шаги
Код
let
    ...
    Предпоследний шаг = ...
in
    какая-то функция

не видны шаги
Код
let
    ...
    Предпоследний шаг = ...
    Последний шаг = какая-то функция
in
    Последний шаг

развернули
Изменено: Максим Зеленский - 9 Авг 2018 11:53:43
F1 творит чудеса
PQ. Замена значений по нескольким условиям
 
Цитата
Kintoho написал:
Можно ли в функции  Table.ReplaceValue
можно:
= Table.ReplaceValue(#"Убрать!@#", "@!#", ".", (value, old, new)=>Text.Combine(Splitter.SplitTextByAnyDelimiter(Text.ToList(old))(value),new), {"Арт"})
Цитата
Kintoho написал:
можно ли в Table.ReplaceValue при поиске указывать "любой" символ?
можно, но там уже кастомная функция посложнее будет. А что с найденным надо делать?
F1 творит чудеса
Power bi Как задать параметр даты для использования в формулах DAX
 
Опубликованный может, но тоже только разработчик (публикатор) отчета может это сделать в веб-сервисе
F1 творит чудеса
PQ загрузка JSON из файла
 
Цитата
Vsevolod написал:
Максим Зеленский , мне кажется Вы про вот  эту тему . Я поиском находил, как считывать данные из JSON файла - если там единый массив данных.
эта тема была не несколько дней назад. ладно, тоже воспользуюсь поиском:
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=107351&TITLE_SEO=107351-kak-izvlech-i-razbit-dannye-iz-yacheyki-s-json-v-sosednie-yacheyki&MID=889467#message889467
F1 творит чудеса
Power bi Как задать параметр даты для использования в формулах DAX
 
Zabubu, да, пропустил я шаг.
Надо включить загрузку параметра в модель:
F1 творит чудеса
Power bi Как задать параметр даты для использования в формулах DAX
 
Цитата
Zabubu написал:
через SELECTEDVALUE почему то не получилось.. отдает пустоту
потому что SELECTEDVALUE отдает ОДНО значение. Если выбран диапазон дат, то конечно там может быть больше одного значения, и она по умолчанию отдает пустоту. Но это решается при помощи второго аргумента: там как раз можно написать сразу MAX('календарь'[Дата]).
Но если срез из ползунка переделать в выпадающий список, то тогда и SELECTEDVALUE будет работать :)
F1 творит чудеса
Power bi Как задать параметр даты для использования в формулах DAX
 
Zabubu, в Power BI Desktop вообще-то возможно создать так называемый параметр What-If. Для него есть специальная кнопка на вкладке Моделирование. Но там создается только числовой параметр. Если вам нужна именно дата, то тут два варианта - генерируете таблицу-календарь, не связанную с остальными таблицами, формируете срез по ней, ловите выбранное значение через SELECTEDVALUE, бинго. Либо, если этот параметр может меняться очень редко, его можно поместить в параметры еще на стадии редактирования запросов, тогда его можно будет достать в виде однострочной одностолбцовой таблицы и читать через VALUES
F1 творит чудеса
DAX возможность добавления вычисляемых строк
 
В общем, в сводной таблице строка может появиться только из имеющихся в какой-то таблице. Соответственно, вам нужно составить справочник строк, а уже затем связать его с таблицей данных и использовать его в сводной. Тогда решение возможно.
F1 творит чудеса
Установка надстройки Powerpivot, Excel 2016
 
Цитата
Дмитрий Марков написал:
по вычисляемым полям и KPI, который встроенный в excel проще реализован
не уверен... KPI в том же виде, как в Excel, в Power BI вроде нет :) но вот меры и столбцы в нём куда как удобнее...
Впрочем, на вкус и цвет
F1 творит чудеса
DAX возможность добавления вычисляемых строк
 
Цитата
edikkide написал:
не совсем получить новую меру, а возможность добавить новые расчётные строки.
вам именно такое решение и предложили (правда, без меры здесь ну никак :) ). Просто пример стоило сразу приложить, потому и решение в том же виде, как вы представили данные :)
F1 творит чудеса
DAX возможность добавления вычисляемых строк
 
такой размер пролезет
F1 творит чудеса
[Работа] Создание выгрузки в CSV из данных листа Excel по хитрой схеме
 
В работе у RAN, задержка по моей вине - уточнение входных условий.
F1 творит чудеса
Расчет остатка запасов нарастающим итогом по месяцам на языке M или DAX
 
Аналогично на DAX :)
PS. Андрей, сорри, что не отписался в теме - отправил автору в личку и забыл здесь отметиться
F1 творит чудеса
PowerPivot DAX кол-во уникальных пересечений по одному столбцу
 
Андрей VG, я, не долго думая, взял паттерн с одноименного сайта, не вникая глубоко. Всё равно предполагал что-то подобное, а тут бац - готовое решение.
Хотя вот тут Марко отвечает на похожий вопрос и про SUMMARIZE/VALUES, и про использование CALCULATETABLE в этой формуле тоже.
F1 творит чудеса
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 125 След.