共用方式為


SAP HANA 資料庫

總結

項目 說明
發行狀態 一般可用性
產品 Excel
Power BI (語意模型)
Power BI (數據流)
Fabric(Dataflow Gen2)
Power Apps(數據流)
分析服務
支援的驗證類型 基本
資料庫
窗戶
函數參考文檔 SapHana.Database

備註

某些功能可能會在某些產品中出現,但因為部署排程和主機特定能力的限制,可能不會出現在其他產品中。

先決條件

您需要 SAP 帳戶才能登入網站並下載驅動程式。 如果您不確定,請連絡組織中的 SAP 系統管理員。

若要在Power BI Desktop 或 Excel 中使用 SAP HANA,您必須在本機用戶端電腦上安裝 SAP HANA ODBC 驅動程式,SAP HANA 資料連線才能正常運作。 您可以從包含必要 ODBC 驅動程式的 SAP Development Tools 下載 SAP HANA 用戶端工具。 或者,您可以從 SAP 軟體下載中心取得它。 在軟體入口網站中,搜尋適用於 Windows 電腦的 SAP HANA CLIENT。 由於 SAP 軟體下載中心經常變更其網站結構,因此無法提供該網站的具體指導方針。 如需安裝 SAP HANA ODBC 驅動程式的指示,請移至 在 Windows 64 位上安裝 SAP HANA ODBC 驅動程式

若要在 Excel 中使用 SAP HANA,您必須在本機用戶端電腦上安裝 32 位或 64 位 SAP HANA ODBC 驅動程式(視您使用 32 位或 64 位版本的 Excel 而定)。

如果您擁有 Office 2019 或 Microsoft 365 訂閱,則此功能僅適用於 Windows 版 Excel。 如果您是Microsoft 365 訂閱者, 請確定您有最新版本的 Office

支援 HANA 1.0 SPS 12rev122.09、2.0 SPS 3rev30 和 BW/4HANA 2.0。

支援的功能

  • 進口
  • 直接查詢 (Power BI 語意模型)
  • 進階
    • SQL 指令

從 Power Query Desktop 連線到 SAP HANA 資料庫

若要從 Power Query Desktop 連線到 SAP HANA 資料庫:

  1. 在 Power BI Desktop 中選取 取得資料> SAP HANA 資料庫,或在 Excel 的數據功能區中選取從資料庫> 從 SAP HANA 資料庫取得數據。

  2. 輸入您要連線之 SAP HANA 伺服器的名稱和埠。 下圖中的範例會在 SAPHANATestServer 連接埠 30015上使用 。

    輸入 SAP HANA 伺服器資訊。

    根據預設,埠號碼會設定為支援單一容器資料庫。 如果您的 SAP HANA 資料庫可以包含多個多租用戶資料庫容器,請選取 [多容器系統資料庫 ][30013]。 如果您想要連線到租戶資料庫或具有非預設實例號碼的資料庫,請從 [] 下拉功能表中選取 [自訂]。

    如果您要從 Power BI Desktop 連線到 SAP HANA 資料庫,您也可以選擇 [ 入] 或 [ DirectQuery]。 本文中的範例使用 Import,這是預設值 (以及 Excel 的唯一模式)。 如需在Power BI Desktop 中使用 DirectQuery 連線到資料庫的詳細資訊,請移至 在 Power BI 中使用 DirectQuery 連線到 SAP HANA 數據源

    您也可以輸入 SQL 語句,或從 進階選項啟用數據行系結。 詳細資訊, 使用進階選項進行連線

    輸入所有選項之後,請選取 [ 確定]。

  3. 如果您是第一次存取資料庫,系統會要求您輸入認證以進行驗證。 在此範例中,SAP HANA 伺服器需要資料庫用戶認證,因此請選取 [ 資料庫 ],然後輸入您的使用者名稱和密碼。 如有必要,請輸入您的伺服器證書資訊。

    輸入伺服器認證。

    此外,您可能需要驗證伺服器證書。 如需有關伺服器證書驗證選項的詳細資訊,請參閱 使用SAP HANA加密。 在 Power BI Desktop 和 Excel 中,預設會啟用驗證伺服器證書的選項。 如果您已在 ODBC 資料來源管理員中設定這些選項,請清除 [ 驗證伺服器證書 ] 複選框。 若要深入瞭解如何使用 ODBC 數據源管理員來設定這些選項,請移至 設定 SSL 以存取 SAP HANA 的 ODBC 用戶端

    如需驗證的詳細資訊,請前往 使用資料來源驗證

    填入所有必要的信息之後,請選取 [ 連線]。

  4. 從 [ 導覽器 ] 對話框,您可以選取 [ 轉換數據] 來轉換 Power Query 編輯器中的數據,或選取 [ 載入] 來載入數據。

從 Power Query Online 連線到 SAP HANA 資料庫

若要從 Power Query Online 連線到 SAP HANA 數據:

  1. 從 [ 數據源] 頁面中,選取 [SAP HANA 資料庫]。

  2. 輸入您要連線之 SAP HANA 伺服器的名稱和埠。 下圖中的範例會在 SAPHANATestServer 連接埠 30015上使用 。

  3. 或者,從 [進階選項] 輸入 SQL 語句。 詳細資訊, 使用進階選項進行連線

  4. 選取用於存取資料庫的內部部署數據閘道名稱。

    備註

    您必須搭配此連接器使用內部部署數據閘道,無論您的數據是本地還是在線。

  5. 選擇您想要用來存取資料的驗證種類。 您也必須輸入使用者名稱和密碼。

    備註

    Power Query Online 目前僅支援基本身份驗證。

  6. 如果您使用任何加密連線,請選取 [ 使用加密 連線],然後選擇 [SSL 加密提供者]。 如果您未使用加密連線,請清除 [使用加密連線]。 詳細資訊: 啟用 SAP HANA 的加密

    SAP HANA 資料庫在線登入。

  7. 選取 下一步 以繼續。

  8. 從 [ 導覽器 ] 對話框,您可以選取 [ 轉換數據] 來轉換 Power Query 編輯器中的數據,或選取 [ 載入] 來載入數據。

使用進階選項進行連線

Power Query 提供一組進階選項,您可以視需要新增至查詢。

下表描述您可以在Power Query 中設定的所有進階選項。

進階選項 說明
SQL 指令 詳細資訊, 使用原生資料庫查詢從資料庫匯入數據
啟用欄位綁定 在擷取數據時,將變數系結至 SAP HANA 結果集的數據行。 可能會改善效能,但是代價會是稍微更高的記憶體使用率。 此選項僅適用於Power Query Desktop。 詳細資訊: 啟用數據行系結
ConnectionTimeout 控制在放棄嘗試與伺服器連線之前要等候的時間長度。 預設值為 15 秒。
CommandTimeout 控制伺服器端查詢在被取消前允許執行的時間長度。 預設值為十分鐘。

SAP HANA 支援的功能

下列清單顯示 SAP HANA 支援的功能。 SAP HANA 資料庫連接器的所有實作都不支援此處所列的所有功能。

  • 適用於 SAP HANA 資料庫的 Power BI Desktop 和 Excel 連接器都使用 SAP ODBC 驅動程式來提供最佳的用戶體驗。

  • 在 Power BI Desktop 中,SAP HANA 同時支援 DirectQuery 和匯入選項。

  • Power BI Desktop 支援 HANA 資訊模型,例如分析和計算檢視,並已優化流覽。

  • 透過 SAP HANA,您也可以使用原生資料庫查詢 SQL 語句中的 SQL 命令,連線到 HANA 目錄資料表中的數據列和資料行數據表,這些數據表不包含在導覽器體驗所提供的分析/計算檢視中。 您也可以使用 ODBC 連接器 來查詢這些資料表。

  • Power BI Desktop 包含 HANA 模型的優化導覽。

  • Power BI Desktop 支援 SAP HANA 變數和輸入參數。

  • Power BI Desktop 支援 HDI 容器型計算檢視。

  • SapHana.Database 函式現在支援連線和命令超時。 其他資訊:使用進階選項連線

    • 若要在Power BI 中存取 HDI 容器型計算檢視,請確定您搭配 Power BI 使用的 HANA 資料庫使用者有權存取儲存您想要存取之檢視的 HDI 運行時間容器。 若要授與此存取權,請建立一個角色,該角色允許存取您的 HDI 容器。 然後將角色指派給您將搭配Power BI使用的 HANA 資料庫使用者。 (此使用者也必須具備從_SYS_BI架構中系統數據表讀取的許可權,如往常一樣。如需如何建立和指派資料庫角色的詳細指示,請參閱官方 SAP 檔。 此 SAP 部落格文章 可能是一個很好的起點。

    • 目前附加至 HDI 計算檢視的 HANA 變數有一些限制。 這些限制是因為 HANA 端的錯誤。 首先,您無法將 HANA 變數套用至 HDI 容器型計算檢視的共享資料行。 若要修正這項限制,請升級至 HANA 2 37.02 版和更新版本,或升級至 HANA 2 42 版和更新版本。 其次,變數和參數的多項目預設值目前不會顯示在Power BI UI 中。 SAP HANA 中的錯誤會造成這項限制,但 SAP 尚未宣佈修正程式。

啟用欄位綁定

從數據源擷取的數據會以應用程式為此用途配置的變數傳回給應用程式。 在完成此作業之前,應用程式必須將這些變數與結果集的數據行產生關聯或 系結;就概念上講,此程式與將應用程式變數系結至語句參數相同。 當應用程式將變數系結至結果集數據行時,它會描述該變數 - 位址、數據類型等等 - 至驅動程式。 驅動程式會將這項資訊儲存在針對該語句所維護的結構中,並使用資訊在擷取數據列時,從數據行傳回值。

目前,當您使用 Power Query Desktop 連線到 SAP HANA 資料庫時,您可以選取 [ 啟用數據行系結 進階] 選項來啟用數據行系結。

您也可以在現有的查詢或 Power Query Online 中使用的查詢中啟用數據行系結,方法是在 Power Query 公式列或進階編輯器中手動將 選項新增 EnableColumnBinding 至連線。 例如:

SapHana.Database("myserver:30015", [Implementation = "2.0", EnableColumnBinding = true]),

有與手動新增 EnableColumnBinding 選項相關聯的限制:

  • 啟用數據行系結可在 Import 和 DirectQuery 模式中運作。 不過,無法將現有的 DirectQuery 查詢改造為使用此進階選項。 相反地,必須建立新的查詢,此功能才能正常運作。
  • 在 SAP HANA Server 2.0 版或更新版本中,欄位綁定是全有或全無的。 如果某些資料行無法繫結,則不會繫結任何資料行,而且使用者會收到例外狀況,例如 DataSource.Error: Column MEASURE_UNIQUE_NAME of type VARCHAR cannot be bound (20002 > 16384)
  • SAP HANA 1.0 版伺服器不一定會報告正確的數據行長度。 在此內容中,EnableColumnBinding 允許部分欄綁定。 對於某些查詢,這可能表示不會綁定任何欄。 未系結任何欄位時,無法獲得任何效能提升。

SAP HANA 資料庫連接器中的原生查詢支援

Power Query SAP HANA 資料庫連接器支援原生查詢。 如需如何在 Power Query 中使用原生查詢的資訊,請移至 使用原生資料庫查詢從資料庫匯入數據

原生查詢中的查詢折疊

Power Query SAP HANA 資料庫連接器現在支援原生查詢上的查詢折疊。 詳細資訊: 原生查詢的查詢折疊

備註

在 Power Query SAP HANA 資料庫連接器中,當 設定為 true 時 EnableFolding ,原生查詢不支援重複的數據行名稱。

原生查詢中的參數

Power Query SAP HANA 資料庫連接器現在支援原生查詢中的參數。 您可以使用 Value.NativeQuery 語法,在原生查詢中指定參數。

不同於其他連接器,SAP HANA 資料庫連接器同時支援 EnableFolding = True 和指定參數。

若要在查詢中使用參數,請將問號 (?) 放在程式代碼中作為佔位元。 若要指定參數,您需要在Value中使用SqlType的文字值以及相應的值SqlTypeValue 可以是任何 M 值,但必須指派給指定 SqlType的值。

有多種方式可以指定參數:

  • 只提供值做為清單:

    { “Seattle”, 1, #datetime(2022, 5, 27, 17, 43, 7) }
    
  • 提供值和型別做為清單:

    { [ SqlType = "CHAR", Value = "M" ], 
       [ SqlType = "BINARY", Value = Binary.FromText("AKvN", BinaryEncoding.Base64) ], 
       [ SqlType = "DATE", Value = #date(2022, 5, 27) ] }
    
  • 將兩者混搭起來。

    { “Seattle”, 1, [ SqlType = "SECONDDATE", Value = #datetime(2022, 5, 27, 17, 43, 7) ] }
    

SqlType 遵循 SAP HANA 所定義的標準類型名稱。 例如,下列清單包含最常用的類型:

  • BIGINT
  • 二進制
  • 布林
  • 燒焦
  • 日期
  • 十進位
  • 雙倍
  • 整數
  • NVARCHAR
  • 第二次約會
  • SHORTTEXT
  • 小數
  • SMALLINT
  • 時間
  • 時間戳記
  • VARBINARY(變數二進位數據)
  • VARCHAR

下列範例示範如何提供參數值的清單。

let
    Source = Value.NativeQuery(
        SapHana.Database(
            "myhanaserver:30015", 
            [Implementation = "2.0"]
        ), 
        "select ""VARCHAR_VAL"" as ""VARCHAR_VAL""
    from ""_SYS_BIC"".""DEMO/CV_ALL_TYPES""
    where ""VARCHAR_VAL"" = ? and ""DATE_VAL"" = ?
    group by ""VARCHAR_VAL""
    ", 
        {"Seattle", #date(1957, 6, 13)}, 
        [EnableFolding = true]
    )
in
    Source

下列範例示範如何提供記錄清單(或混合值和記錄):

let
    Source = Value.NativeQuery(
        SapHana.Database(Server, [Implementation="2.0"]), 
    "select
        ""COL_VARCHAR"" as ""COL_VARCHAR"",
        ""ID"" as ""ID"",
        sum(""DECIMAL_MEASURE"") as ""DECIMAL_MEASURE""
    from ""_SYS_BIC"".""DEMO/CV_ALLTYPES""
    where
        ""COL_ALPHANUM"" = ? or
        ""COL_BIGINT"" = ? or
        ""COL_BINARY"" = ? or
        ""COL_BOOLEAN"" = ? or
        ""COL_DATE"" = ?
    group by 
        ""COL_ALPHANUM"",
        ""COL_BIGINT"",
        ""COL_BINARY"",
        ""COL_BOOLEAN"",
        ""COL_DATE"",
       {
            [ SqlType = "CHAR", Value = "M" ],                                                // COL_ALPHANUM - CHAR
            [ SqlType = "BIGINT", Value = 4 ],                                                // COL_BIGINT - BIGINT
            [ SqlType = "BINARY", Value = Binary.FromText("AKvN", BinaryEncoding.Base64) ],   // COL_BINARY - BINARY
            [ SqlType = "BOOLEAN", Value = true ],                                            // COL_BOOLEAN - BOOLEAN
            [ SqlType = "DATE", Value = #date(2022, 5, 27) ],                                 // COL_DATE - TYPE_DATE
        } ,
        [EnableFolding=false]
    )
in
    Source

支援動態屬性

SAP HANA 資料庫連接器處理計算欄位的方式已經過改善。 SAP HANA 資料庫連接器是「Cube」連接器,而且有一些作業集(新增專案、折迭數據行等等)發生在「Cube」空間中。 此立方體空間會在 Power Query Desktop 和 Power Query Online 的使用者介面中顯示,該空間透過取代較常見的「表格」圖示的「立方體」圖示來展現。

Power Query 中目前檢視左側的螢幕快照,強調數據列編號數據行頂端的 Cube 圖示。

之前,當您新增數據表欄(或其他會在內部新增欄的轉換)時,查詢會「脫離 Cube 空間」,所有操作都將在數據表層級進行。 在某些時候,此卸除可能會導致查詢停止折疊。 新增一個欄位後就無法再執行 Cube 作業。

有了這項變更,新增的數據行就會被視為 Cube 內的 動態屬性 。 即使在新增欄位後,讓查詢保持在 Cube 空間中的優勢之一是您可以繼續使用 Cube 作業。

備註

只有當您連線到 SAP HANA Server 2.0 版或更高版本中的計算檢視時,才能使用這項新功能。

下列範例查詢會利用這項新功能。 在過去,當您套用 Cube.CollapseAndRemoveColumns 時,會收到「值不是立方體」的例外狀況。

let
    Source = SapHana.Database(“someserver:someport”, [Implementation="2.0"]),
    Contents = Source{[Name="Contents"]}[Data],
    SHINE_CORE_SCHEMA.sap.hana.democontent.epm.models = Contents{[Name="SHINE_CORE_SCHEMA.sap.hana.democontent.epm.models"]}[Data],
    PURCHASE_ORDERS1 = SHINE_CORE_SCHEMA.sap.hana.democontent.epm.models{[Name="PURCHASE_ORDERS"]}[Data],
    #"Added Items" = Cube.Transform(PURCHASE_ORDERS1,
        {
            {Cube.AddAndExpandDimensionColumn, "[PURCHASE_ORDERS]", {"[HISTORY_CREATEDAT].[HISTORY_CREATEDAT].Attribute", "[Product_TypeCode].[Product_TypeCode].Attribute", "[Supplier_Country].[Supplier_Country].Attribute"}, {"HISTORY_CREATEDAT", "Product_TypeCode", "Supplier_Country"}},
            {Cube.AddMeasureColumn, "Product_Price", "[Measures].[Product_Price]"}
        }),
    #"Inserted Year" = Table.AddColumn(#"Added Items", "Year", each Date.Year([HISTORY_CREATEDAT]), Int64.Type),
    #"Filtered Rows" = Table.SelectRows(#"Inserted Year", each ([Product_TypeCode] = "PR")),
    #"Added Conditional Column" = Table.AddColumn(#"Filtered Rows", "Region", each if [Supplier_Country] = "US" then "North America" else if [Supplier_Country] = "CA" then "North America" else if [Supplier_Country] = "MX" then "North America" else "Rest of world"),
    #"Filtered Rows1" = Table.SelectRows(#"Added Conditional Column", each ([Region] = "North America")),
    #"Collapsed and Removed Columns" = Cube.CollapseAndRemoveColumns(#"Filtered Rows1", {"HISTORY_CREATEDAT", "Product_TypeCode"})
in
    #"Collapsed and Removed Columns"

局限性

下列限制適用於 Power Query SAP HANA 資料庫連接器。

透過 Proxy 連線至 SAP HANA 資料庫

SAP HANA 資料庫連接器不支援透過 Proxy 連線到雲端資料庫。 若要解決此問題,請改用 ODBC 連接器 ,並在 DSN 或連接字串中指定 Proxy 設定。

後續步驟

下列文章包含連線到 SAP HANA Debase 時可能會發現有用的詳細資訊。