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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 49 След.
Power Query. Разбить список по группам, ориентируясь на определенное значение в этом списке
 
Добавлю еще вариант локальной группировки. А там уже можно столбец группы легко добавить:
Код
let
  data  = Excel.CurrentWorkbook(){[ Name = "Список" ]}[Content],
  typed = Table.TransformColumnTypes ( data, { { "Список", type text } } ),
  group = Table.Group ( typed, "Список", { { "tbl", ( t ) => t, type table } }, GroupKind.Local, ( s, c ) => Number.From ( c = "Продукт" ) )
in
  group
PQ - не работает склейка (&) в добавлении столбца
 
Hypohelix, потому что null & "любой текст" = null.
Начало и конец графиков процесса в одном столбце
 
Electric_80, в Вашем коде Table.Alternate для чего? Или Вы не понимаете, что делает эта функция?
Описание ужасное :) Погадаем:
Код
let
  data = Csv.Document (
    File.Contents ( "C:\Users\kovalev.i\Downloads\TRENDN17\TRENDN17.csv" ),
    [ Delimiter = ",", Columns = 6, Encoding = 1251, QuoteStyle = QuoteStyle.None ]
  ),
  promHeads = Table.PromoteHeaders ( data, [ PromoteAllScalars = true ] ),
  typed = Table.TransformColumnTypes (
    promHeads,
    {
      { "Trend 1 Time", type datetime },
      { "Trend 2 Time", type datetime },
      { "Trend 3 Time", type datetime },
      { "Trend 1 ValueY", type number },
      { "Trend 2 ValueY", type number },
      { "Trend 3 ValueY", type number }
    }
  ),
  addInd = Table.AddColumn ( typed, "process ind", each [Trend 1 ValueY] <> 0 or [Trend 2 ValueY] <> 0 or [Trend 3 ValueY] <> 0, type logical ),
  group = Table.Group (
    addInd,
    { "process ind" },
    {
      { "Дата", ( t ) => Date.From ( List.Min ( t[Trend 1 Time] ) ), type date },
      { "Trend 1 start", ( t ) => Time.From ( List.Min ( Table.SelectRows ( t, ( r ) => r[Trend 1 ValueY] <> 0 )[Trend 1 Time] ) ), type time },
      { "Trend 1 end", ( t ) => Time.From ( List.Max ( Table.SelectRows ( t, ( r ) => r[Trend 1 ValueY] <> 0 )[Trend 1 Time] ) ), type time },
      { "Trend 2 start", ( t ) => Time.From ( List.Min ( Table.SelectRows ( t, ( r ) => r[Trend 2 ValueY] <> 0 )[Trend 2 Time] ) ), type time },
      { "Trend 2 end", ( t ) => Time.From ( List.Max ( Table.SelectRows ( t, ( r ) => r[Trend 2 ValueY] <> 0 )[Trend 2 Time] ) ), type time },
      { "Trend 3 start", ( t ) => Time.From ( List.Min ( Table.SelectRows ( t, ( r ) => r[Trend 3 ValueY] <> 0 )[Trend 3 Time] ) ), type time },
      { "Trend 3 end", ( t ) => Time.From ( List.Max ( Table.SelectRows ( t, ( r ) => r[Trend 3 ValueY] <> 0 )[Trend 3 Time] ) ), type time }
    },
    GroupKind.Local
  ),
  filter = Table.SelectRows ( group, each ( [process ind] = true ) ),
  delInd = Table.RemoveColumns ( filter, { "process ind" } )
in
  delInd
Умножение массива на число по условию в PQ, PQ, умножить часть массива на 1000
 
Цитата
tmhashNIK написал:
зачем создается список, а потом развёртывается
Список нигде не развертывается. Читайте описание Record.TransformFields: вторым аргументом нужно передать список списков ( { { Имя записи1, Функция преобразования1 }, .. , { Имя записиN, Функция преобразованияN }  } ). Вот и создаем этот список.
Изменено: surkenny - 27.06.2022 23:13:32
Разнесение оплат по счетам в Power BI
 
1. Очень длинное описание. Это ТЗ а не вопрос.
2. Где в данных идентификатор счета хоть где-то? Что Вы вообще имеете в виду под счетом? Счет клиента? Счет за услуг? Бухгалтерский счет?
3. Где попытки хоть что-то сделать? В примере голые данные.

В общем, бесплатно разбираться и решать реальную задачу (а не помогать) не готов.

Цитата
Антон написал:
могу я это реализовать
99%, что можно.
Изменено: surkenny - 27.06.2022 23:06:54
Вопрос быстродействия в PQ (Table.Buffer или List.Buffer), Буферизация значения в PQ из таблицы параметров
 
Дмитрий Овчинников, PQ не пересчитывает скалярные величины. В данном случае просто значения шага вынесите в отдельный шаг:
Код
let
  data    = Excel.CurrentWorkbook(){[ Name = "Исходник" ]}[Content],
  step    = Excel.CurrentWorkbook(){[ Name = "tParam" ]}[Content]{0}[Шаг],
  addClmn = Table.AddColumn ( data, "Расчет с шагом", each [Число] + step, type number )
in
  addClmn
Частичная замена значений в PQ
 
Msi2102, зло эти регулярки. Они оооочень медленные. :)
Евгений Валерьевич, можно так:
Код
let
  data = Excel.CurrentWorkbook(){[ Name = "data" ]}[Content],
  transform = Table.TransformColumns (
    data,
    {
      {
        "Получатель счета",
        ( x ) =>
          if Text.Remove ( Text.AfterDelimiter ( x, " ", { 0, RelativePosition.FromEnd } ), { "0" .. "9" } ) = "/" then
            Text.BeforeDelimiter ( x, " ", { 0, RelativePosition.FromEnd } )
          else
            x,
        type text
      }
    }
  )
in
  transform
PQ - обработка даты
 
Kirill_KN, Вы от нас что-то утаиваете. 2022113 почему не 03.11.2022?
Если и 13.01.2022 и 03.11.2022 в Вашем случае выглядят как 2022113, то восстановить дату корректно невозможно.
Изменено: surkenny - 24.06.2022 16:14:00
Power query игнорировать отсутствие листа
 
Margo_, уберите try … otherwise из второго шага функции и добавьте ещё один шаг (или в результат сразу):
Код
in
    try #"Строки с примененным фильтром" otherwise #table ( {}, {} )
Изменено: surkenny - 24.06.2022 07:32:17
Умножение массива на число по условию в PQ, PQ, умножить часть массива на 1000
 
tmhashNIK, попробуйте так:
Код
let
  src = Excel.CurrentWorkbook(){[ Name = "пример" ]}[Content],
  dataClmns = List.Buffer ( List.RemoveItems ( Table.ColumnNames ( src ), { "Склад", "Код", "Статья" } ) ),
  typed = Table.TransformColumnTypes (
    src,
    { { "Склад", type text }, { "Код", type text }, { "Статья", type text } } & List.Transform ( dataClmns, ( x ) => { x, type number } )
  ),
  transformLst = List.Buffer ( List.Transform ( dataClmns, ( x ) => { x, ( y ) => y * 1000 } ) ),
  transform = Table.FromRecords (
    Table.TransformRows ( typed, ( r ) => if Text.StartsWith ( r[Код], "1" ) then r else Record.TransformFields ( r, transformLst ) ),
    Value.Type ( typed )
  )
in
  transform
Изменено: surkenny - 23.06.2022 23:57:04
Фильтрация вложенной таблицы Power Query
 
Константин Иванов, вот вместо Вашей рукописи лучше бы сделали то, что Msi2102 попросил. И отговорка, что Вы данные из БД тащите, не принимается :) Мы от Вас как раз данные и не хотим, а нужен пример этих данных. Конечно, если хотите решение получить, а не просто выговориться :)
Изменено: surkenny - 23.06.2022 22:48:54
PQ. Размножить значения по условиям из соседних столбцов, Нужно решение функцией.
 
memo, как по мне - отличный вариант. Нечего тут упрощать :)
Фильтрация вложенной таблицы Power Query
 
Константин Иванов, добавление индекса уже нарушает свертывание запроса. Почему не сделать нужное Вам на стороне БД?
Замена дубликатов другими значениями, Замена дубликатов на null
 
Евгений, нафига предоставлять реальный запрос, так еще и без источников данных? Так сложно сделать пример именно для Вашего вопроса?
Код
let
  table = Table.FromRows (
    { { "a", 1, 2 }, { "a", 2, 3 }, { "b", 3, 4 }, { "b", 5, 6 }, { "b", 6, 7 } },
    type table [ Номенклатура = text, clmn1 = Int64.Type, clmn2 = Int64.Type ]
  ),
  group = Table.Group (
    table,
    { "Номенклатура" },
    {
      {
        "tbl",
        ( t ) =>
          [
            remove  = Table.RemoveColumns ( t, { "Номенклатура" } ),
            toClmns = Table.ToColumns ( remove ) & { { t[Номенклатура]{0} } },
            toTbl   = Table.FromColumns ( toClmns, Table.ColumnNames ( remove ) & { "Номенклатура" } ),
            reorder = Table.ReorderColumns ( toTbl, Table.ColumnNames ( t ) )
          ][reorder],
        Value.Type ( table )
      }
    },
    GroupKind.Local
  ),
  combine = Table.Combine ( group[tbl] )
in
  combine
Получить предыдущее значение SELECTEDVALUE
 
turbo7844, Ігор Гончаренко Вас триллит:)
Я не могу себе представить кейс, в котором это нужно вообще. Сделайте 2 среза для выбора что с чем сравнивать.
Возможно, на pithon/R это можно реализовать.
Подсчёт количества дней
 
Ivan Petrov, а если подумать? :)
результат 12, а нужно 13,
результат 125, а нужно 126,
...
результат 2, а нужно 3.
Что же сделать?
Скрытый текст
Изменено: surkenny - 17.06.2022 17:13:35
Power Query Рассчитать остаток на начало дня
 
Ирина Григорьева, в PQ можно так:
Код
let
  lastDate = #date ( 2022, 06, 30 ),
  data = Excel.CurrentWorkbook(){[ Name = "Таблица1" ]}[Content],
  typed = Table.TransformColumnTypes ( data, { { "Дата", type date }, { "Остаток, кор.", type number }, { "Уходимость в день, кор.", type number } } ),
  addGen = Table.AddColumn (
    typed,
    "recs",
    ( r ) =>
      List.Generate (
        () =>  [
          left   = r[#"Остаток, кор."] - r[#"Уходимость в день, кор."],
          order  = if left < r[#"Уходимость в день, кор."] then 10 else null,
          record = Record.Combine ( { r, [ Разместить заказ = order, Остаток на конец = left ] } ),
          res    = Record.RenameFields ( record, { { "Остаток, кор.", "Остаток на начало" }, { "Уходимость в день, кор.", "Уходимость в день" } } )
        ],
        each [res][Дата] <= lastDate,
        each [
          prevOrder = List.Max ( { 0, [res][Разместить заказ] } ),
          left = [res][Остаток на конец] + prevOrder - [res][Уходимость в день],
          order = if left < [res][Уходимость в день] then 10 else null,
          res = Record.TransformFields (
            [res],
            {
              { "Дата", ( x ) => Date.AddDays ( x, 1 ) },
              { "Остаток на начало", ( x ) => [res][Остаток на конец] + prevOrder },
              { "Разместить заказ", ( x ) => order },
              { "Остаток на конец", ( x ) => left }
            }
          )
        ],
        each [res]
      )
  ),
  combine = Table.FromRecords ( List.Combine ( addGen[recs] ) )
in
  combine
Изменено: surkenny - 17.06.2022 16:26:09
Power Query оптимизация запроса
 
Ирина Григорьева, какое отношение к теме имеет Ваш вопрос? Создайте отдельную тему.
P.S. Смотрите в сторону List.Generate.
Power Query Вставить столбец по сложному условию, Как реализовать многочисленные условия ЕСЛИ (возможно вложенными подзапросами)
 
Ольга, вариант:
Код
let
  data = Excel.CurrentWorkbook(){[ Name = "data" ]}[Content],
  group = Table.Group (
    data,
    { "Транзакция" },
    {
      {
        "tbl",
        ( t ) =>
          [
            rowsCondition = List.Count ( List.Select ( t[Сумма], ( x ) => x <> 0 ) ) = 3,
            feeCondition = List.Count ( List.Select ( t[Тип], ( x ) => x = "сбор" ) ) = 1,
            cur1 = Table.SelectRows ( t, ( r ) => r[Сумма] < 0 )[Валюта]{0},
            cur2 = Table.SelectRows ( t, ( r ) => r[Сумма] > 0 and r[Тип] <> "сбор" )[Валюта]{0},
            result = Table.AddColumn (
              t,
              "Валютная пара",
              ( r ) =>
                if rowsCondition and feeCondition then
                  if r[Сумма] > 0 and r[Тип] <> "сбор" then cur1 else if r[Сумма] < 0 then cur2 else null
                else
                  null,
              type text
            )
          ][result]
      }
    }
  ),
  combine = Table.Combine ( group[tbl] )
in
  combine
Power Query Вставить столбец по сложному условию, Как реализовать многочисленные условия ЕСЛИ (возможно вложенными подзапросами)
 
Ольга, а в каком виде результат-то нужен?
Как слить два списка в один и удалить дубликаты формулами динамического массива?
 
Цитата
voler83 написал:
Будет огромное кол-во таблиц, сотни тысяч записей, все должно работать с минимальными затратами ресурсов, автоматически по загруженным выгрузкам из бух. системы. Поэтому ищу минимально простые формулы.
Какие формулы? PQ.
PQ: Конвертация столбцов с датами и суммами с разными форматами в один общий
 
Framed, если в файле данных будут только даты вида aa/bb/yyyy, где ни aa, ни bb не превышает 12, то локаль не определить.
Попробуйте так:
Функция, определяющая локаль дат:
f_DateLocal
Код
( table as table, columns as list ) =>
  let
    clmns        = Table.SelectColumns ( table, columns ),
    dates        = List.Buffer ( List.RemoveMatchingItems ( List.Combine ( Table.ToColumns ( clmns ) ), { "" } ) ),
    secondNumber = List.Transform ( dates, ( x ) => Number.From ( Text.SplitAny ( x, Text.Remove ( x, { "0" .. "9" } ) ){1} ) ),
    local        = if List.Max ( secondNumber ) > 12 then "en-US" else "ru-RU"
  in
    local

Обработка всех файлов в папке:
Код
let
  files = Folder.Files ( "C:\Users\kovalev.i\Downloads\Dates\Sources" ),
  getData = Table.TransformColumns (
    files[[Content]],
    {
      {
        "Content",
        ( file ) =>
          [
            csv = Csv.Document ( file, [ Delimiter = ",", Encoding = 1251, QuoteStyle = QuoteStyle.None ] ),
            skip = Table.Skip ( csv, 1 ),
            promHeads = Table.PromoteHeaders ( skip, [ PromoteAllScalars = true ] ),
            local = f_DateLocal ( promHeads, { "AUGDT", "ZFBDT" } ),
            transform = Table.TransformColumns (
              promHeads,
              List.Transform ( { "AUGDT", "ZFBDT" }, ( x ) => { x } & { ( y ) => Date.From ( y, local ) } & { type date } )
                & List.Transform (
                  { "DMBTR", "WRBTR" },
                  ( x ) =>  { x }
                    & {
                      ( y ) => try Number.From ( y ) otherwise try Number.FromText ( y, "en-US" ) otherwise Number.From ( Text.Remove ( y, { "." } ) )
                    }
                    & { type number }
                )
            )
          ][transform]
      }
    }
  ),
  combine = Table.Combine ( getData[Content] )
in
  combine
Извлечь данные в скобках из ячейки
 
В PQ:
Код
let
  text      = Table.FirstValue ( Excel.CurrentWorkbook(){[ Name = "nomenclature" ]}[Content] ),
  split     = Text.SplitAny ( text, "()" ),
  alternate = List.Alternate ( split, 1, 1 ),
  select    = List.Select ( alternate, ( x ) => Text.Length ( x ) = 10 ),
  toTable   = Table.FromColumns ( { select }, type table [ #"СК-МТР" = text ] )
in
  toTable
Приведение времени внутри суток к 24-часовому виду, с помощью VBA
 
Цитата
МатросНаЗебре написал:
Пишу в личку.
:) Если не срастется, то за Вами буду.
Как извлечь артикул из середины текста.
 
В PQ (сортировка по длине артикула уже в коде):
Код
let
  VCs       = Excel.CurrentWorkbook(){[ Name = "vendor_code" ]}[Content],
  VCsLst    = List.Buffer ( List.Sort ( Table.ToColumns ( VCs ){0}, ( x ) => - Text.Length ( x ) ) ),
  products  = Excel.CurrentWorkbook(){[ Name = "product" ]}[Content],
  transform = List.Transform ( Table.ToColumns ( products ){0}, ( x ) => List.Select ( VCsLst, ( vc ) => Text.Contains ( x, vc ) ){0}? ),
  result    = Table.FromColumns ( { transform }, type table [ Артикул = text ] )
in
  result
Приведение времени внутри суток к 24-часовому виду, с помощью VBA
 
Если устроит, можно сразу в PQ данные из CSV обрабатывать и выгружать на лист.
Но, судя по данным и ЭТОЙ теме , могут быть нюансы, которые нужно обсудить.
Пока заказ НЕ занимаю.
Изменено: surkenny - 16.06.2022 13:12:21
задача на распределение ресурсов (Поиск Решений?), Solver, Поиск решений
 
badzen, в PQ решаемо. Правда тут Вы не помощи просите, а решить за Вас :) Платно - вэлком :)
Пример результата:
PQ. Решить проблему с изменением значений в столбце таблицы после объединения 2х таблиц
 
Neostt,
1. Запрос вычисляется с конца.
2. ни группировка, ни join не гарантируют сохранения порядка строк.
Когда Вы видите предпросмотр результата в шаге "Объединенные запросы" или "Добавлен пользовательский объект1", то как бы все хорошо. Но в полном запросе в этих шагах другой порядок строк :).

Решение:
Сортировку делайте в группировке перед добавлением индекса, а перед группировкой удалите:
У Вас такой вариант с добавлением таблицы:
Код
  #"Добавлен пользовательский объект1" = Table.AddColumn (
    #"Сгруппированные строки", 
    "tbl2", 
    each Table.AddIndexColumn ( Table.Sort ( [tbl], { { "Время2", Order.Ascending } } ), "Место", 1, 1, Int64.Type )
  ) 

Но я бы это сделал в одном шаге, к чему таблицы-то плодить? :)
Код
  #"Сгруппированные строки" = Table.Group (
    #"Сортированные строки", 
    { "Номер заезда ПФ" }, 
    { { "tbl", ( t ) => Table.AddIndexColumn ( Table.Sort ( t, { { "Время2", Order.Ascending } } ), "Место", 1, 1, Int64.Type ), type table } }
  )
Изменено: surkenny - 16.06.2022 11:11:23
создание количества строк по условию
 
badzen, в PQ:
Код
let
  data      = Excel.CurrentWorkbook(){[ Name = "input" ]}[Content],
  toRows    = Table.ToRows ( data ),
  transform = List.Transform ( toRows, ( x ) => List.Repeat ( { x{0} }, x{1} ) ),
  toTable   = Table.FromColumns ( { List.Combine ( transform ) }, { Table.ColumnNames ( data ){0} } )
in
  toTable
Power pivot среднее за определенный период
 
Дмитрий, хоть бы написали, среднее среди каких значений? Всех отделов-подразделений?
Без учета отсутствующих в данных за месяц пар отдел-подразделение:
Код
Среднее 2 :=
CALCULATE (
    AVERAGEX (
        SUMMARIZE ( 'Таблица'; 'Таблица'[YM]; 'Таблица'[Отдел]; [Подразделение] );
        [Внесено]
    );
    ALL ( 'Таблица'[Отдел]; 'Таблица'[Подразделение] )
)

Если отсутствующие нужно учитывать для расчета среднего, то гораздо проще, если был бы справочник отделов и календарь.
Обратите внимание, что среднее по месяцу - это вряд ли корректно. Нужно среднее по ГодМесяцу.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 49 След.
Наверх