乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      數(shù)據(jù)類型和運算符

       優(yōu)雅野人 2022-05-20 發(fā)布于湖北

      數(shù)據(jù)類型

      DAX 可以使用七種常用的數(shù)據(jù)類型進行計算。在下面的列表中,我們展示了同一種數(shù)據(jù)類型在 DAX 種的名稱和它更常見的名稱。例如,布爾值(Boolean values)在 DAX 術語中被稱為 TRUE/FALSE。我們更愿意遵循事實上的命名標準,將它們稱為布爾值。除此之外,還有兩種比較特殊的類型會在最后介紹

      • 整數(shù) (Integer)
      • 十進制數(shù) (Float)
      • 貨幣 (Currency), 內部存儲為整數(shù)的固定小數(shù)
      • 日期 (DateTime)
      • 布爾值 (TRUE/FALSE)
      • 文本 (String)
      • 二進制 (Binary)
      • Blank/Null 類型
      • 變體(Variant) 類型

      DAX 數(shù)據(jù)類型在不同工具中使用的名稱

      DAX 有一個強大的類型處理系統(tǒng),因此你不必擔心數(shù)據(jù)類型:當你編寫 DAX 表達式時,結果的類型基于表達式使用的術語類型自動調整。我們稱之為隱式轉換,但在某些情況下,它不會進行轉換。 例如,如果 DAX 函數(shù)需要日期數(shù)據(jù)類型,而你的列的數(shù)據(jù)類型為文本,DAX 函數(shù)將不能正常工作。 因此,獲取適用于列的正確數(shù)據(jù)類型是重要并且有用的,如果 DAX 表達式返回的類型不是預期的類型,你需要須檢查表達式使用的術語的數(shù)據(jù)類型。

      例如,如果某列的數(shù)據(jù)類型是日期,那么求和的結果也是日期;然而,如果對整數(shù)使用相同的運算符,則結果是整數(shù)。這就是運算符重載,你可以在下圖中看到它的行為示例,其中 OrderDatePlusOneWeek 列是通過在 Order Date 列的值上增加 7 來計算的。結果,就像我們說的,是一個日期。

      向日期列添加一個整數(shù)會導致日期增加相應的天數(shù)

      除了運算符重載之外,在需要時 DAX 還會自動將字符串轉換為數(shù)字,或者將數(shù)字轉換為字符串。例如,如果使用連接字符串的&運算符,DAX 將把它的參數(shù)轉換成字符串。例如:

      • = 5 & 4

      將返回字符串形式的“54”,另一公式

      • = "5" + "4"

      返回數(shù)值型結果 9

      結果值依賴于運算符,而不是引用的列,列根據(jù)運算符的要求進行轉換。即使這種行為看起來很方便,稍后你將看到在這些自動轉換期間可能發(fā)生哪些錯誤。我們建議避免自動轉換。如果需要進行某種轉換,那么最好主動介入并使用顯示轉換。比如上面的例子應該使用:

      • = VALUE ( "5" ) + VALUE ( "4" )

      熟悉 Excel 或其他語言的人可能更熟悉 DAX 數(shù)據(jù)類型。你可以在這里找到關于 DAX 數(shù)據(jù)類型的規(guī)范。然而,對于每一種數(shù)據(jù)類型介紹一些注意事項是很有必要的。

      整數(shù) (Integer)

      DAX 只有一個整數(shù)數(shù)據(jù)類型,存儲 64 位的整數(shù)。DAX 中的整數(shù)值之間的所有內部計算都使用 64 位整數(shù)。 它支持 19 位數(shù);從 -9,223,372,036,854,775,807 (-2^63+1) 到 9,223,372,036,854,775,806 (2^63-2) 的正數(shù)或負數(shù)。 在需要控制舍入的情況下,整數(shù)類型非常有用。

      Power BI Desktop 數(shù)據(jù)模型支持 64 位整數(shù)值,但由于存在 JavaScript 限制,因此視覺對象可安全表達的最大數(shù)字是 9,007,199,254,740,991 (2^53-1)。 如果在數(shù)據(jù)模型中使用大于以上值的數(shù)字,可在將該數(shù)字添加到視覺對象前,通過計算減小其大小

      十進制數(shù)(Float)

      十進制數(shù)總是以雙精度浮點值的形式存儲。不要將這種 DAX 數(shù)據(jù)類型與 Transact-SQL 的十進制和數(shù)字數(shù)據(jù)類型混淆:在 SQL 中,DAX 十進制數(shù)字的對應數(shù)據(jù)類型是浮點。

      貨幣(Currency)

      貨幣數(shù)據(jù)類型存儲固定的十進制數(shù)。它可以表示為 4 位的小數(shù),內部存儲為 64 位的整數(shù)值除以 10000。在貨幣數(shù)據(jù)類型之間執(zhí)行的所有計算總是忽略 4 位小數(shù)點后面的小數(shù)。如果需要更精確的數(shù)據(jù),則必須進行十進制數(shù)據(jù)類型的轉換。

      貨幣數(shù)據(jù)類型的默認格式包括貨幣符號。還可以將貨幣格式應用于整數(shù)和十進制數(shù),還可以使用一種不帶貨幣符號的格式來表示貨幣數(shù)據(jù)類型。

      當表達式包含不同數(shù)據(jù)類型之間的乘法和除法時,需要關注是否涉及貨幣數(shù)據(jù)類型。因為在計算中進行類型轉換的位置不同可能會產(chǎn)生不同的結果。貨幣數(shù)據(jù)類型對于避免聚合中的某些舍入錯誤非常重要,但是應該謹慎地管理它,以避免復雜表達式產(chǎn)生意外的舍入錯誤。

      日期/時間(Datetime)

      DAX 在日期/時間數(shù)據(jù)類型中存儲日期。這種格式內部使用浮點數(shù),其中整數(shù)對應于 1899 年 12 月 30 日以來的天數(shù),而小數(shù)部分則表示當天的份數(shù)。小時、分鐘和秒被轉換成一天的小數(shù)部分。因此,下面的表達式返回當前日期加上一天(正好是 24 小時):

      • = NOW()+1

      它的結果是在計算當前時間的明天的日期,如果你只需要使用日期/時間的日期部分,可以使用 TRUNC 函數(shù)來刪除小數(shù)部分。

      Power BI 還提供另外兩種數(shù)據(jù)類型:日期類型和時間類型。在引擎內部,它們是日期/時間的簡單變體。實際上,兩種類型分別只存儲日期/時間的整數(shù)部分或小數(shù)部分。

      閏年錯誤

      1983 年發(fā)布的流行電子表格程序 Lotus 1-2-3 在處理 DateTime 數(shù)據(jù)類型時出現(xiàn)了一個錯誤。它認為 1900 年是閏年,盡管事實并非如此(一個世紀的最后一年是閏年,前提是前兩位數(shù)字除以 4 沒有余數(shù))。當時,Excel 第一版的開發(fā)團隊故意復制了這個 bug,以保持與 Lotus 1-2-3 的兼容性。從那以后,出于兼容性考慮,Excel 的每一個新版本都把這個 bug 作為一個特性來維護。

      為了保持與 Excel 的向后兼容,目前這個 bug 仍然在 DAX 中。Bug 的存在(或者我們應該稱之為特性嗎?)可能會導致 1900 年 3 月 1 日之前出現(xiàn)錯誤。因此,根據(jù)設計,DAX 的第一個官方支持的日期是 1900 年 3 月 1 日。在此日期之前執(zhí)行的日期計算可能會導致錯誤,應該被認為是不準確的。

      DAX 中的 1 代表 1899 年 12 月 31 日,而 EXCEL 是 1900 年 1 月 1 日,存在這種差別的原因是 Lotus 1-2-3 的最初版本有一個 bug,認為 1900 是一個閏年,其中包括 1900 年 2 月 29 日。實際上 1900 年不是閏年,所以在 1900 年 3 月 2 日之前的日期在 Lotus 1-2-3 中被誤寫了。由于蓮花的電子表格在當時非常受歡迎,為了與其競爭,微軟在自家的 EXCEL 上繼承了這個 bug 以便用戶可以無縫切換。DAX 的開發(fā)者對這個 Bug 采用了另一種不同的實現(xiàn)方式,導致在這個特定的時間段內,DAX 與 Excel 存在 1 天的差距。

      如果你需要在 1900 年之前進行計算,你應該使用數(shù)學方法來將其移動到 1900 年之后的日期,執(zhí)行計算,然后再平移回去。

      布爾值(TRUE/FALSE)

      布爾數(shù)據(jù)類型用于表示邏輯條件。例如,由以下表達式定義的計算列類型為布爾型:

      • = Sales[Unit Price] > Sales[Unit Cost]

      你也可以將布爾數(shù)據(jù)類型視為數(shù)字,其中 TRUE=1 和 FALSE=0。這在排序時很有用,因為 TRUE >FALSE。相反的,如果在邏輯判斷中直接使用數(shù)字,那么 0 將會被視為 FALSE,例如下面的表達式始終返回空

      • FILTER(Table,0)

      文本(String)

      DAX 中的每個字符串都存儲為 16 位 Unicode 字符串。默認情況下,字符串之間的比較是不區(qū)分大小寫的,因此這兩個字符串“PowerPivot”和“POWERPIVOT”是相等的。

      PowerQuery 比較字符串時默認區(qū)分大小寫,這是兩者的一個不同點,需特別留意。如果你使用的是 Analysis Services 表格模型,可以自行設置是否區(qū)分大小寫

      二進制(Binary)

      二進制數(shù)據(jù)類型用于在數(shù)據(jù)模型中存儲圖像,在 DAX 中無法訪問該數(shù)據(jù)類型。它主要被 Power View 或其他客戶端工具用來顯示直接存儲在數(shù)據(jù)模型中的圖片。在 Power BI 等其他工具中可能無法使用

      在圣經(jīng)第一版中此處使用的格式類型是二進制大對象(BLOB)

      空白/Null 類型

      BLANK 不對應 SQL 中的 NULL。DAX 中的 BLANK 不遵循 NULL 在 SQL 中的計算邏輯。在中間結果可能是 BLANK 的表達式中,必須注意這種區(qū)別。 你可以使用 BLANK 函數(shù)創(chuàng)建空白,并使用 ISBLANK 對其進行測試。

      關于空白、空字符串和零值的處理:

      表達式 DAX Excel
      BLANK + BLANK BLANK 0(零)
      BLANK + 5 5 5
      BLANK * 5 BLANK 0(零)
      5/BLANK 無窮大 錯誤
      0/BLANK NaN 錯誤
      空白/空白 BLANK 錯誤
      FALSE OR BLANK FALSE FALSE
      FALSE AND BLANK FALSE FALSE
      TRUE OR BLANK TRUE TRUE
      TRUE AND BLANK FALSE TRUE
      BLANK OR BLANK BLANK 錯誤
      BLANK AND BLANK BLANK 錯誤

      關于 BLANK 的更多注意事項,請在閱讀BLANK 的函數(shù)介紹

      變體/Variant 類型

      變體數(shù)據(jù)類型用于可能返回不同數(shù)據(jù)類型的度量值,具體取決于度量值使用的條件表達式。例如,下面的語句可以返回整數(shù)或字符串,所以它返回一個變體類型:

      1. IF ( [measure] > 0, 1, "N/A" )
      計算列不能返回變體類型,否則會收到提示:“不能使用生成變量數(shù)據(jù)類型的表達式定義計算列”。變體適用于 DAX 度量值,或更一般的說,DAX 表達式

       

      DAX 運算符

      了解了運算符在確定表達式類型的重要性之后,我們通過下表來看一下 DAX 中的運算符列表。

      運算符列表

      參數(shù)類型 符號 用法 舉例
      小括號 ( ) 改變計算優(yōu)先級和分組 (5+2)*3
      四則運算 + 相加 4 + 2
      ? 相減/邏輯否 5 ? 3
      * 相乘 4 * 2
      / 相除 4 / 2
      比較符號 = 等于 [CountryRegion] = “USA”
      <> 不等于 [CountryRegion] <> “USA”
      > 大于 [Quantity] > 0
      >= 大于或等于 [Quantity] >= 100
      < 小于 [Quantity] < 0
      <= 小于或等于 [Quantity] <= 100
      == 嚴格相等 Product[Color] == BLANK()
      文本連接 & 連接符 “Value is” & [Amount]
      邏輯判斷 && 兩個布爾表達式之間的邏輯“與” [CountryRegion] = “USA” && [Quantity]>0
      || 兩個布爾表達式之間的邏輯“或” [CountryRegion] = “USA” || [Quantity] > 0
      IN 元素包含在列表中 [CountryRegion] IN {“USA”, “Canada”}
      NOT 否定判斷 NOT [Quantity] > 0

      注意:IN 運算符 2016 年 11 月發(fā)布,可能無法在 Excel 2016 以及更早的版本中使用,詳情參考IN 和 CONTAINSROW一文。

      此外,邏輯運算符也可以作為 DAX 函數(shù)使用,語法非常類似于 Excel。例如,你可以這樣寫:

      1. AND ( [CountryRegion] = "USA", [Quantity] > 0 )
      2. OR ( [CountryRegion] = "USA", [Quantity] > 0 )

      它們分別與下面的寫法等價:

      1. [CountryRegion] = "USA" && [Quantity] > 0
      2. [CountryRegion] = "USA" || [Quantity] > 0

      當你必須編寫復雜條件時,使用函數(shù)代替運算符進行布爾邏輯運算變得非常有用。事實上,當需要格式化大量代碼時,函數(shù)比運算符更容易格式化和讀取。然而,函數(shù)的主要缺點是一次只能傳入兩個參數(shù)。如果需要計算兩個以上的條件,就需要嵌套函數(shù)。

      嚴格相等運算

      當兩個參數(shù)的值相同或都為空時,操作符==返回 TRUE,此運算符不執(zhí)行字符串和數(shù)字之間的任何隱式轉換,也就是說,將空值(BLANK)與任何其他值比較,比如 0、空字符串等,都將返回 FALSE。

      只有當兩個術語中至少有一個為空、空字符串或 0 時,==運算才與=不同。以下是使用“嚴格等于”運算符的有效表達式:

      1. Product[Color] == "Red"
      2. Product[Color] == BLANK() -- Product[Color] 為 BLANK 時返回 TRUE, 為 "" 或其他值時返回 FALSE
      3. Product[Color] == "" -- Product[Color] 為空字符串時返回 TRUE, 為 BLANK 或其他值時返回 FALSE
      4. Sales[Quantity] == 1
      5. Sales[Quantity] == BLANK() -- Sales[Quantity] 為 BLANK 時返回 TRUE, 為 "" 或其他值時返回 FALSE
      6. Sales[Quantity] == 0 -- Sales[Quantity] 為 0 時返回 TRUE, 為 BLANK 或其他值時返回 FALSE
      嚴格相等運算(==)在 Power BI, Azure Analysis Services, and Analysis Services 2019 中可用,但不支持早期的 Analysis Services 和 Power Pivot for Excel.

       

       

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多