powershell - 最初にヘッダーを csv に書き込み、次にそれぞれの列データを追加します

okwaves2024-01-25  12

ここでは以下のデータを含む CSV を作成しようとしています。しかし、これについては理解もアイデアもありません

New_Extracted_Data は配列です:

timestamp  _ldmodels_MIN _ldmodels_MAX _ldmodels_AVERAGE
---------  ------------- ------------- -----------------
1599136260 73896.68      73896.68      73896.68         
1599136320 73896.68      73896.68      73896.68         
1599136380 73896.68      73896.68      73896.68         
以下はヘッダーを書くことを計画している方法です。ヘッダーはnoteプロパティであり、配列内のヘッダーとして取得されません。
 $GetMembers = $New_Extracted_Data | Get-Member -MemberType NoteProperty
            foreach($Member in $GetMembers)
             {
                $All_Columns += $Member.Name + ","
             }

             $All_Columns | Export-Csv -Path "C:\Script\Final_Data.csv" -Append -NoTypeInformation

そして、各メンバータイプの列の合計を計算しています

                       foreach($Member in $GetMembers)
                            {
                                $Col = $Member.Name
                                if($Col -ne "timestamp")
                                {                                
                                   $Sum_Col = ($New_Extracted_Data | Measure-Object $Col -Sum).Sum                                
                                }
                             }

次に、それを CSV に書き込む必要があります。以下は予想されるO/Pです 例:

_ldmodels_MIN _ldmodels_MAX _ldmodels_AVERAGE
------------- ------------- -----------------
 221690.04      221690.04      221690.04         

これを行う方法についてアイデアが必要です。また、私のアプローチに問題がある場合はお知らせください。

それはありませんループします。 -join --> を使用するだけです。 $GetMembers.Name -結合 ','。そもそもなぜこのようにするのでしょうか?

– Things の管理者

2020 年 9 月 3 日 17:06

1

$New_Extracted_Data |Export-Csv だけではだめなのでしょうか?

– マティアス R. ジェッセン

2020 年 9 月 3 日 18:09



------------------------

単に理論的なことを知りたいだけでない限り、説明すると、指定された例では、要件を満たす実用的なアプリケーションがありません。 Export-Csv は、PowerShell オブジェクトを CSV 形式にシリアル化できます。 Select-Object を使用して、Export-Csv に送信されるプロパティをフィルタリングできます。

# Export Your Object to CSV with all custom properties as columns
$New_Extracted_Data | Export-Csv "C:\Script\Final_Data.csv" -NoType

# Export object to CSV without timestamp property
$New_Extracted_Data | Select-Object -Property * -ExcludeProperty timestamp |
    Export-Csv "C:\Script\Final_Data.csv" -NoType

# Creating sums of your values when properties are known
[pscustomobject]@{
    _ldmodels_MIN = ($New_Extracted_Data._ldmodels_MIN | Measure -Sum).Sum
    _ldmodels_MAX = ($New_Extracted_Data._ldmodels_MAX | Measure -Sum).Sum
    _ldmodels_AVERAGE = ($New_Extracted_Data._ldmodels_AVERAGE | Measure -Sum).Sum
} | Export-Csv sums.csv -NoType

# Summing all properties except timestamp
$Properties = ($New_Extracted_Data[0] | Get-Member -MemberType NoteProperty |
    Where Name -ne 'timestamp').Name
$Hash = [ordered]@{}
foreach ($Property in $Properties) {
    $Hash[$Property] = ($New_Extracted_Data.$Property | Measure -Sum).Sum
}
[pscustomobject]$Hash | Export-Csv sum.csv -NoType

0

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。