首页 > 解决方案 > 从加载 CSV 文件文件夹的查询中编辑源。关于“{0}[Content]”的含义有什么想法吗?

问题描述

我有一个小测试工作簿,我在其中测试和学习 PowerQuery。我碰巧更改了它的文件夹位置,这弄乱了我所有的查询。我对它们进行了全部编辑并更改了源以解决问题,但这不适用于从 CSV 文件文件夹中导入数据的查询数据。该特定查询生成其他 4 个查询的子文件夹。我设法通过检查备份中的代码(在高级编辑器中)来解决它。我注意到某些部分已更改(由系统),并且通过将其添加到“系统”查询之一,一切正常。我试图理解为什么那一行很重要,而我有 .

因此,我检查了一些快速的微软参考资料来检查 Folder.Files 函数的作用,但这并没有明确 {0} 或 [Content] 的含义。

总结我试图理解的代码是:

“Arquivo de Amostra”查询(转换为示例文件)

let
    Fonte = Folder.Files("C:\SomePath\Transactions"),
    Navegação1 = Fonte{0}[Content]
in
    Navegação1

它可以翻译成:

let
    Source = Folder.Files("C:\SomePath\Transactions"),
    Navigation1 = Source{0}[Content]
in
    Navigation1 

为什么该行如此重要,为什么查询在“重新包含”它之前不起作用?{0} 是什么意思?我确实认为以某种方式将内容与查询的返回联系起来。

还有其他 3 个查询未提及此参数,尽管它们引用了查询“Arquivo de amostra”,但我也可以包含它们,但我试图避免过多或不必要的信息。

我还将包括从 CSV 文件夹加载数据的原始查询。

let
    Fonte = Folder.Files("C:\SomePath\Transactions"),
    #"Arquivos Ocultos Filtrados1" = Table.SelectRows(Fonte, each [Attributes]?[Hidden]? <> true),
    #"Invocar Função Personalizada1" = Table.AddColumn(#"Arquivos Ocultos Filtrados1", "Transformar Arquivo de Transactions_1997-1998", each #"Transformar Arquivo de Transactions_1997-1998"([Content])),
    #"Colunas Renomeadas1" = Table.RenameColumns(#"Invocar Função Personalizada1", {"Name", "Nome da Origem"}),
    #"Outras Colunas Removidas1" = Table.SelectColumns(#"Colunas Renomeadas1", {"Nome da Origem", "Transformar Arquivo de Transactions_1997-1998"}),
    #"Coluna de Tabela Expandida1" = Table.ExpandTableColumn(#"Outras Colunas Removidas1", "Transformar Arquivo de Transactions_1997-1998", Table.ColumnNames(#"Transformar Arquivo de Transactions_1997-1998"(#"Arquivo de Amostra"))),
    #"Tipo Alterado" = Table.TransformColumnTypes(#"Coluna de Tabela Expandida1",{{"Nome da Origem", type text}, {"transaction_date", type date}, {"stock_date", type date}, {"product_id", Int64.Type}, {"customer_id", Int64.Type}, {"store_id", Int64.Type}, {"quantity", Int64.Type}}),
    #"Linhas Classificadas" = Table.Sort(#"Tipo Alterado",{{"transaction_date", Order.Ascending}}),
    #"Colunas Removidas" = Table.RemoveColumns(#"Linhas Classificadas",{"Nome da Origem"})
in
    #"Colunas Removidas"

标签: excelpowerquerym

解决方案


加载文件夹时,您将获得以下格式的表格:

Content | Name  | Extension | Date accessed      | [...etc...]
--------+-------+-----------+--------------------+-------------
Binary  | FileA | .csv      | 7/10/2019 12:25 PM | [...etc...]
Binary  | FileB | .xlsx     | 7/10/2019 10:25 AM | [...etc...]
...     | ...   | ...       | ...                | ...

这是Source步骤。在导航步骤中,{0}引用此表的第一行(从 0 开始索引)并[Content]引用包含该文件的二进制数据的第一列。

它就像 ExcelA1参考,但行/列而不是列/行。


您可以通过直接加载文件而不是从文件夹路径导航来消除该步骤。例如,而不是

Source = Folder.Files("C:\SomePath\Transactions"),
Navigation1 = Source{0}[Content]

你可以写

Source = Csv.Document(File.Contents("C:\SomePath\FileA.csv"))

假设FileA.csv是文件夹中第一行的文件。


推荐阅读