Excel DAX - 函式



大多數DAX函式的名稱和功能與Excel函式相同。但是,DAX函式已被修改為使用DAX資料型別並與表和列一起工作。

DAX有一些在Excel中找不到的附加函式。這些DAX函式用於特定目的,例如基於與資料模型的關係資料庫方面相關的關係進行查詢,能夠迭代表以執行遞迴計算,執行動態聚合以及用於利用時間智慧的計算。

在本章中,您將學習DAX語言支援的函式。有關這些DAX函式用法的更多資訊,請參閱本教程庫中的教程 - DAX函式。

什麼是DAX函式?

DAX函式是DAX語言中提供的內建函式,使您能夠對資料模型中表中的資料執行各種操作。如前所述,DAX用於資料分析和商業智慧目的,需要支援從資料中提取、整合和得出見解。基於資料模型的DAX函式為您提供了這些實用程式,一旦您掌握了DAX語言和DAX函式的用法,您的工作就會變得更簡單。

Excel函式與DAX函式

您瞭解的Excel函式和DAX函式之間存在某些相似之處。但是,也存在某些差異。您需要弄清楚這些差異,以便避免在使用DAX函式和編寫包含DAX函式的DAX公式時出錯。

Excel函式和DAX函式的相似之處

  • 許多DAX函式具有相同的名稱和相同的常規行為,就像Excel函式一樣。

  • DAX具有與Excel中的陣列和向量查詢函式類似的查詢函式。

Excel函式和DAX函式的差異

  • DAX函式已被修改為採用不同型別的輸入,並且某些DAX函式可能會返回不同的資料型別。因此,即使它們具有相同的名稱,您也需要分別瞭解這些函式的用法。在本教程中,您會發現每個DAX函式都以DAX為字首,以避免與Excel函式混淆。

  • 您不能在Excel公式中使用DAX函式,也不能在DAX中使用Excel公式/函式,除非進行必要的修改。

  • Excel函式採用單元格引用或單元格範圍作為引用。DAX函式從不採用單元格引用或單元格範圍作為引用,而是採用列或表作為引用。

  • Excel日期和時間函式返回一個整數,該整數將日期表示為序列號。DAX日期和時間函式返回DAX中的datetime資料型別,但在Excel中沒有。

  • Excel沒有返回表的函式,但某些函式可以使用陣列。許多DAX函式可以輕鬆引用完整的表和列來執行計算並返回表或值列。DAX的這種能力增強了Power Pivot、Power View和Power BI的功能,DAX在其中得到使用。

  • DAX查詢函式要求在表之間建立關係。

  • Excel支援資料列中的變體資料型別,即您可以在一列中具有不同資料型別的資料。而DAX期望表的一列中的資料始終具有相同的資料型別。如果資料的資料型別不同,DAX會將整列更改為最適合列中所有值的的資料型別。但是,如果資料已匯入並且出現此問題,DAX可能會標記錯誤。

要了解DAX資料型別和資料型別轉換,請參閱章節 - DAX語法參考。

DAX函式的型別

DAX支援以下型別的函式。

  • DAX表值函式
    • DAX篩選器函式
    • DAX聚合函式
    • DAX時間智慧函式
  • DAX日期和時間函式
  • DAX資訊函式
  • DAX邏輯函式
  • DAX數學和三角函式
  • DAX其他函式
  • DAX父子函式
  • DAX統計函式
  • DAX文字函式

在本節中,您將學習按函式類別級別的DAX函式。有關DAX函式語法以及DAX函式返回的內容和作用的詳細資訊,請參閱本教程庫中的DAX函式教程。

DAX時間智慧函式和DAX篩選器函式功能強大,需要特別提及。有關詳細資訊,請參閱章節 - 理解DAX時間智慧和DAX篩選器函式。

DAX表值函式

許多DAX函式將表作為輸入或輸出表,或者同時執行兩者。這些DAX函式稱為DAX表值函式。因為表可以只有一列,所以DAX表值函式也採用單列作為輸入。您有以下型別的DAX表值函式:

  • DAX聚合函式
  • DAX篩選器函式
  • DAX時間智慧函式

理解DAX表值函式有助於您有效地編寫DAX公式。

DAX聚合函式

DAX聚合函式聚合錶行上的任何表示式,在計算中很有用。

以下是一些DAX聚合函式:

  • ADDCOLUMNS (<table>, <name>, <expression>, [<name>, <expression>] …)

  • AVERAGE (<column>)

  • AVERAGEA (<column>)

  • AVERAGEX (<table>, <expression>)

  • COUNT (<column>)

  • COUNTA (<column>)

  • COUNTAX (<table>, <expression>)

  • COUNTBLANK (<column>)

  • COUNTROWS (<table>)

  • COUNTX (<table>, <expression>)

  • CROSSJOIN (<table1>, <table2>, [<table3>] …)

  • DISTINCTCOUNT (<column>)

  • GENERATE (<table1>, <table2>)

  • GENERATEALL (<table1>, <table2>)

  • MAX (<column>)

  • MAXA (<column>)

  • MAXX (<table>, <expression>)

  • MIN (<column>)

  • MINA (<column>)

  • MINX (<table>, <expression>)

  • PRODUCT (<column>)

  • PRODUCTX (<table>, <expression>)

  • ROW (<name>, <expression>, [<name>, <expression>] …)

  • SELECTCOLUMNS (<table>, <name>, <scalar_expression>,

  • [<name>, <scalar_expression>] …)

  • SUM (<column>)

  • SUMMARIZE (<table>, <groupBy_columnName>, [<groupBy_columnName>] …, [<name>, <expression>] …)

  • SUMX (<table>, <expression>)

  • TOPN (<n_value>, <table>, <orderBy_expression>, [<order>], [<orderBy_expression>, [<order>]] …)

DAX篩選器函式

DAX篩選器函式返回與當前行相關的列、表或值。您可以使用DAX篩選器函式返回特定資料型別、在相關表中查詢值以及按相關值篩選。DAX查詢函式透過使用表及其之間的關係來工作。DAX篩選器函式使您可以操作資料上下文以建立動態計算。

以下是一些DAX篩選器函式:

  • ADDMISSINGITEMS(<showAllColumn>, [<showAllColumn>] …, <table>, <groupingColumn>, [<groupingColumn>] … [filterTable] …)

  • ALL( {<table> | <column>, [<column>], [<column>] …} )

  • ALLEXCEPT(<table>, <column>, [<column>] …)

  • ALLNOBLANKROW(<table>|<column>)

  • ALLSELECTED([<tableName> | <columnName>])

  • CALCULATE (<expression>, <filter1>, <filter2>…)

  • CALCULATETABLE (<expression>, <filter1>, <filter2>…)

  • CROSSFILTER (<columnName1>, <columnName2>, <direction>)

  • DISTINCT (<column>)

  • EARLIER(<column>, <number>)

  • EARLIEST(<column>)

  • FILTER(<table>,<filter>)

  • FILTERS(<columnName>)

  • HASONEFILTER(<columnName>)

  • HASONEVALUE(<columnName>)

  • ISCROSSFILTERED (<columnName>)

  • ISFILTERED (<columnName>)

  • KEEPFILTERS (<expression>)

  • RELATED(<column>)

  • RELATEDTABLE(<tableName>)

  • SUBSTITUTEWITHINDEX (<table>, <indexColumnName>, <indexColumnsTable>, <orderBy_expression>, [<order>], [<orderBy_expression>, [<order>]] …])

  • USERELATIONSHIP(<columnName1>,<columnName2>)

  • VALUES(<TableNameOrColumnName>)

DAX時間智慧函式

DAX時間智慧函式返回日期表或使用日期表計算聚合。這些DAX函式幫助您建立支援商業智慧分析需求的計算,使您能夠使用時間段(包括天、月、季度和年)來操作資料。

以下是一些DAX時間智慧函式:

  • CLOSINGBALANCEMONTH (<expression>,<dates>[,<filter>])

  • CLOSINGBALANCEQUARTER (<expression>,<dates>, [<filter>])

  • CLOSINGBALANCEYEAR (<expression>,<dates>, [<filter>], [<year_end_date>])

  • DATEADD (<dates>,<number_of_intervals>, <interval>)

  • DATESBETWEEN (<dates>,<start_date>,<end_date>)

  • DATESINPERIOD (<dates>,<start_date>, <number_of_intervals>,<interval>)

  • DATESMTD (<dates>)

  • DATESQTD (<dates>)

  • DATESYTD (<dates>, [<year_end_date>])

  • ENDOFMONTH (<dates>)

  • ENDOFQUARTER (<dates>)

  • ENDOFYEAR (<dates> , [<year_end_date>])

  • FIRSTDATE (<dates>)

  • FIRSTNONBLANK (<column>,<expression>)

  • LASTDATE (<dates>)

  • LASTNONBLANK (<column>,<expression>)

  • NEXTDAY (<dates>)

  • NEXTMONTH (<dates>)

  • NEXTQUARTER (<dates>)

  • NEXTYEAR (<dates>, [<year_end_date>])

  • OPENINGBALANCEMONTH (<expression>,<dates>, [<filter>])

  • OPENINGBALANCEQUARTER (<expression>,<dates>, [<filter>])

  • OPENINGBALANCEYEAR (<expression>,<dates>, [<filter>], [<year_end_date>])

  • PARALLELPERIOD (<dates>,<number_of_intervals>, <interval>)

  • PREVIOUSDAY(<dates>)

  • PREVIOUSMONTH(<dates>)

  • PREVIOUSQUARTER(<dates>)

  • PREVIOUSYEAR (<dates>, [<year_end_date>])

  • SAMEPERIODLASTYEAR(<dates>)

  • STARTOFMONTH(<dates>)

  • STARTOFQUARTER(<dates>)

  • STARTOFYEAR(<dates>)

  • TOTALMTD (<expression>,<dates>, [<filter>])

  • TOTALQTD(<expression>,<dates>, [<filter>])

  • TOTALYTD(<expression>,<dates>, [<filter>], [<year_end_date>])

DAX日期和時間函式

DAX日期和時間函式類似於Excel日期和時間函式。但是,DAX日期和時間函式基於DAX的datetime資料型別。

以下是DAX日期和時間函式:

  • DATE(<year>, <month>, <day>)
  • DATEVALUE(date_text)
  • DAY(<date>)
  • EDATE(<start_date>, <months>)
  • EOMONTH(<start_date>, <months>)
  • HOUR(<datetime>)
  • MINUTE(<datetime>)
  • MONTH(<datetime>)
  • NOW()
  • SECOND(<time>)
  • TIME(hour, minute, second)
  • TIMEVALUE(time_text)
  • TODAY()
  • WEEKDAY(<date>, <return_type>)
  • WEEKNUM(<date>, <return_type>)
  • YEAR(<date>)
  • YEARFRAC(<start_date>, <end_date>, <basis>)

DAX資訊函式

DAX 資訊函式檢視作為引數提供的單元格或行,並告知您值是否與預期型別匹配。

以下是某些 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()

DAX邏輯函式

DAX 邏輯函式返回有關表示式中值的 資訊。例如,DAX TRUE 函式可讓您知道您正在評估的表示式是否返回 TRUE 值。

以下是 DAX 邏輯函式:

  • AND(<logical1>,<logical2>)
  • FALSE()
  • IF(logical_test>,<value_if_true>, value_if_false)
  • IFERROR(value, value_if_error)
  • NOT(<logical>)
  • OR(<logical1>,<logical2>)
  • SWITCH(<expression>, <value>, <result>, [<value>, <result>]…, [<else>])
  • TRUE()

DAX數學和三角函式

DAX 數學和三角函式與 Excel 數學和三角函式非常相似。

以下是某些 DAX 數學和三角函式:

  • ABS(<number>)
  • ACOS(number)
  • ACOSH(number)
  • ASIN(number)
  • ASINH(number)
  • ATAN(number)
  • ATANH(number)
  • CEILING(<number>, <significance>)
  • COMBIN(number, number_chosen)
  • COMBINA(number, number_chosen)
  • COS(number)
  • COSH(number)
  • CURRENCY(<value>)
  • DEGREES(angle)
  • DIVIDE(<numerator>, <denominator>, [<alternateresult>])
  • EVEN(number)
  • EXP(<number>)
  • FACT(<number>)
  • FLOOR(<number>, <significance>)
  • GCD(number1, [number2], ...)
  • INT(<number>)
  • ISO.CEILING(<number>, [<significance>])
  • LCM(number1, [number2], ...)
  • LN(<number>)
  • LOG(<number>,<base>)
  • LOG10(<number>)
  • INT(<number>)
  • MROUND(<number>, <multiple>)
  • ODD(number)
  • PI()
  • POWER(<number>, <power>)
  • PRODUCT(<column>)
  • PRODUCTX(<table>, <expression>)
  • QUOTIENT(<numerator>, <denominator>)
  • RADIANS(angle)
  • RAND()
  • RANDBETWEEN(<bottom>,<top>)
  • ROUND(<number>, <num_digits>)
  • ROUNDDOWN(<number>, <num_digits>)
  • ROUNDUP(<number>, <num_digits>)
  • SIN(number)
  • SINH(number)
  • SIGN(<number>)
  • SQRT(<number>)
  • SUM(<column>)
  • SUMX(<table>, <expression>)
  • TAN(number)
  • TANH(number)
  • TRUNC(<number>,<num_digits>)

DAX其他函式

這些 DAX 函式執行獨特的操作,這些操作無法由大多數其他函式所屬的任何類別定義。

以下是某些 DAX 其他函式:

  • EXCEPT(<table_expression1>, <table_expression2>)

  • GROUPBY (<table>, [<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 <name> = <expression>

DAX父子函式

DAX 父子函式可用於管理資料模型中以父子層次結構呈現的資料。

以下是某些 DAX 父子函式:

  • PATH(<ID_columnName>, <parent_columnName>)
  • PATHCONTAINS(<path>, <item>)
  • PATHITEM(<path>, <position>, [<type>])
  • PATHITEMREVERSE(<path>, <position>, [<type>])
  • PATHLENGTH(<path>)

DAX統計函式

DAX 統計函式與 Excel 統計函式非常相似。

以下是某些 DAX 統計函式:

  • BETA.DIST(x, alpha, beta, cumulative,[A],[B])

  • BETA.INV(probability, alpha, beta,[A],[B])

  • CHISQ.INV(probability, deg_freedom)

  • CHISQ.INV.RT(probability, deg_freedom)

  • 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, cumulative)

  • GEOMEAN(<column>)

  • GEOMEANX(<table>, <expression>)

  • MEDIAN(<column>)

  • MEDIANX(<table>, <expression>)

  • PERCENTILE.EXC(<column>, <k>)

  • PERCENTILE.INC(<column>, <k>)

  • PERCENTILEX.EXC(<table>, <expression>, k)

  • PERCENTILEX.EXC(<table>, <expression>, k)

  • POISSON.DIST(x, mean, cumulative)

  • RANK.EQ(<value>, <columnName>[, <order>])

  • RANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]])

  • SAMPLE (<n_value>, <table>, <orderBy_expression>, [<order>], [<orderBy_expression>, [<order>]]…)

  • STDEV.P(<ColumnName>)

  • STDEV.S(<ColumnName>)

  • STDEVX.P(<table>, <expression>)

  • STDEVX.S(<table>, <expression>)

  • SQRTPI(number)

  • VAR.P(<columnName>)

  • VAR.S(<columnName>)

  • VARX.P(<table>, <expression>)

  • VARX.S(<table>, <expression>)

  • XIRR(<table>, <values>, <dates>, [guess])

  • XNPV(<table>, <values>, <dates>, <rate>)

DAX文字函式

DAX 文字函式可用於表格和列。使用 DAX 文字函式,您可以返回字串的一部分,在字串中搜索文字或連線字串值。您還可以控制日期、時間和數字的格式。

以下是某些 DAX 文字函式:

  • BLANK()
  • CODE(text)
  • CONCATENATE(<text1>, <text2>)
  • CONCATENATEX(<table>, <expression>, [delimiter])
  • EXACT(<text1>,<text2>)
  • FIND(<find_text>, <within_text>, [<start_num>], [<NotFoundValue>])
  • FIXED(<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>)
  • SEARCH(<find_text>, <within_text>, [<start_num>], [<NotFoundValue>])
  • SUBSTITUTE(<text>, <old_text>, <new_text>, <instance_num>)
  • TRIM(<text>)
  • UPPER (<text>)
  • VALUE(<text>)
廣告
© . All rights reserved.