Enumeration type ที่ระบุว่าเครื่องหมายคำพูด (quote) ในไฟล์ CSV จะมีความสำคัญเมื่อไหร่ ใช้กับ Csv.Document เพื่อควบคุมการแยกวิเคราะห์ข้อมูล
=CsvStyle.QuoteAfterDelimiter | CsvStyle.QuoteAlways
=CsvStyle.QuoteAfterDelimiter | CsvStyle.QuoteAlways
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| CsvStyle.QuoteAfterDelimiter | number (0) | Optional | เครื่องหมายคำพูดมีความสำคัญเฉพาะหลังตัวคั่น (delimiter) เท่านั้น เป็นค่าเริ่มต้น | |
| CsvStyle.QuoteAlways | number (1) | Optional | เครื่องหมายคำพูดมีความสำคัญทุกที่ในช่อง ไม่ว่าจะอยู่ตรงไหนก็ตาม |
let csv = "Name,Description#(cr)#(lf)John,""Sales Report""#(cr)#(lf)Jane,Normal", options = [Delimiter = ",", CsvStyle = Csv.Style.QuoteAfterDelimiter] in Csv.D…let
csv = "Name,Description#(cr)#(lf)John,""Sales Report""#(cr)#(lf)Jane,Normal",
options = [Delimiter = ",", CsvStyle = Csv.Style.QuoteAfterDelimiter]
in
Csv.Document(csv, options)
ตารางที่มี 2 คอลัมน์: Name (John, Jane) และ Description (Sales Report, Normal)
let csv = "Item,Price#(cr)#(lf)""Widget"",9.99#(cr)#(lf)Tool,19.99", options = [Delimiter = ",", CsvStyle = Csv.Style.QuoteAlways] in Csv.Document(csv, options)let
csv = "Item,Price#(cr)#(lf)""Widget"",9.99#(cr)#(lf)Tool,19.99",
options = [Delimiter = ",", CsvStyle = Csv.Style.QuoteAlways]
in
Csv.Document(csv, options)
ตารางที่มี 2 คอลัมน์: Item (Widget, Tool) และ Price (9.99, 19.99)
let csv = "Code,Name#(cr)#(lf)A,Item ""Special"" Type#(cr)#(lf)B,Regular", withQuoteAfter = Csv.Document(csv, [Delimiter = ",", CsvStyle = Csv.Style.QuoteAfterD…let
csv = "Code,Name#(cr)#(lf)A,Item ""Special"" Type#(cr)#(lf)B,Regular",
withQuoteAfter = Csv.Document(csv, [Delimiter = ",", CsvStyle = Csv.Style.QuoteAfterDelimiter]),
withQuoteAlways = Csv.Document(csv, [Delimiter = ",", CsvStyle = Csv.Style.QuoteAlways])
in
{ QuoteAfter = withQuoteAfter, QuoteAlways = withQuoteAlways }
สองตารางที่แสดงผลต่างกัน เนื่องจาก quote อยู่กลางข้อมูล
ไม่จำเป็นครับ ส่วนใหญ่ QuoteAfterDelimiter (ค่าเริ่มต้น) ก็พอดี ผม ใช้เฉพาะเวลา CSV มี quote แปลกๆ ที่ไม่ follow standard CSV format
QuoteAfterDelimiter ให้ quote มีความสำคัญเฉพาะหลัง delimiter (เช่น comma) เท่านั้น ส่วน QuoteAlways ให้ quote มีความสำคัญทุกที่ ผม ใช้ QuoteAlways เวลา CSV format ของข้อมูลแปลกๆ
ข้อมูลอาจจะ parse ผิด เช่น quote ที่ควรจะ escaped กลายเป็นตัวอักษรปกติ หรือตัวอักษรปกติกลายเป็น quote ผม แนะนำว่าให้ลองทั้งสองแบบแล้วดู preview ว่าแบบไหนให้ผลที่ถูกต้อง
เวลาที่ผมต้อง Import ไฟล์ CSV ที่มี quote characters ฝังอยู่ในข้อมูล ผมต้องบอก Power Query ว่าจะให้มันสนใจ quote ตรงไหน CsvStyle.Type คือตัวเลือกที่ใช้บอก Power Query ว่า quote มีความหมายเมื่อไหร่ ทำให้การอ่านข้อมูล CSV แม่นยำมากขึ้นครับ
ที่เจ๋งคือ CsvStyle.Type มีค่าสองแบบ: QuoteAfterDelimiter (ค่าเริ่มต้น) ที่สนใจ quote เฉพาะหลัง delimiter และ QuoteAlways ที่สนใจ quote ทุกที่ ทำให้แก้ปัญหา CSV ที่ format ไม่ standard ได้ดีเลย
ส่วนตัวผม ผมมักจะเริ่มด้วย QuoteAfterDelimiter (default) ก่อน ถ้า data มี quote ที่แปลกๆ เกิดขึ้นจนข้อมูลผิด ผมจะลอง QuoteAlways เพื่อดูว่าแบบไหนให้ผลที่ดีกว่า 😎