【发布时间】:2020-02-08 14:26:49
【问题描述】:
我的问题是我有一个包含未指定数量的 CSV 文件的文件夹。 应从此文件夹中读取每个 CSV 文件的 MAX 值,并将读取的 MAX 值写入新的 CSV 文件。 这是我当前的脚本,不幸的是我只能读取单个文件。
Import-CSV 'Folder-Path' -Delimiter ";" -Encoding Default | sort {[decimal]$_.Value} -Descending | select -F 1 | export-csv 'Folder-Path' -Delimiter ";" -NoType -Encoding Default -Append #>
此外,脚本不应覆盖新 CSV 文件中的 MAX 值 并且只有新 CSV 文件中还没有的 MAX 值。
要从中读取 MAX 值的 CSV 文件部分如下所示,包含 1000 多行:
"Series"; "Time"; "Value"
"Total Session Number";"2020-01-15 01:24";56
"Total Session Number";"2020-01-15 01:26";59
"Total Session Number";"2020-01-15 01:28";60
"Total Session Number";"2020-01-15 01:30";60
"Total Session Number";"2020-01-15 01:32";57
"Total Session Number";"2020-01-15 01:34";58
"Total Session Number";"2020-01-15 01:36";58
预期的结果应该是这样的:
"Series"; "Time"; "Value"
"Total Session Number"; "2020-01-15 17:36"; "197"
因为 CSV 文件并不总是相同的(example: file 1 is called session_access, file 2 is called session_number. "Series" name is for file 1 'session_access' and for file 2 "Series" name is 'session_number'),
将现有的 MAX 值与系列名称和时间进行比较。
我曾考虑借助数组或类似的东西来解决这个问题。
不幸的是,我不知道该怎么做。
我用于测试的示例文件:
第一个测试文件:
"Series"; "Time"; "Value"
"Total Session Number"; "2020-01-25 01:00";59
第二个测试文件:
"Series"; "Time"; "Value"
"FactoryTest"; "2020-01-24 01:00";0
谁能帮我解决这个问题?
【问题讨论】:
-
如何识别已写入生成的 CSV 文件的 MAX 值?你需要有一个标识符。您可以将源文件名包含到生成的 CSV 文件中,以便能够消除双峰并避免数据被覆盖。可能需要导入已经存在的 CSV 文件才能正确更新。
-
我会通过系列名称和时间(日期)确定已经存在的最大值。我曾考虑借助数组或类似的东西来解决这个问题。不幸的是,我不知道该怎么做。
-
如果您有有助于理解您的挑战的信息,您应该更新您的实际问题。 ...您喜欢通过系列名称来区分价值吗?在你的例子中,它们都是一样的!?! ;-) 您可以发布一些 csv 文件的示例内容,也可以发布这些 CSV 文件的名称,以显示您在说什么。 (请将这些示例数据也格式化为代码)
-
好的,我会的。
-
这些值是每列中的第三个值吗?
标签: powershell