Страницы: 1
RSS
Преобразование даты как число в дату в Power Query
 
Добрый день, уважаемые форумчане.
При склеивании ячейки с датой с другим значением, получается, что дата преобразовывается в число (пример в ячейке - C48 Лист1), в excel можно было преобразовать такую дату формулой приведенной в ячейке E48.
В столбце A:A на Листе2 где использовался такой формат даты (диапазон A46:A56), получается значение не как дата а как число.
Как можно в Power Query, преобразовать дату как число в правильное значение?
файл примера во вложении.
Заранее спасибо.
 
Разделить столбец по разделитель, выполнить анализ даты. Все делается кнопками. Ищите на вкладке преобразование.
 
Доброе время суток
Цитата
ymal_qeb написал:
дату формулой приведенной в ячейке E48.
Аналоги Text.PositionOf,  Text.Start, Number.From, Date.From - не стесняйтесь, читайте справочник. ;)
 
Код
Date.From(43471)
Вернет 27.11.2018
Изменено: Alexey_Spb - 29.01.2019 10:53:23
 
Андрей VG, спасибо, за ссылки на формулы в PQ, можете подсказать не совсем понимаю, а как сослаться на столбец данных?
 
Цитата
ymal_qeb написал:
как сослаться на столбец данных?
например так:
Код
Date.From( [название столбца] )
Вот горшок пустой, он предмет простой...
 
PooHkrd, ввел значение = Date.From([Счет-1.1]), но выдало ошибку: Expression.SyntaxError: Недопустимый идентификатор
 
Попробуйте:
Код
Date.From(Record.Field(_, "Счет-1.1"))
Изменено: Alexey_Spb - 29.01.2019 11:20:36
 
Цитата
ymal_qeb написал:
но выдало ошибку
В данном случае надо писать так.
Код
Date.From( [#"Счет-1.1"] )

Происходит так из-за использования в имени столбца спец. символов "-" и "."
Вот горшок пустой, он предмет простой...
 
Андрей VG, можете подсказать правильно ли я понял:
Date.From() - это аналог ДАТАЗНАЧ()
Text.Start() - это аналог ЛЕВСИМВ()
Text.PositionOf() - это аналог того, что я использовал для поиска знака "=" выдает количество символов до значения
не совсем понял смысл функции Number.From() - я так понял она выполняет обратное действие преобразовывает 11.11.2018 в 43433
(только введя команду Number.From(#date(2018, 11, 11)) - получается 43415 - у нее другая система преобразования?)
а какое функция заменяет формулу - ТЕКСТ("";"ДД.ММ.ГГГГ")?
или я не правильно понял значение функций?
Изменено: ymal_qeb - 29.01.2019 11:27:48
 
PooHkrd, введя
Код
Date.From( [#"Счет-1.1"] )
выдало ошибку: Expression.Error: Неизвестный идентификатор. Использовалось ли условное обозначение [field] для _[field] вне выражения "each"?
Изменено: ymal_qeb - 29.01.2019 11:31:00
 
Цитата
ymal_qeb написал:
только введя команду Number.From(#date(2018, 11, 11)) - получается 43415 - у нее другая система преобразования?)
Нет это вы слегка ошиблись. Система одна и та же.
Цитата
ymal_qeb написал:
выдало ошибку
Вы объясните в каком выражении хотите обратиться к столбцу, от этого будет зависеть как к нему обращаться.
Изменено: PooHkrd - 29.01.2019 11:33:53
Вот горшок пустой, он предмет простой...
 
PooHkrd, действительно ошибся, посмотрел на ячейку ниже.
 
Цитата
ymal_qeb написал:
а какое функция заменяет формулу - ТЕКСТ("";"ДД.ММ.ГГГГ")?
Код
Date.ToText( Дата, "dd/MM/yyyy" )

А Text.PositionOf() это замена Экселевского ПОИСК()
Изменено: PooHkrd - 29.01.2019 11:36:26
Вот горшок пустой, он предмет простой...
 
PooHkrd, а почему возникает ошибка:
Код
Date.From( [#"Счет-1.1"] )
Expression.Error: Неизвестный идентификатор. Использовалось ли условное обозначение [field] для _[field] вне выражения "each"?
 
Цитата
ymal_qeb написал:
а почему возникает ошибка:
Я отвечал
Цитата
PooHkrd написал:
Вы объясните в каком выражении хотите обратиться к столбцу, от этого будет зависеть как к нему обращаться.
Вот горшок пустой, он предмет простой...
 
PooHkrd, простите не увидел.
А что Вы подразумеваете под:
Цитата
в каком выражении хотите обратиться к столбцу
это выражения вот такого типа:
#"Разделить столбец по разделителю"
#"Строки с примененным фильтром"
Изменено: ymal_qeb - 29.01.2019 12:34:23
 
ymal_qeb, что вам нужно сделать с вашим файлом примером? Если вы только начинаете работать с PQ, и работаете с данными через кнопочки интерфейса, то для перехода к вашему вопросу: "как обращаться к столбцу?" Нужно для начала ознакомиться с материалами для начинающих. Ну, чтобы мы с вами хоть немного понимали друг друга. Также неплохо бы прочитать про то, кто такие функциональные языки программирования.
Вот горшок пустой, он предмет простой...
 
PooHkrd, нужно преобразовать значение как в диапазоне (A46:A56), в дату формата День.Месяц.Год (11.11.2018).
действительно Вы правы я только только начал пробовать интерфейс PQ.
----
спасибо за ссылки, буду изучать.
Изменено: ymal_qeb - 29.01.2019 12:57:45
 
Цитата
ymal_qeb написал:
Number.From
нужен чтобы преобразовать выделенную строку с цифрами в число, а уже с этим числом будет работать Date.From
Power Query не Excel - неявными преобразованиями, к счастью, не занимается.
Изменено: Андрей VG - 29.01.2019 13:08:43
 
PooHkrd, как я понял из первой части статьи, в PQ, обращения происходят не к ячейке, а к столбцу.
Андрей VG, так понимаю, что формула будет выглядеть примерно так:
Код
= Date.From(Number.From(43415))
осталось только найти как заменить значение - 43415, на обращение к столбцу.
PooHkrd, или Андрей VG, подскажите, как я понял из статьи на которую мне дал ссылку PooHkrd, можно обратить с столбцу формулой Table.Column.
Изменено: ymal_qeb - 29.01.2019 14:11:30
 
не знаю возможно способ реализации с помощью которого я это сделал, корявый, но работает.
если подскажите идею, или оператор который подходит для этого лучше, буду рад услышать.
спасибо, за представленные ссылки и разъяснение параметров: Андрей VG, PooHkrd.
 
Цитата
ymal_qeb написал:
как я понял из первой части статьи, в PQ, обращения происходят не к ячейке, а к столбцу.
Не правильно поняли. В PQ обращение происходит к чему угодно, и к таблице и к списку и к записи и к столбцу и к любому элементу из всего вышеперечисленного.
Главное здесь понимать в какой конкретно функции с каким видом данных вы в данный момент работаете.
Вот горшок пустой, он предмет простой...
 
PooHkrd, еще раз перечитал, статью я понял свою ошибку.
 
ymal_qeb,
Берем ваш крайний пример, конкретно шаг под названием "Вставлена проанализированная дата2". Здесь как раз реализовано обращение к элементам столбца [Сведено]
Код
= Table.AddColumn(#"Другие удаленные столбцы1", "Выполнить анализ", each Date.From(DateTimeZone.From([Сведено])), type date)

Хотя весь ваш запрос мог бы иметь такой вид:
Код
let
    Источник = Таблица1,
    #"Другие удаленные столбцы" = Table.SelectColumns(Источник,{"Счет-1"}),
    #"Удаленные дубликаты" = Table.Distinct(#"Другие удаленные столбцы"),
    #"Строки с примененным фильтром" = Table.SelectRows(#"Удаленные дубликаты", each [#"Счет-1"] <> ""),
    #"Разделить столбец по разделителю" = Table.SplitColumn(#"Строки с примененным фильтром", "Счет-1", Splitter.SplitTextByEachDelimiter({"="}, QuoteStyle.Csv, false), {"Счет-1.1", "Счет-1.2"}),
    #"Измененный тип" = Table.TransformColumnTypes(#"Разделить столбец по разделителю",{{"Счет-1.1", type date}, {"Счет-1.2", type text}})
in
    #"Измененный тип"

А чтобы получить этот шаг нужно было на этом этапе просто нажать вот такую кнопку, и выбрать пункт "Дата".
Изменено: PooHkrd - 29.01.2019 15:25:25
Вот горшок пустой, он предмет простой...
 
PooHkrd, если использовать последний приложенный Вами код, получается где были числа возникает ошибка: Error
Изменено: ymal_qeb - 29.01.2019 15:33:30
 
Гм, ну тогда так:
Код
let
    Источник = Table.Combine({Таблица1}),
    #"Другие удаленные столбцы" = Table.SelectColumns(Источник,{"Счет-1"}),
    #"Удаленные дубликаты" = Table.Distinct(#"Другие удаленные столбцы"),
    #"Строки с примененным фильтром" = Table.SelectRows(#"Удаленные дубликаты", each [#"Счет-1"] <> ""),
    #"Разделить столбец по разделителю" = Table.SplitColumn(#"Строки с примененным фильтром", "Счет-1", Splitter.SplitTextByEachDelimiter({"="}, QuoteStyle.Csv, false), {"Счет-1.1", "Счет-1.2"}),
    #"Измененный тип" = Table.TransformColumnTypes(#"Разделить столбец по разделителю",{{"Счет-1.1", type text}, {"Счет-1.2", type text}}),
    #"Смешанный текст в дату" = Table.TransformColumns(#"Измененный тип", {{"Счет-1.1", each try Date.From(_) otherwise Date.From(Number.From(_)), type date}})
in
    #"Смешанный текст в дату"
Вот горшок пустой, он предмет простой...
 
PooHkrd, спасибо теперь все отображается как надо, я так понимаю, Вы не плохо разбираетесь в PQ, можете подскажите, информацию для изучения?
 
ymal_qeb, ссылки что приводил ранее, и, что самое главное, справочники. Там есть вообще все что нужно растущему организму, и красители и консерванты.  :D
Вот горшок пустой, он предмет простой...
 
PooHkrd, спасибо, единственное для справочника придется подтянуть английский.
Страницы: 1
Наверх