Tìm hiểu về Power Query / M Language (Part 5): Kiểu dữ liệu – Text (Strings)
Kiểm tra một đoạn mã kết hợp biểu thức Power Query M đang thực thi và bạn thấy gì? Dữ liệu theo hướng từ trên xuống dưới giữa các biểu thức.
Khi bạn tìm hiểu những gì bạn thấy, bạn nhận thấy rằng các mục dữ liệu được sắp xếp phù hợp với các nhóm dựa trên loại giá trị mà chúng chứa: một số là văn bản (text), một số khác được tạo thành từ ngày, giờ hoặc thời gian (datetime). nhưng những giá trị khác là giá trị true / false, sau đó có thể là các con số… và còn có nhiều hơn nữa!
Chúng ta sẽ bắt đầu tìm hiểu các danh mục này. Chúng ta sẽ bắt đầu khám phá các loại giá trị được ngôn ngữ M hỗ trợ. Trong cách nói của lập trình, những loại giá trị này được gọi là kiểu.
Các loại có thể có các hành vi đặc biệt liên quan đến chúng. Ví dụ: ngày và giờ có một quy tắc đặc biệt xung quanh việc bổ sung: thêm ngày và giờ cùng nhau và trả về ngày giờ! Chúng ta sẽ tìm hiểu các quy tắc đặc biệt này.
Ngoài ra, chúng ta sẽ tìm hiểu về cú pháp được liên kết với từng loại. Các loại khác nhau có các quy tắc cú pháp chữ khác nhau. Chúng ta cũng sẽ nói về những quy tắc này.
Có rất nhiều điều cần giải quyết. Trong bài này, chúng ta sẽ tìm hiểu cụ thể của kiểu chữ văn bản text (strings).
Text (Strings)
Chữ viết văn bản (Text Literals)
Trong Power Query M, để nhập văn bản, bạn có một lựa chọn. Không giống như một số ngôn ngữ lập trình, chuỗi theo Power Query M chỉ có một khẩu vị. Không có trích dẫn đơn (‘ngoặc đơn’) hay trích dẫn kép (“ngoặc kép”). Không có chuỗi xen vào. Thông thường và đơn giản – chỉ là các chuỗi Unicode trong ngoặc kép.
"Hello, dataMAKER!"
Nếu bản thân chuỗi cần chứa ký tự dấu ngoặc kép, cách đơn giản nhất đó là bằng cách nhân đôi nó:
"Hello, ""dataMAKER!""."
// kết quả: Hello, "dataMAKER!".
Chuỗi văn bản cũng có thể kéo dài nhiều dòng.
"Hello
dataMAKER"
Tuy nhiên, đôi khi (có lẽ thường xuyên), thuận tiện hơn khi viết chuỗi văn bản nhiều dòng bằng cách sử dụng một dòng mã nguồn duy nhất. Để làm điều này, hãy sử dụng một mã ký tự điều khiển (chuỗi thoát ). Các chuỗi này bắt đầu bằng “# (” chứa một mã ký tự điều khiển (hoặc một số mã, như chúng ta sẽ thấy bên dưới) và kết thúc bằng “)“.
Power Query hỗ trợ ba mã ký tự điều khiển đặc biệt:
cr Carriage Return
lf Line Feed
tab Tab
Dưới đây, một ký tự ngắt dòng được mã hóa thành một chuỗi văn bản bằng cách sử dụng một mã ngắt dòng.
"Hello#(lf)dataMAKER"
Nhiều mã ký tự điều khiển có thể được kết hợp bên trong một chuỗi bằng cách phân tách chúng bằng dấu phẩy. Tuy nhiên, không có khoảng trắng thừa nào được phép (đây là một trong số ít những vị trí trong Power Query M có liên quan đến khoảng trắng giữa các phần tử ngôn ngữ).
"Hello#(cr)#(lf)dataMAKER"
// Hoặc có thể viết kết hợp
"Hello#(cr,lf)dataMAKER"
Các giá trị Unicode thập lục phân (hex) ngắn và dài cũng có thể được sử dụng. Khả năng này rất hữu ích khi bạn cần một chuỗi chứa ký tự không dễ nhập trên bàn phím của mình, hoặc khi bạn muốn hiển thị một ví dụ đơn giản, như ví dụ dưới đây minh họa bằng cách sử dụng cả cú pháp thập lục phân ngắn và dài để chèn hai dấu cách giữa hai từ.
"Hello#(0020,00000020)dataMAKER"
// KQ: Hello dataMAKER
Điều gì sẽ xảy ra nếu bạn muốn sử dụng dấu #( nằm trong một chuỗi văn bản? Bạn muốn các ký tự đó được đưa vào chuỗi theo đúng nghĩa đen.
Câu trả lời? Bạn thực hiện nó bằng cách sử dụng một chuỗi thoát! Bên dưới, ký hiệu “#” nằm bên trong chuỗi thoát.
"Part Code #(#)(2501)"
// KQ: Part Code #(2150)
Toán tử ( Operators )
Khi bạn có một giá trị của kiểu văn bản, cho dù bạn mã hóa nó bằng cách sử dụng một chuỗi ký tự hoặc nhận nó dưới dạng giá trị đầu ra từ một biểu thức khác, bạn có thể làm việc với nó bằng một số toán tử.
So sánh ( Comparison )
Kiểu văn bản hỗ trợ toán tử so sánh tiêu chuẩn (=, <>,> =,>, <=, <). Sử dụng chúng cũng rất đơn giản.
"a" = "a"
// KQ: true
"a" > "b"
// KQ: false
So sánh có phân biệt chữ hoa chữ thường. Để so sánh theo cách không phân biệt chữ hoa chữ thường, bạn sẽ cần sử dụng thư viện hàm.
Comparer.Equals(Comparer.OrdinalIgnoreCase, "A", "a")
// KQ: true
Kết hợp ( Concatenation )
Các giá trị văn bản có thể được kết hợp (nối) bằng cách sử dụng toán tử kết hợp ( & ):
"Hello" & " " & "dataMAKER!"
// KQ: Hello dataMAKER!
Tuy nhiên, Power Query M không chuyển đổi hoàn toàn các giá trị không phải kiểu văn bản thành văn bản khi chúng được nối với văn bản. Dưới đây là không được phép. Văn bản và số không được nối trực tiếp với nhau.
"Member of ICT" & 24 & "h."
Tuy nhiên, Thật dễ dàng để điều chỉnh những vấn đề trên để nó hoạt động. Chỉ cần sử dụng một hàm thư viện để chuyển đổi số thành văn bản.
"Member of ICT" & Text.From(24) & "h."
// KQ: Member of ICT24h.
Kết hợp kiểu văn bản với kiểu null sẽ tạo ra null.
"Something" & null
// KQ: null
null & "Something"
// KQ: null
Hy vọng rằng bạn đã biết điều này, thư viện của Power Query M bao gồm một số hàm liên quan đến loại văn bản. Và không may, (ít nhất là cho đến hiện tại) hỗ trợ biểu thức chính quy không là một phần của danh sách các hàm đó.