Excel DAX - Hàm
Hầu hết các DAX functionscó cùng tên và chức năng với chức năng của hàm Excel. Tuy nhiên, các hàm DAX đã được sửa đổi để sử dụng kiểu dữ liệu DAX và làm việc với các bảng và cột.
DAX có một số hàm bổ sung mà bạn sẽ không tìm thấy trong Excel. Các hàm DAX này được cung cấp cho các mục đích cụ thể như tra cứu dựa trên các mối quan hệ được liên kết với các khía cạnh cơ sở dữ liệu quan hệ của Mô hình dữ liệu, khả năng lặp qua bảng để thực hiện các phép tính đệ quy, để thực hiện tổng hợp động và các phép tính sử dụng thông minh thời gian.
Trong chương này, bạn sẽ tìm hiểu về các chức năng được hỗ trợ trong ngôn ngữ DAX. Để biết thêm thông tin về cách sử dụng các hàm DAX này, hãy tham khảo hướng dẫn - Các hàm DAX trong thư viện hướng dẫn này.
Hàm DAX là gì?
Hàm DAX là một hàm tích hợp được cung cấp bằng ngôn ngữ DAX để cho phép bạn thực hiện các hành động khác nhau trên dữ liệu trong các bảng trong Mô hình Dữ liệu của bạn. Như đã thảo luận trước đó, DAX được sử dụng cho các mục đích phân tích dữ liệu và thông minh kinh doanh yêu cầu hỗ trợ để trích xuất, đồng hóa và lấy thông tin chi tiết từ dữ liệu. Các chức năng DAX dựa trên Mô hình Dữ liệu cung cấp cho bạn những tiện ích này giúp công việc của bạn trở nên đơn giản hơn, sau khi bạn nắm được ngôn ngữ DAX và cách sử dụng các chức năng DAX.
Hàm Excel so với Hàm DAX
Có một số điểm tương đồng nhất định giữa các hàm Excel mà bạn biết và các hàm DAX. Tuy nhiên, cũng có những khác biệt nhất định. Bạn cần hiểu rõ về những điều này để có thể tránh mắc sai lầm khi sử dụng các hàm DAX và viết các công thức DAX bao gồm các hàm DAX.
Điểm giống nhau giữa các hàm Excel và hàm DAX
Nhiều hàm DAX có cùng tên và hoạt động chung giống như các hàm Excel.
DAX có các hàm tra cứu tương tự như các hàm tra cứu mảng và vectơ trong Excel.
Sự khác biệt giữa Hàm Excel và Hàm DAX
Các hàm DAX đã được sửa đổi để nhận các loại đầu vào khác nhau và một số hàm DAX có thể trả về kiểu dữ liệu khác. Do đó, bạn cần hiểu cách sử dụng của các hàm này một cách riêng biệt mặc dù chúng có cùng tên. Trong hướng dẫn này, bạn sẽ tìm thấy mọi hàm DAX có tiền tố là DAX để tránh nhầm lẫn với các hàm Excel.
Bạn không thể sử dụng các hàm DAX trong công thức Excel hoặc sử dụng công thức / hàm Excel trong DAX mà không có các sửa đổi bắt buộc.
Các hàm Excel lấy một tham chiếu ô hoặc một dải ô làm tham chiếu. Các hàm DAX không bao giờ lấy tham chiếu ô hoặc một dải ô làm tham chiếu mà thay vào đó lấy một cột hoặc bảng làm tham chiếu.
Các hàm ngày và giờ trong Excel trả về một số nguyên biểu thị ngày dưới dạng số sê-ri. Hàm ngày và giờ DAX trả về kiểu dữ liệu ngày giờ có trong DAX nhưng không có trong Excel.
Excel không có hàm nào trả về bảng, nhưng một số hàm có thể hoạt động với mảng. Nhiều hàm DAX có thể dễ dàng tham chiếu các bảng và cột hoàn chỉnh để thực hiện các phép tính và trả về một bảng hoặc một cột giá trị. Khả năng này của DAX bổ sung sức mạnh cho Power Pivot, Power View và Power BI, nơi DAX được sử dụng.
Các hàm tra cứu DAX yêu cầu một mối quan hệ được thiết lập giữa các bảng.
Excel hỗ trợ kiểu dữ liệu biến thể trong một cột dữ liệu, tức là bạn có thể có dữ liệu thuộc các kiểu dữ liệu khác nhau trong một cột. Trong khi đó, DAX mong muốn dữ liệu trong một cột của bảng luôn có cùng kiểu dữ liệu. Nếu dữ liệu không cùng kiểu dữ liệu, DAX thay đổi toàn bộ cột thành kiểu dữ liệu phù hợp nhất với tất cả các giá trị trong cột. Tuy nhiên, nếu dữ liệu được nhập và vấn đề này phát sinh, DAX có thể gắn cờ lỗi.
Để tìm hiểu về kiểu dữ liệu DAX và truyền kiểu dữ liệu, hãy tham khảo chương - Tham chiếu cú pháp DAX.
Các loại chức năng DAX
DAX hỗ trợ các loại chức năng sau.
- Các hàm có giá trị trong bảng DAX
- Chức năng bộ lọc DAX
- Các chức năng tổng hợp DAX
- Các chức năng thông minh thời gian DAX
- Chức năng ngày và giờ DAX
- Chức năng thông tin DAX
- Các chức năng logic của DAX
- DAX Math và Hàm Trig
- Các chức năng khác của DAX
- Hàm con của DAX
- Chức năng thống kê DAX
- Hàm văn bản DAX
Trong phần này, bạn sẽ tìm hiểu về các hàm DAX ở cấp độ danh mục hàm. Để biết chi tiết về Cú pháp hàm DAX và hàm DAX trả về và hoạt động gì - hãy tham khảo hướng dẫn về Hàm DAX trong thư viện hướng dẫn này.
Các chức năng thông minh thời gian DAX và chức năng bộ lọc DAX rất mạnh mẽ và cần được đề cập đặc biệt. Tham khảo các chương - Tìm hiểu các chức năng của DAX Time Intelligence và DAX Filter để biết thêm chi tiết.
Các hàm có giá trị trong bảng DAX
Nhiều hàm DAX lấy bảng làm bảng đầu vào hoặc đầu ra hoặc làm cả hai. Các hàm DAX này được gọi là các hàm có giá trị bảng DAX. Bởi vì một bảng có thể có một cột duy nhất, các hàm có giá trị của bảng DAX cũng lấy các cột đơn làm đầu vào. Bạn có các loại hàm giá trị của bảng DAX sau:
- Các chức năng tổng hợp DAX
- Các chức năng của Bộ lọc DAX
- Các chức năng thông minh về thời gian DAX
Việc hiểu các hàm có giá trị trong bảng DAX giúp bạn viết công thức DAX một cách hiệu quả.
Các chức năng tổng hợp DAX
Hàm tổng hợp DAX tổng hợp bất kỳ biểu thức nào trên các hàng của bảng và rất hữu ích trong tính toán.
Sau đây là một số chức năng Tổng hợp DAX -
ADDCOLUMNS (<bảng>, <tên>, <biểu thức>, [<tên>, <biểu thức>]…)
AVERAGE (<cột>)
AVERAGEA (<cột>)
AVERAGEX (<bảng>, <biểu thức>)
COUNT (<cột>)
COUNTA (<cột>)
COUNTAX (<bảng>, <biểu thức>)
COUNTBLANK (<cột>)
COUNTROWS (<bảng>)
COUNTX (<bảng>, <biểu thức>)
CROSSJOIN (<table1>, <table2>, [<table3>]…)
DISTINCTCOUNT (<cột>)
GENERATE (<table1>, <table2>)
GENERATEALL (<table1>, <table2>)
MAX (<cột>)
MAXA (<cột>)
MAXX (<bảng>, <biểu thức>)
MIN (<cột>)
MINA (<cột>)
MINX (<bảng>, <biểu thức>)
SẢN PHẨM (<cột>)
PRODUCTX (<bảng>, <biểu thức>)
ROW (<tên>, <biểu thức>, [<tên>, <biểu thức>]…)
SELECTCOLUMNS (<table>, <name>, <scalar_expression>,
[<name>, <scalar_expression>]…)
SUM (<cột>)
SUMMARIZE (<table>, <groupBy_columnName>, [<groupBy_columnName>]…, [<name>, <expression>]…)
SUMX (<bảng>, <biểu thức>)
TOPN (<n_value>, <table>, <orderBy_expression>, [<order>], [<orderBy_expression>, [<order>]]…)
Chức năng bộ lọc DAX
Các hàm Bộ lọc DAX trả về một cột, một bảng hoặc các giá trị liên quan đến hàng hiện tại. Bạn có thể sử dụng các chức năng Bộ lọc DAX để trả về các kiểu dữ liệu cụ thể, tra cứu giá trị trong các bảng có liên quan và lọc theo các giá trị liên quan. Các hàm DAX Lookup hoạt động bằng cách sử dụng các bảng và mối quan hệ giữa chúng. Các chức năng Bộ lọc DAX cho phép bạn thao tác bối cảnh dữ liệu để tạo các phép tính động.
Sau đây là một số chức năng của Bộ lọc DAX -
ADDMISSINGITEMS (<showAllColumn>, [<showAllColumn>]…, <table>, <groupingColumn>, [<groupingColumn>]… [filterTable]…)
TẤT CẢ ({<bảng> | <cột>, [<cột>], [<cột>]…})
ALLEXCEPT (<bảng>, <cột>, [<cột>]…)
ALLNOBLANKROW(<table>|<column>)
ALLSELECTED ([<tên bảng> | <tên cột>])
CALCULATE (<biểu thức>, <filter1>, <filter2>…)
CALCULATETABLE (<biểu thức>, <filter1>, <filter2>…)
CROSSFILTER (<columnName1>, <columnName2>, <direction>)
DISTINCT (<cột>)
EARLIER (<cột>, <số>)
EARLIEST(<column>)
FILTER(<table>,<filter>)
FILTERS(<columnName>)
HASONEFILTER(<columnName>)
HASONEVALUE(<columnName>)
ISCROSSFILTERED (<columnName>)
ĐÃ LỌC (<columnName>)
KEEPFILTERS (<biểu thức>)
RELATED(<column>)
RELATEDTABLE(<tableName>)
SUBSTITUTEWITHINDEX (<table>, <indexColumnName>, <indexColumnsTable>, <orderBy_expression>, [<order>], [<orderBy_expression>, [<order>]]…])
USERELATIONSHIP(<columnName1>,<columnName2>)
VALUES(<TableNameOrColumnName>)
Các chức năng thông minh thời gian DAX
Các hàm DAX Time Intelligence trả về một bảng ngày tháng hoặc sử dụng bảng ngày tháng để tính tổng hợp. Các hàm DAX này giúp bạn tạo các tính toán hỗ trợ nhu cầu phân tích Business Intelligence bằng cách cho phép bạn thao tác dữ liệu bằng các khoảng thời gian, bao gồm ngày, tháng, quý và năm.
Sau đây là một số chức năng Thông minh thời gian của DAX -
CLOSINGBALANCEMONTH (<biểu thức>, <ngày> [, <bộ lọc>])
CLOSINGBALANCEQUARTER (<biểu thức>, <ngày>, [<bộ lọc>])
CLOSINGBALANCEYEAR (<expression>, <dates>, [<filter>], [<year_end_date>])
DATEADD (<ngày>, <number_of_intervals>, <interval>)
DATESBETWEEN (<ngày>, <ngày bắt đầu>, <ngày kết thúc>)
DATESINPERIOD (<ngày>, <ngày_tháng>, <number_of_intervals>, <interval>)
DATESMTD (<ngày>)
DATESQTD (<ngày>)
DATESYTD (<ngày>, [<năm_end_date>])
ENDOFMONTH (<ngày>)
ENDOFQUARTER (<ngày>)
ENDOFYEAR (<ngày>, [<năm_end_date>])
FIRSTDATE (<ngày>)
FIRSTNONBLANK (<cột>, <biểu thức>)
LASTDATE (<ngày>)
LASTNONBLANK (<cột>, <biểu thức>)
NEXTDAY (<ngày>)
NEXTMONTH (<ngày>)
NEXTQUARTER (<ngày>)
NEXTYEAR (<ngày>, [<năm_end_date>])
OPENINGBALANCEMONTH (<biểu thức>, <ngày>, [<bộ lọc>])
OPENINGBALANCEQUARTER (<biểu thức>, <ngày>, [<bộ lọc>])
OPENINGBALANCEYEAR (<expression>, <dates>, [<filter>], [<year_end_date>])
PARALLELPERIOD (<ngày>, <number_of_intervals>, <interval>)
PREVIOUSDAY(<dates>)
PREVIOUSMONTH(<dates>)
PREVIOUSQUARTER(<dates>)
PREVIOUSYEAR (<ngày>, [<năm_end_date>])
SAMEPERIODLASTYEAR(<dates>)
STARTOFMONTH(<dates>)
STARTOFQUARTER(<dates>)
STARTOFYEAR(<dates>)
TOTALMTD (<biểu thức>, <ngày>, [<bộ lọc>])
TOTALQTD (<biểu thức>, <ngày>, [<bộ lọc>])
TOTALYTD (<biểu thức>, <ngày>, [<lọc>], [<năm_tệp>])
Chức năng ngày và giờ DAX
Các hàm Ngày và Giờ DAX tương tự như các hàm ngày và giờ trong Excel. Tuy nhiên, các hàm Ngày và Giờ của DAX dựa trên kiểu dữ liệu ngày giờ của DAX.
Sau đây là các chức năng Ngày và Giờ DAX -
- DATE (<năm>, <tháng>, <ngày>)
- DATEVALUE(date_text)
- DAY(<date>)
- EDATE (<start_date>, <months>)
- EOMONTH (<start_date>, <months>)
- HOUR(<datetime>)
- MINUTE(<datetime>)
- MONTH(<datetime>)
- NOW()
- SECOND(<time>)
- TIME (giờ, phút, giây)
- TIMEVALUE(time_text)
- TODAY()
- WEEKDAY (<ngày>, <return_type>)
- WEEKNUM (<ngày>, <return_type>)
- YEAR(<date>)
- YEARFRAC (<start_date>, <end_date>, <basis>)
Chức năng thông tin DAX
Hàm DAX Information xem xét ô hoặc hàng được cung cấp dưới dạng đối số và cho bạn biết liệu giá trị có khớp với kiểu mong đợi hay không.
Sau đây là một số chức năng Thông tin DAX -
CONTAINS (<table>, <columnName>, <value>, [<columnName>, <value>]…)
CUSTOMDATA()
ISBLANK(<value>)
ISERROR(<value>)
ISEVEN(number)
ISLOGICAL(<value>)
ISNONTEXT(<value>)
ISNUMBER(<value>)
ISONORAFTER (<scalar_expression>, <scalar_expression>, [sort_order], [<scalar_expression>, <scalar_expression>, [sort_order]]…)
ISTEXT(<value>)
LOOKUPVALUE (<result_columnName>, <search_columnName>, <search_value>, [<search_columnName>, <search_value>]…)
USERNAME()
Các chức năng logic của DAX
Hàm logic DAX trả về thông tin về các giá trị trong một biểu thức. Ví dụ: hàm DAX TRUE cho bạn biết liệu một biểu thức mà bạn đang đánh giá có trả về giá trị TRUE hay không.
Sau đây là các hàm logic DAX -
- AND(<logical1>,<logical2>)
- FALSE()
- IF (logic_test>, <value_if_true>, value_if_false)
- IFERROR (giá trị, giá trị_if_error)
- NOT(<logical>)
- OR(<logical1>,<logical2>)
- SWITCH (<biểu thức>, <giá trị>, <kết quả>, [<giá trị>, <kết quả>]…, [<else>])
- TRUE()
DAX Math và Hàm Trig
Các hàm toán học và lượng giác DAX rất giống với các hàm toán học và lượng giác trong Excel.
Sau đây là một số hàm DAX Math và Trig:
- ABS(<number>)
- ACOS(number)
- ACOSH(number)
- ASIN(number)
- ASINH(number)
- ATAN(number)
- ATANH(number)
- TRẦN (<số>, <ý>)
- COMBIN (số, số_chọn)
- COMBINA (số, số_chọn)
- COS(number)
- COSH(number)
- CURRENCY(<value>)
- DEGREES(angle)
- DIVIDE (<numerator>, <denominator>, [<alternateresult>])
- EVEN(number)
- EXP(<number>)
- FACT(<number>)
- TẦNG (<số>, <ý>)
- GCD (number1, [number2], ...)
- INT(<number>)
- ISO.CEILING (<number>, [<significance>])
- LCM (number1, [number2], ...)
- LN(<number>)
- LOG(<number>,<base>)
- LOG10(<number>)
- INT(<number>)
- MROUND (<số>, <nhiều>)
- ODD(number)
- PI()
- POWER (<số>, <sức mạnh>)
- PRODUCT(<column>)
- PRODUCTX (<bảng>, <biểu thức>)
- QUOTIENT (<mẫu số>, <mẫu số>)
- RADIANS(angle)
- RAND()
- RANDBETWEEN(<bottom>,<top>)
- ROUND (<số>, <num_digits>)
- ROUNDDOWN (<number>, <num_digits>)
- ROUNDUP (<number>, <num_digits>)
- SIN(number)
- SINH(number)
- SIGN(<number>)
- SQRT(<number>)
- SUM(<column>)
- SUMX (<bảng>, <biểu thức>)
- TAN(number)
- TANH(number)
- TRUNC(<number>,<num_digits>)
Các chức năng khác của DAX
Các hàm DAX này thực hiện các hành động duy nhất không thể được xác định bởi bất kỳ danh mục nào mà hầu hết các hàm khác thuộc về.
Sau đây là một số DAX Các chức năng khác -
NGOẠI LỆ (<table_expression1>, <table_expression2>
GROUPBY (<bảng>, [<groupBy_columnName1>], [<name>, <expression>]…)
INTERSECT (<table_expression1>, <table_expression2>)
ISEMPTY(<table_expression>)
NATURALINNERJOIN (<leftJoinTable>, <rightJoinTable>)
NATURALLEFTOUTERJOIN (<leftJoinTable>, <rightJoinTable>)
SUMMARIZECOLUMNS (<groupBy_columnName>, [<groupBy_columnName>]…, [<filterTable>]…, [<name>, <expression>]…)
UNION (<table_expression1>, <table_expression2>, [<table_expression>]…)
VAR <tên> = <biểu thức>
Hàm con của DAX
Các hàm cha và con của DAX rất hữu ích trong việc quản lý dữ liệu được trình bày dưới dạng phân cấp cha / con trong Mô hình dữ liệu.
Sau đây là một số hàm cha và con của DAX:
- PATH (<ID_columnName>, <parent_columnName>)
- PATHCONTAINS (<path>, <item>)
- PATHITEM (<đường dẫn>, <vị trí>, [<loại>])
- PATHITEMREVERSE (<đường dẫn>, <vị trí>, [<loại>])
- PATHLENGTH(<path>)
Chức năng thống kê DAX
Hàm thống kê DAX rất giống với hàm thống kê trong Excel.
Sau đây là một số chức năng Thống kê DAX -
BETA.DIST (x, alpha, beta, tích lũy, [A], [B])
BETA.INV (xác suất, alpha, beta, [A], [B])
CHISQ.INV (xác suất, độ_tự do)
CHISQ.INV.RT (xác suất, độ_tự do)
CONFIDENCE.NORM (alpha, standard_dev, size)
CONFIDENCE.T (alpha, standard_dev, size)
DATATABLE (ColumnName1, DataType1, ColumnName2, DataType2 ..., {{Value1, Value2 ...}, {ValueN, ValueN + 1 ...} ...})
EXPON.DIST (x, lambda, tích lũy)
GEOMEAN(<column>)
GEOMEANX (<bảng>, <biểu thức>)
MEDIAN(<column>)
MEDIANX (<bảng>, <biểu thức>)
PERCENTILE.EXC (<cột>, <k>)
PERCENTILE.INC (<cột>, <k>)
PERCENTILEX.EXC (<bảng>, <biểu thức>, k)
PERCENTILEX.EXC (<bảng>, <biểu thức>, k)
POISSON.DIST (x, trung bình, tích lũy)
RANK.EQ (<giá trị>, <tên cột> [, <thứ tự>])
RANKX (<bảng>, <biểu thức> [, <giá trị> [, <thứ tự> [, <ties>]]])
SAMPLE (<n_value>, <table>, <orderBy_expression>, [<order>], [<orderBy_expression>, [<order>]]…)
STDEV.P(<ColumnName>)
STDEV.S(<ColumnName>)
STDEVX.P (<bảng>, <biểu thức>)
STDEVX.S (<bảng>, <biểu thức>)
SQRTPI(number)
VAR.P(<columnName>)
VAR.S(<columnName>)
VARX.P (<bảng>, <biểu thức>)
VARX.S (<bảng>, <biểu thức>)
XIRR (<bảng>, <giá trị>, <ngày>, [đoán])
XNPV (<bảng>, <giá trị>, <ngày>, <tỷ lệ>)
Hàm văn bản DAX
Các hàm DAX Text hoạt động với các bảng và cột. Với các hàm DAX Text, bạn có thể trả về một phần của chuỗi, tìm kiếm văn bản trong chuỗi hoặc nối các giá trị chuỗi. Bạn cũng có thể kiểm soát các định dạng cho ngày, giờ và số.
Sau đây là một số hàm DAX Text:
- BLANK()
- CODE(text)
- CONCATENATE (<text1>, <text2>)
- CONCATENATEX (<bảng>, <biểu thức>, [dấu phân cách])
- EXACT(<text1>,<text2>)
- TÌM (<find_text>, <within_text>, [<start_num>], [<NotFoundValue>])
- ĐÃ CỐ ĐỊNH (<number>, <decimals>, <no_commas>)
- FORMAT (<value>, <format_string>)
- LEFT (<text>, <num_chars>)
- LEN(<text>)
- LOWER(<text>)
- MID (<text>, <start_num>, <num_chars>)
- REPLACE (<old_text>, <start_num>, <num_chars>, <new_text>)
- REPT (<text>, <num_times>)
- RIGHT (<text>, <num_chars>)
- TÌM KIẾM (<find_text>, <within_text>, [<start_num>], [<NotFoundValue>])
- SUBSTITUTE (<text>, <old_text>, <new_text>, <instance_num>)
- TRIM(<text>)
- LÊN (<text>)
- VALUE(<text>)