Мне не нужна последняя запись. Мне нужны все записи, которые соответствуют диапазону дат. В примере, для простоты восприятия сделано меньше записей в таблице продаж. Но записей может быть много.
Цитата
написал: по дате и менеджеру связывать
Эта задача не решается при помощи суррогатного ключа.
Прошу помочь с решением задачи. У меня имеются следующие таблицы:
Я использую JOIN, чтобы создать общую таблицу, где объединены данные по продажам и офисам. Ключом для объединения является менеджер. В результате я получаю некорректное распределение городов, т.к. данные объединяются только по менеджеру, без учёта дат.
В алгоритм необходимо добавить условие, при котором будет учитываться дата зачисления / перевода сотрудника в какой-то город. JOIN города в таблицу продаж должен учитывать даты.
Необходимый результат:
Прикладываю файл примера с подключением. Благодарю!
surkenny, оба сценария интересны! Первый для себя уже разобрал. Второй надо понять. KEEPFILTERS() обычно не приходится использовать. Помню из книги, что эта функция не модифицирует контекст, а влияет на работу модификаторов контекста (что-то вроде того).
mechanix 85, будущие не наступили, поэтому для них не считать. В таблицу Fact я добавил данные за будущие месяцы, чтобы протестировать решение: допустим указать, что сегодня = 21.12.2021. В этом случае октябрь и ноябрь должны быть вычислены по первому сценарию, а декабрь по второму.
PQ. Создание полей на основании разделителя в строках., Имеется поле, в котором находится несколько атрибутов, которые необходимо разделить на разные поля.
PQ. Создание полей на основании разделителя в строках., Имеется поле, в котором находится несколько атрибутов, которые необходимо разделить на разные поля.
PQ. Создание полей на основании разделителя в строках., Имеется поле, в котором находится несколько атрибутов, которые необходимо разделить на разные поля.
Прошу помочь с решением задачи. Пишу на форум, т.к. не пойму как решить задачу "красиво". Прикладываю пример, в котором представлены исходные данные и требуемый результат.
DAX. Передача контекста фильтра для измерений не связанных с фактами., Справочник был дополнен измерением не связанным с таб. событий, необходимо передать контекст.
Прошу помочь с решением задачи. Как фильтровать таблицу списком - я понял: Table.SelectRows( source, each List.Contains(list_filter, [Код])) Не могу понять как отфильтровать список не переводя его в таблицу. Я пробовал:
Код
let
Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
ИзменённыйТип = Table.TransformColumnTypes(
Источник,{
{"Поле 1 Date", type date},
{"Поле 2", type text},
{"Поле 3 Date", type date},
{"Поле 4", type text}
}
),
СписокПолей = Table.ColumnNames(ИзменённыйТип),
СписокПолейФильтр = List.Select(
СписокПолей,
each {_, (t) => List.Contains(t, "Date")}
)
in
СписокПолейФильтр
Прошу помочь с решением. Имеется таблица, у которой в одной ячейке содержатся даты, текст, перенос строки: #(lf)
В [Поле 2], в первой ячейке после каждой записи содержится перенос строки. Необходимо оставить только даты с перечислением через "; "
У меня возникли сложности с тем, чтобы удалить следующие сценарии: 1. Текст + перенос строки - могу удалить только текст, а не связку 2. Перенос строки как первая запись - не могу удалять перенос строки, т.к. использую его для замены на "; " Иногда помогает Trim.
Благодаря помощи формучан (ссылка, ссылка) я составил запрос на чистку записей от текста:
Код
let
Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
СписокПолей = {"Поле 2", "Поле 3"},
УдалениеТекста = Table.TransformColumns(
Источник,
List.Transform(
СписокПолей,
each {_, (t) => Text.Remove(
t,{
"А".."я",
"A".."z",
"(",
")",
"ё"
})
}
)
)
in
УдалениеТекста
Результат:
После того, как я заменяю #(lf) на "; " - я получаю "; ; "
let
Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
Вывод = Table.TransformColumns(
Источник,
List.Transform(
{"Поле 2", "Поле 3", "Поле 4"},
each {_,(t)=>Text.Split(Text.From(t),"; "), type list}) )
in
Вывод
Вывод = Table.TransformColumns(
Источник,
List.Transform(
Table.ColumnNames(Источник),
each {_,(t)=>try Text.Split(t,";") otherwise {t}, type list}) ),
итог = Table.SelectColumns(Table.AddColumn(Вывод, "данные", each Table.FromColumns({[Поле 1], [Поле 2], [Поле 3], [Поле 4]})), "данные"),
Table.ColumnNames(Источник) - мне не хотелось бы передавать всю таблицу. У меня может быть 10 полей которые не нуждаются в "извлечении". На следующем шаге мне придётся прописать эти 10 полей с теми, что мне нужны:
PooHkrd, в Вашем решении, вся таблица превращается в список в вложенными списками, т.к. в Table.ColumnNames(Источник) передаётся вся таблица. Каким образом можно передать только некоторые столбцы?
PooHkrd, благодарю! Сейчас попробую. PooHkrd, я заметил, что при моём подходе, если в ячейке ничего нет (null), то в новом столбце появляется ошибка. Можно Вас попросить подсказать как установить "обработку" данного сценария?