Powerquery для распознавания временных меток, принадлежащих сдвигу, который охватывает две последовательные даты - PullRequest
0 голосов
/ 20 мая 2018

У меня есть данные в таблице Excel, сгенерированные некоторыми программами, которые мы используем на сайте, отчет помечен как:

6/05/2018 6:23:00 AM

Asмы работаем 24 часа, мне нужно, чтобы PowerQuery мог распознать, что временные метки с 12:00:00 до 7:00:00 AM относятся к ночной смене предыдущего дня.

Проблема, с которой я сталкиваюсь, заключается в том, что, хотя PowerQuery может обрабатывать дату / время как тип данных, похоже, он сокращает время при импорте данных, так что результат для приведенного выше примера в моем запросе (иочевидно в моем выводе) это

6/05/2018 12:00:00

Большинство вещей, которые я могу найти в сети, о том, как сократить время - я хочусохранить его !!!

Цель этого состоит в том, чтобы я мог отображать записи в хронологическом порядке для ночной смены производства в сводной таблице.В настоящее время мне нужно добавить еще один столбец с одним только временем, что приводит к тому, что данные с полуночи до 7:00 утра предшествуют данным с 19:00 до полуночи - тогда как на самом деле это произошло после.

Cheers,

Мат

Редактирование: добавление картинок моей проблемы, когда я печатаю, я не вижу изображения в ветке, поэтому надеюсь, что они находятся в правильных местах!

Пример моегоВ исходных данных отметка времени указана в столбце «Время». Другая дата, приведенная справа, показывает, что я что-то получаю, так что, по крайней мере, у меня есть дата смены и фактическое время вместе.

Исходные данные

Ниже приведен мой запрос, здесь есть много того, что добавляет исходное местоположение к предопределенному набору атрибутов, в основном я борюсь с тем, что поле «Время» импортируется, но теряетвсе данные после десятичной точки, поэтому я просто получить дату.Я хочу, чтобы это время было добавлено к этой дате, а также есть другое поле, которое является датой смены, как описано выше.

let
    // Removes unwanted characters.
    CharsToRemove = List.Transform({33..45,47,58..126}, each Character.FromNumber(_)),
    // The query is all based on the current month's portion of the current 13wk. 
    Source = Location_Data,
    // Set some data fields, not all are changed here as it affects later calculations.
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Group Name", type text}, {"Name", type text}, {"Waste tonnes", type number}, {"Total Ore Tonnes", Int64.Type}, {"Dil cu_pct", type number}, {"Dil au", type number}, {"Dil ag", type number}, {"Dil fe_pct", type number}, {"Dil zn_pct", type number}, {"Density", type number}, {"Material", type text}, {"Type", type text}, {"Active from", Int64.Type}, {"Active to", Int64.Type}, {"Comments", type text}}),
    // This steps add the MTD trucking data, and correlates it with our claim grades and density based on two fields, "Name" and "Material".
    #"Merged Queries" = Table.NestedJoin(Source,{"Name", "Material"},LoadTrak_Data,{"Load Origin", "Material"},"NewColumn",JoinKind.LeftOuter),
    // This step expands the trucking data so we can work with the each column individually, such as truck ID, Date/time, Load Volume, etc.
    #"Expanded NewColumn" = Table.ExpandTableColumn(#"Merged Queries", "NewColumn", {"Record", "Time", "Dir.", "Operator", "Truck ID", "Load (m3)", "Truck Operator", "Crew", "Shift", "Material", "Load Origin", "Dumped At", "Day", "Shift Time", "Calc Shift"}, {"Record", "Time", "Dir.", "Operator", "Truck ID", "Load (m3)", "Truck Operator", "Crew", "Shift", "Material.1", "Load Origin", "Dumped At", "Day", "Shift Time", "Calc Shift"}),
    #"Changed Type3" = Table.TransformColumnTypes(#"Expanded NewColumn",{{"Time", type number}}),
    #"Sorted Record low to high" = Table.Sort(#"Changed Type3",{{"Record", Order.Ascending}}),
    #"Added Error Volume Column" = Table.AddColumn(#"Sorted Record low to high", "Error Volume", each if [#"Load (m3)"] = null then "28.2" else null ),
    #"Changed Error Volume to decimal number" = Table.TransformColumnTypes(#"Added Error Volume Column",{{"Error Volume", type number}}),
    #"Added Custom1" = Table.AddColumn(#"Changed Error Volume to decimal number", "DMT", each if [#"Dir."] = null then null else if [#"Load (m3)"] = null then ([Error Volume]*[Density] * 0.7) else [#"Load (m3)"] * [Density] * 0.7),
    #"Added Custom2" = Table.AddColumn(#"Added Custom1", "Level Loaded", each if [Load Origin] = "Empty" then 0 else (Text.Start([Load Origin],4))),
    #"Creates shift date" = Table.AddColumn(#"Added Custom2", "Shift Date", each if [Shift Time] is null then null else if [Shift Time] < 0.2916 then [Time] -1 else [Time]),
    #"Added Custom" = Table.AddColumn(#"Creates shift date", "Correct location", each if [#"Dir."] = null then null else if ([Shift Date]) < ([Active from]) or ([Shift Date]) > (([Active to])+0.999999) then "No" else "Yes"),
    #"Changed Type1" = Table.TransformColumnTypes(#"Added Custom",{{"Level Loaded", type number}}),
    #"Level Dumped" = Table.AddColumn(#"Changed Type1", "Level Dumped", each if [Dumped At] = "ROM" then 5270 else if [Dumped At] = "PAF" then 5170 else if [Dumped At] = "Paste" then 5270 else if [Dumped At] = "Waste" then 5270 else Text.Start([Dumped At], 4)),
    #"Change Level Dumped to decimal number" = Table.TransformColumnTypes(#"Level Dumped",{{"Level Dumped", type number}}),
    #"Added TKMs column" = Table.AddColumn(#"Change Level Dumped to decimal number", "TKMs", each if [Dumped At] = "Waste" then (((([Level Dumped] - [Level Loaded])*7)+300)/1000 * [DMT]) else if [Dumped At] = "ROM" then (((([Level Dumped] - [Level Loaded])*7)+150)+300)/1000 * [DMT] else if [Dumped At] = "PAF" then (((([Level Dumped] - [Level Loaded])*7)+150)+300)/1000 * [DMT] else if [Dumped At] = "Paste" then (((([Level Dumped] - [Level Loaded])*7)+150)+300)/1000 * [DMT] else (([Level Dumped] - [Level Loaded])*7)/1000 * [DMT]),
    #"Changed TKMs to decimal number" = Table.TransformColumnTypes(#"Added TKMs column",{{"TKMs", type number}}),
    #"Filtered Correct Location to remove incorrect duplicates" = Table.SelectRows(#"Changed TKMs to decimal number", each [Correct location] <> "No"),
    #"Added load count helper column" = Table.AddColumn(#"Filtered Correct Location to remove incorrect duplicates", "Load", each if [Correct location] = "Yes" then 1 else ""),
    #"Filtered Rows1" = Table.SelectRows(#"Added load count helper column", each true),
    #"Filtered non-null Group Name rows" = Table.SelectRows(#"Filtered Rows1", each [Group Name] <> null and [Group Name] <> ""),
    #"Converts date fields to type date" = Table.TransformColumnTypes(#"Filtered non-null Group Name rows",{{"Active from", type date}, {"Active to", type date}, {"Time", type date}, {"Shift Date", type date}}),
    #"Merged with Sched_13wk" = Table.NestedJoin(#"Converts date fields to type date",{"Name", "Material"},Sched_13wk,{"Name", "Material"},"Sched_13wk",JoinKind.LeftOuter),
    #"Expanded Sched_13wk" = Table.ExpandTableColumn(#"Merged with Sched_13wk", "Sched_13wk", {"Dil cu_pct", "Material", "Scheduled Tonnes"}, {"Sched_13wk.Dil cu_pct", "Sched_13wk.Material", "Sched_13wk.Scheduled Tonnes"}),
    #"Changed Type2" = Table.TransformColumnTypes(#"Expanded Sched_13wk",{{"Shift Time", type time}, {"Day", type date}, {"Time", type date}})
in
    #"Changed Type2"

Ургхххх, что выглядит ужасно, хотя я не уверен, как лучше его включить.Lol заметки там, чтобы напомнить мне, что я делаю, когда я должен редактировать это.Все еще не закончено, желая добавить нагрузку еще, чтобы, если бы мне пришлось сменить положение, сидящий на моем стуле человек имел представление о том, что происходит в запросе!

И вот как данныев выводе запроса, смотрите, что все значения времени пропали.

Вывод без значений времени.

Хорошо, я действительно надеюсь, что это поможет.Как вы уже догадались, я не программист по профессии!

Данные отчета, которые копируются в мою книгу Excel, с дополнительной информацией, набираемой и запрашиваемой Отчет, генерируемый программным обеспечением, которое копируется и вставляется в книгу.содержащий запрос.

1 Ответ

0 голосов
/ 22 мая 2018

Проблема может быть решена с помощью Power Query для импорта из исходного текстового файла.Вы должны быть в состоянии решить проблемы с отметкой времени, а также упростить форматирование результатов.

Копирование / вставка часто НЕ является лучшим способом решения подобных проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...