2016-09-16 8 views
0

Netsuite(当社のERPソフトウェア)からのCSVエクスポートで構築されたいくつかのレポートを自動化しようとしています。ファイルは、「ヘッダ」行である6行あるため、PowerQueryに直接正しくインポートされることはありません。これらのヘッダー行にはコンマが正しくないため、PowerQueryは1列のデータしか表示しません。私は現在、Notepad ++でファイルを開き、これらの6行を削除してからPowerQueryにファイルをインポートしています。パワークエリーを読み込む前に6行をスキップ

PowerQueryコードを使用して最初の6行をスキップして、csvが正しく読み込まれるようにする方法はありますか?以下は、私が作業しているデータの例です。

Fake Cocoa Company LLC 
"Fake Cocoa Company, LLC (Consolidated)" 
Sales Order Detail - Hotel - BH 
"January 1, 2016 - December 31, 2016" 

"Options: Show ZerosFilters: Customer/Project (equal to FCC - Hotel Hotel), Validated Status (not equal to Cancelled, Closed)" 
Document Number ,Date ,Ship To ,Item: Description (Sales) ,Quantity ,Validated Status ,Unit Price ,Aggregate Amount 
Sales Orders,,,,,,, 
669,9/15/2016,Receiving - CCLV Hotel 2880 Some Place Blvd South Hotel Hotel Some Place CA 91089,100% Country Caf Liquid Cocoa,5,Billed,$75.68,$378.40 
660,,,,,,, 
,9/15/2016,Receiving - MAIN OCEAN Hotel 4300 Some Place Blvd SO Some Place CA 91089,100% Country Caf Liquid Cocoa,10,Billed,$7.68,$75.80 
,9/15/2016,Receiving - MAIN OCEAN Hotel 4300 Some Place Blvd SO Some Place CA 91089,Fake Cocoa Grand - Whole Bean 5/5LB,8,Billed,$17.80,$72.00 
,9/15/2016,Receiving - MAIN OCEAN Hotel 4300 Some Place Blvd SO Some Place CA 91089,Fake Cocoa Grand 28/9oz,6,Billed,$5.54,$39.24 
,9/15/2016,Receiving - MAIN OCEAN Hotel 4300 Some Place Blvd SO Some Place CA 91089,Fake Cocoa Grand 42/2oz,4,Billed,$1.32,$7.28 
,9/15/2016,Receiving - MAIN OCEAN Hotel 4300 Some Place Blvd SO Some Place CA 91089,Fake Cocoa Caf - Whole Bean 5/5LB,2,Billed,$2.80,$28.00 
Total - 660,,,,,,,"$203.32" 

答えて

3

ネイティブCSV PowerQueryパーサにこのヒントの

let 
    file_path = "C:\your_path\csv.txt", 
    file = File.Contents(file_path), 
    src = Lines.FromBinary(file), 
    skip = List.Skip(src,6), 
    combine = Text.Combine(skip, "#(lf)"), 
    csv = Csv.Document(combine), 
    promote = Table.PromoteHeaders(csv) 
in 
    promote 

enter image description here

0

table.skipあなたは

2番目のパラメータは数(例えば6)または条件(例えば(#"Position of ""Options: Show ZerosFilters: Customer/Project (equal to FCC - Hotel Hotel), Validated Status (not equal to Cancelled, Closed)""" + 1))のいずれかであることができるやりたいことができ

+0

感謝の使用:ここでは、コード

!ここで私のために働いたコードは次のとおりです:Table.Skip(Source、List.PositionOf(Source [Column1]、 "" "オプション:Show ZerosFilters:Customer/Project(FCC - Hotel Hotelと同等)、Validated Statusキャンセルされた、クローズされた) "" ")+ 1)最初に" Column1 "という名前の1つの列にすべてのデータが読み込まれました。エスケープすることは少し特別です。 – ImkeF

1

問題は、CSVをインポートしようということですパワークエリーの「CSVから」をソースとして使用します。記述内容を含む最初の行を持つと、自動変換が中断されます。したがって、これを防ぐためには、別の方法でファイルをPQにインポートする必要があります。この問題は、ケン氏のExcelguru Blog(BTW:私は彼の本を暖かくお勧めします)に詳しく説明されています。 - 1は同様の条件を渡すことができることを知って非常に便利な

let 
    /* Get the raw line by line contents of the file, preventing PQ from interpreting it */ 
    fnRawFileContents = (fullpath as text) as table => 
    let 
     Value = Table.FromList(Lines.FromBinary(File.Contents(fullpath)),Splitter.SplitByNothing()) 
    in Value, 

    /* Use function to load file contents */ 
    Source = fnRawFileContents("D:\yourfile.csv"), 
    #"Removed Top Rows" = Table.Skip(Source,6), 
    #"Split Column by Delimiter" = Table.SplitColumn(#"Removed Top Rows","Column1",Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv),{"Column1.1", "Column1.2", "Column1.3", "Column1.4", "Column1.5", "Column1.6", "Column1.7", "Column1.8"}), 
    #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Column1.1", type text}, {"Column1.2", type text}, {"Column1.3", type text}, {"Column1.4", type text}, {"Column1.5", type text}, {"Column1.6", type text}, {"Column1.7", type text}, {"Column1.8", type text}}), 
    #"Promoted Headers" = Table.PromoteHeaders(#"Changed Type") 

in 
    #"Promoted Headers" 
関連する問題