DAX 語法規範

2021-07-27 15:01:11 字數 3576 閱讀 2256

資料分析表示式 (dax) 是乙個由函式、運算子和常量組成的庫,可在 powerpivot for excel 中組合這些庫元素以生成公式和表示式。本節提供了有關 dax 語言的語法和要求的詳細資訊。 

有關可以生成的各種公式的示例,以及有關如何使用表示式篩選表和更改上下文的資訊,請參閱資料分析表示式 (dax) 入門。本主題包含以下各節:

語法要求

命名要求

函式運算子和常量

資料型別

dax 公式與您在 excel 表中鍵入的公式非常相似,但是兩者之間也有一些重要區別。

dax 公式始終以等號 (=) 開頭。等號之後,可以提供計算結果為標量的任何表示式或可以轉換為標量的表示式。其中包括:

例如,下面都是有效公式。

結果=3

3="sales"

sales

='sales'[amount]

如果在 sales 表中使用此公式,您將獲取 sales 表中當前行的 amount 列的值。

=(0.03 *[amount])

=0.03 * [amount]

當前表的 amount 列中值的 3%。

雖然此公式可用來計算百分比,但是,除非您在該表中設定格式,否則結果並不會以百分比形式顯示。

=pi()

常量 pi 的值。

根據公式的使用位置是在計算列中還是資料透視表的度量值中,公式的行為可能有所不同。必須始終注意上下文以及在公式中使用的資料如何與計算中可能使用的其他資料相關。有關詳細資訊,請參閱 dax 公式中的上下文。

powerpivot 視窗可包含多個表,每個表都在自己的選項卡上。這些表和表中的列一起構成乙個儲存在 powerpivot vertipaq 引擎中的資料庫。該資料庫中所有表的名稱都必須唯一。列名稱在每個表中也必須唯一。 所有物件名稱都不區分大小寫;例如,sales 和 sales 表示同乙個表。

您新增到現有 powerpivot 資料庫中的每個列和度量值都必須屬於特定的表。在表中建立計算列時,您是在隱式指定包含該列的表;在建立度量值並指定用於儲存該度量值定義的表的名稱時,您是在顯式指定包含該度量值的表。

將表或列用作函式的輸入時,通常必須「限定」列名稱。列的「完全限定」名稱是表名,後跟放在方括號中的列名:例如 'u.s.sales'[products]。在您引用以下上下文中的列時,始終要求完全限定名稱:

「非限定」列名稱就是放在方括號中的列名稱:例如 [sales amount]。例如,從當前表的同一行引用標量值時,可以使用非限定列名。

如果表名包含空格、保留關鍵字或不允許使用的字元,則必須將表名放在單引號中。如果名稱包含 ansi 字母數字字元範圍之外的任何字元,還必須將表名稱用引號引起來,而不管您的區域設定是否支援該字符集。例如,如果您開啟乙個工作簿,工作簿中包含用西里爾語字元編寫的表名(如「таблица」),則該錶名必須用引號引起來,即使它不包含空格。

為了便於輸入列的完全限定名稱,建議您使用客戶端中的公式記憶式鍵入功能。

表 度量值

列列名在表的上下文中必須唯一;但是,多個表可以具體同名的列(只要表名明確)。

一般而言,可以不引用列屬於的基礎表就引用列,只有在可能存在要解析的名稱衝突時或者具有某些要求列名完全限定的函式時除外。

保留關鍵字

如果對錶使用的名稱與 analysis services 保留關鍵字相同,則會產生錯誤,且您必須重新命名該錶。但是,如果物件名稱放在方括號中(對於列)或引號中(對於表),則可在物件名稱中使用關鍵字。

請注意,引號可用多個不同字元表示,具體取決於應用程式。如果您從外部文件或 web 頁中貼上公式,請務必檢查用於左右引號的字元的 ascii **,以確保它們相同。否則,dax 可能無法將這些符號識別為引號,從而將該引用視為無效。

特殊字元

以下字元和字元型別在表、列或度量值的名稱中無效:

物件名稱示例

下表顯示了一些物件名稱的示例:

示例注釋

表名sales

如果表名中不包含空格或者其他特殊字元,則名稱無需在引號中引起來。

表名『canada sales』

如果表名中包含空格、製表符或其他特殊字元,請將表名用單引號引起來。

完全限定的列名稱

sales[amount]

表名位於列名之前,並且列名用方括號括起來。

完全限定的度量值名稱

sales[profit]

表名位於度量值名稱之前,並且度量值名稱用方括號括起來。在某些上下文中,始終要求完全限定名稱。

非限定列名稱

[amount]

非限定名稱只是方括號中的列名。可使用非限定名稱的上下文包括同一表內計算列中的公式,或者掃瞄同一表的聚合函式中的公式。

包含空格的完全限定表列

『canada sales』[qty]

表名包含空格,因此必須用單引號引起來。

為了便於輸入列的完全限定名稱,建議您在構建公式時使用記憶式鍵入功能。有關詳細資訊,請參閱為計算列和度量值構建公式。

每個函式所需的語法以及它可執行的操作型別可能有很大差異。但是,以下規則一般適用於所有公式和表示式:

dax 提供以下型別的函式。

下表列出了 dax 支援的運算子。一般來說,dax 中的運算子的作用與在 microsoft excel 中相同,但有一些細微區別。有關各個運算子的語法的詳細資訊,請參閱運算子參考 (dax)。

符號和用途

括號運算子

()優先順序和引數分組

算術運算子

+(加)

-(減/求反)

*(乘)

/(除)

^(求冪)

比較運算子

=(等於)

>(大於)

<(小於)

>=(大於等於)

<=(小於等於)

<>(不等於)

文字串聯運算子

&(串聯)

邏輯運算子

&&(與)

||(或)

!(求反)

對於在 dax 公式中使用的列或值,無需對其資料型別執行強制轉換或轉換,也無需用其他方法指定其資料型別。當您在 dax 公式中使用資料時,dax 會自動確定所引用的列中的資料型別以及您所鍵入的值的資料型別,並會在需要時執行隱式轉換以完成指定操作。

例如,如果您將乙個數字與乙個日期值相加,powerpivot 將在函式上下文中解釋該運算(和 excel 一樣),並將數字轉換為通用資料型別,然後以目標格式(即日期格式)顯示結果。

但是,對於可以成功轉換的值有一些限制。如果值或列的資料型別與當前運算不相容,則 dax 將返回錯誤。此外,dax 未提供可對已匯入 powerpivot 工作簿中的現有資料進行資料型別更改、轉換或強制轉換的函式。

powerpivot 不支援使用在 excel 中使用的變數資料型別。因此,當您載入或匯入資料時,每個列中的資料通常應為一致的資料型別。

有些函式會返回包括字串在內的標量值,而有些函式則處理數字,包括整數和實數或日期和時間。函式參考 (dax)一節介紹了每個函式所需的資料型別。

在 powerpivot 中,表是一種新的資料型別。您可以將包含多列和多行資料的表用作函式的引數。一些函式也會返回表,這些表儲存在記憶體中,且可用作其他函式的引數。

有關不同數值和日期/時間資料型別的詳細資訊以及處理 null 和空字串的詳細資訊,請參閱 powerpivot 工作簿中支援的資料型別。

XML語法規範

一 如何宣告乙個xml檔案 有兩部分組成 宣告部分 宣告xml的版本與編碼,如下 文件節點部分 節點名 節點名 注意 在xml 裡,節點 元素 標籤,乙個意思 二 整個文件有且只有乙個根節點,如 正確 錯誤 三 標籤 標籤必須成對出現,進行閉合,如 而且標籤還區分大小寫 在xml標籤屬性全小寫 或者...

HTML語法規範

語法規範概述 html標籤通常是成對出現的,例如和 我們成為雙標籤。標籤對中的第乙個標籤是開始標籤,第二個標籤是結束標籤。有些特殊的標籤必須是單個標籤,例如 我們稱之為單標籤 標籤關係 html基本結構標籤 標籤名定義 說明html標籤 頁面中最大的標籤,我們稱之為跟標籤 文件的頭部 注意在head...

mysql的語法規範

1.不區分大小寫,但建議關鍵字大寫,表名,列名小寫 2.每條命令最好用分號結尾 3.每條命令根據需要,可以進行縮排,或換行.4.注釋 單行注釋 注釋文字 多行注釋 注釋文字 5.起別名 方式一 使用as select last name as 姓 first name as 名 from emplo...