В Power Query отсутствуют значения при раскрытии таблиц

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

То, что я понял до сих пор, проблема начинается, когда запрос встречает пустую таблицу.

Я попытался отфильтровать пустые таблицы, но проблема все еще существует.

Есть идеи, в чем проблема и как ее решить?

введите описание изображения здесь

Запрос:

let
    Source = Folder.Files("X:\Operations\tutaj\SLA MIAD"),
    #"Lowercased Text" = Table.TransformColumns(Source,{{"Extension", Text.Lower, type text}}),
    #"Filtered Rows" = Table.SelectRows(#"Lowercased Text", each Text.Contains([Extension], "xlsx")),
    #"Filtered Rows1" = Table.SelectRows(#"Filtered Rows", each Text.Contains([Name], "NCR") or Text.Contains([Name], "Printec") or Text.Contains([Name], "PTL")),
    #"Filtered Rows2" = Table.SelectRows(#"Filtered Rows1", each Text.Contains([Name], "2018")),
    #"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows2",{"Content"}),
    #"Added Custom" = Table.AddColumn(#"Removed Other Columns", "Custom", each Excel.Workbook([Content])),
    #"Expanded Custom" = Table.ExpandTableColumn(#"Added Custom", "Custom", {"Name", "Data", "Item", "Kind", "Hidden"}, {"Name", "Data", "Item", "Kind", "Hidden"}),
    #"Filtered Rows3" = Table.SelectRows(#"Expanded Custom", each ([Kind] = "Sheet")),
    #"Filtered Rows4" = Table.SelectRows(#"Filtered Rows3", each Text.Contains([Name], "SLA report")),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows4",{"Name", "Item", "Kind", "Hidden"}),
    #"Removed Errors" = Table.RemoveRowsWithErrors(#"Removed Columns", {"Content"}),
    #"Invoked Custom Function" = Table.AddColumn(#"Removed Errors", "TestFunction", each FileQuery([Data])),
    #"Added Custom1" = Table.AddColumn(#"Invoked Custom Function", "Custom", each Table.IsEmpty([TestFunction])),
    #"Filtered Rows6" = Table.SelectRows(#"Added Custom1", each ([Custom] = false)),
    #"Expanded TestFunction" = Table.ExpandTableColumn(#"Filtered Rows6", "TestFunction", {"Order ID", "ATM", "City", "Country", "CIT/Vault", "Service", "SLACategory", "Condition", "Serv Acc Mon", "Serv Acc Sat", "Serv Acc Sun", "Status", "Reason", "Description", "Created(CET)", "SLA Target Date(CET)", "Closed(CET)", "Age", "Contractual Reaction Time", "Overdue By absolute", "Overdue By Srv.Hrs", "On Time", "Charged call", "Reference ID", "Reference priority", "Comments", "SLA Category"}, {"Order ID", "ATM", "City", "Country", "CIT/Vault", "Service", "SLACategory", "Condition", "Serv Acc Mon", "Serv Acc Sat", "Serv Acc Sun", "Status", "Reason", "Description", "Created(CET)", "SLA Target Date(CET)", "Closed(CET)", "Age", "Contractual Reaction Time", "Overdue By absolute", "Overdue By Srv.Hrs", "On Time", "Charged call", "Reference ID", "Reference priority", "Comments", "SLA Category"}),
    #"Removed Other Columns1" = Table.SelectColumns(#"Expanded TestFunction",{"Order ID", "ATM", "City", "Country", "CIT/Vault", "Service", "Condition", "Reason", "Status", "Description", "Created(CET)", "SLA Target Date(CET)", "Closed(CET)", "Overdue By absolute", "Overdue By Srv.Hrs", "On Time"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Removed Other Columns1",{{"Created(CET)", type datetime}, {"SLA Target Date(CET)", type datetime}, {"Closed(CET)", type datetime}}),
    #"Added Custom2" = Table.AddColumn(#"Changed Type", "Age", each [#"Closed(CET)"]-[#"Created(CET)"]),
    #"Changed Type1" = Table.TransformColumnTypes(#"Added Custom2",{{"Age", type duration}}),
    #"Filtered Rows5" = Table.SelectRows(#"Changed Type1", each [Order ID] <> null and [Order ID] <> "")
in
    #"Filtered Rows5"

person Wabanek    schedule 28.12.2018    source источник
comment
вы можете поделиться своим запросом?   -  person Akber Iqbal    schedule 28.12.2018
comment
@Akber Iqbal, пост обновлен. Проблема начинается здесь #Expanded TestFunction   -  person Wabanek    schedule 28.12.2018


Ответы (1)


Я думаю, что есть некоторые различия в заголовках, присутствующих в ваших таблицах (которые вы хотите расширить), и заголовках, которые вы фактически расширяете.

Вы расширили SLACategory и Order ID (в верхней половине скриншота), но, вероятно, это должны быть соответственно SLA Category и OrderId (в нижней половине скриншота). Обратите внимание на различия в интервалах и заглавных буквах.

Когда вы указываете List заголовков для раскрытия (от { до } ниже):

#"Expanded TestFunction" = Table.ExpandTableColumn(#"Filtered Rows6", "TestFunction", {"Order ID", "ATM", "City", "Country", "CIT/Vault", "Service", "SLACategory", "Condition", "Serv Acc Mon", "Serv Acc Sat", "Serv Acc Sun", "Status", "Reason", "Description", "Created(CET)", "SLA Target Date(CET)", "Closed(CET)", "Age", "Contractual Reaction Time", "Overdue By absolute", "Overdue By Srv.Hrs", "On Time", "Charged call", "Reference ID", "Reference priority", "Comments", "SLA Category"}, {"Order ID", "ATM", "City", "Country", "CIT/Vault", "Service", "SLACategory", "Condition", "Serv Acc Mon", "Serv Acc Sat", "Serv Acc Sun", "Status", "Reason", "Description", "Created(CET)", "SLA Target Date(CET)", "Closed(CET)", "Age", "Contractual Reaction Time", "Overdue By absolute", "Overdue By Srv.Hrs", "On Time", "Charged call", "Reference ID", "Reference priority", "Comments", "SLA Category"}),

Я думаю тебе нужно либо

  • жестко кодируйте сами заголовки (с точки зрения чувствительности к регистру и пробелов)
  • или расширять их динамически, а не на основе какого-то жестко запрограммированного списка.

Чтобы динамически расширять столбцы, вам нужно будет сделать что-то вроде замены этой строки:

#"Expanded TestFunction" = Table.ExpandTableColumn(#"Filtered Rows6", "TestFunction", {"Order ID", "ATM", "City", "Country", "CIT/Vault", "Service", "SLACategory", "Condition", "Serv Acc Mon", "Serv Acc Sat", "Serv Acc Sun", "Status", "Reason", "Description", "Created(CET)", "SLA Target Date(CET)", "Closed(CET)", "Age", "Contractual Reaction Time", "Overdue By absolute", "Overdue By Srv.Hrs", "On Time", "Charged call", "Reference ID", "Reference priority", "Comments", "SLA Category"}, {"Order ID", "ATM", "City", "Country", "CIT/Vault", "Service", "SLACategory", "Condition", "Serv Acc Mon", "Serv Acc Sat", "Serv Acc Sun", "Status", "Reason", "Description", "Created(CET)", "SLA Target Date(CET)", "Closed(CET)", "Age", "Contractual Reaction Time", "Overdue By absolute", "Overdue By Srv.Hrs", "On Time", "Charged call", "Reference ID", "Reference priority", "Comments", "SLA Category"}),

с участием:

allHeaders = List.Combine(List.Transform(#"Filtered Rows6"[TestFunction], Table.ColumnNames)),
headersToExpand = List.Distinct(allHeaders),
#"Expanded TestFunction" = Table.ExpandTableColumn(#"Filtered Rows6", "TestFunction", headersToExpand),

(Вам нужно будет щелкнуть «Расширенный редактор» в левом верхнем углу редактора запросов и заменить там код.)

person chillin    schedule 28.12.2018
comment
Вы правы, это проблема. Я бы предпочел динамически загружать имена, поэтому, если бы вы могли поддержать меня, это было бы здорово. - person Wabanek; 28.12.2018