Compression.Type เป็น enumeration ใน Power Query ที่ช่วยกำหนดประเภทการบีบอัดข้อมูล เช่น GZip, Deflate, Snappy, Brotli, LZ4, Zstandard เมื่อทำงานกับ Binary.Compress หรือ Binary.Decompress
={{ Compression.[Type] }}
={{ Compression.[Type] }}
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| Type | text | Yes | ชนิดการบีบอัดจากรายการต่อไปนี้: None, GZip, Deflate, Snappy, Brotli, LZ4, Zstandard |
let TextData = "Hello World", BinaryData = Text.ToBinary(TextData, BinaryEncoding.Utf8), Compressed = Binary.Compress(BinaryData, Compression.GZip) in Compresse…let
TextData = "Hello World",
BinaryData = Text.ToBinary(TextData, BinaryEncoding.Utf8),
Compressed = Binary.Compress(BinaryData, Compression.GZip)
in
Compressed
ข้อมูล binary ที่บีบอัดด้วย GZip
let CompressedBinary = #binary({115, 103, 200, 7, 194, 20, 134, 36}), Decompressed = Binary.Decompress(CompressedBinary, Compression.Deflate), TextResult = Bina…let
CompressedBinary = #binary({115, 103, 200, 7, 194, 20, 134, 36}),
Decompressed = Binary.Decompress(CompressedBinary, Compression.Deflate),
TextResult = Binary.ToText(Decompressed, BinaryEncoding.Utf8)
in
TextResult
ข้อความต้นฉบับที่ยกเลิกการบีบอัดแล้ว
let ApiResponse = Json.Document(Web.Contents("https://api.example.com/data")), CompressedData = ApiResponse[data], Decompressed = Binary.Decompress(CompressedDa…let
ApiResponse = Json.Document(Web.Contents("https://api.example.com/data")),
CompressedData = ApiResponse[data],
Decompressed = Binary.Decompress(CompressedData, Compression.Brotli),
Result = Binary.ToText(Decompressed, BinaryEncoding.Utf8)
in
Result
ข้อมูล JSON ที่ยกเลิกการบีบอัดแล้ว
let BinaryData = #binary({31, 139, 8, 0, 0, 0, 0, 0, 0, 255}), CompressionType = Compression.GZip, SafeDecompress = try Binary.Decompress(BinaryData, Compressio…let
BinaryData = #binary({31, 139, 8, 0, 0, 0, 0, 0, 0, 255}),
CompressionType = Compression.GZip,
SafeDecompress = try
Binary.Decompress(BinaryData, CompressionType)
otherwise
#binary({})
in
SafeDecompress
ข้อมูลที่ยกเลิกการบีบอัด หรือ empty binary ถ้าเกิดข้อผิดพลาด
มันขึ้นอยู่กับว่าข้อมูลของคุณถูกบีบอัดด้วยวิธีไหนมา ผมแนะนำให้ดูเอกสาร API หรือถามผู้ให้บริการข้อมูล ถ้าไม่แน่ใจให้เริ่มจาก GZip ก่อน เพราะใช้ได้กว้างที่สุด
ผมใช้ Compression.None เวลาข้อมูลไม่ได้บีบอัดเลย แต่ว่า Binary.Decompress ต้องการค่า enum นี้ อย่างไรก็ตาม ถ้าข้อมูลไม่ได้บีบอัด ก็ไม่จำเป็นต้องใช้ Binary.Decompress หลายที
ผมพูดให้เข้าใจง่ายๆ: Snappy เร็วสุด แต่บีบอัดไม่ได้ดีเท่า LZ4 สมดุล Zstandard เจ๋งสุด บีบอัดดีและเร็ว แต่บางระบบอาจไม่รองรับ ถ้าลูกค้าบอกมา ก็ใช้ที่พวกเขาต้องการ
ดู file header หรือขอเอกสารจาก API provider ส่วนตัวผมมักถามถึง Slack หรือ email ถ้าไม่แน่ใจ ใช้เวลานิดหน่อยแต่ดีกว่า Error ร่วมราม
ทำงานกับข้อมูลบีบอัดใน Power Query แล้วสงสัยว่า “เอาไปบีบอัดแบบไหนเนี่ย” หรอกครับ เอาล่ะ Compression.Type มันเลยคือ ‘ลิสต์เมนู’ ของประเภทการบีบอัดที่ Power Query รองรับนั่นเอง ทุกครั้งที่คุณใช้ Binary.Compress หรือ Binary.Decompress คุณต้องบอก Power Query ว่าจะใช้ประเภทการบีบอัดไหน
ที่เจ๋งคือ Compression.Type มันให้ค่า enum ที่มีชื่อหรูหรา มากกว่าต้องเขียนตัวเลข ตัวอย่างเช่น เขียน `Compression.GZip` แทนเลข `0` สะอาดมาก สะดวกสำหรับการอ่านโค้ด และไม่ต้องจำตัวเลขนี่แน่ะ
ส่วนตัวผมแนะนำให้เลือก GZip หากไม่แน่ใจ มันใช้ได้ทั่วไป ความเข้ากันได้ดี และบีบอัดได้เหมาะสม ถ้า API ที่คุณใช้บอกมาว่าใช้ Brotli หรือ Zstandard ก็ใช้ตามนั้นได้เลย 😎