SAP HANA 資料庫

摘要

項目 說明
發行狀態 正式發行
產品 Excel
Power BI (語意模型)
Power BI (數據流)
網狀架構 (資料流 Gen2)
Power Apps (數據流)
Analysis Services
支援的驗證類型 基本
Database
Windows
函式參考檔 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。

支援的功能

  • Import
  • 直接查詢 (Power BI 語意模型)
  • 先進
    • SQL 語句

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

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

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

  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 資料來源 管理員 istrator 中設定這些選取專案,請清除 [驗證伺服器證書] 複選框。 若要深入瞭解如何使用 ODBC 數據源 管理員 istrator 來設定這些選項,請移至設定 SSL 以存取 SAP HANA

    如需驗證的詳細資訊,請移至 使用數據源進行驗證。

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

  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 和指定參數。

若要在查詢中使用參數,請將問號 (?) 放在程式代碼中作為佔位元。 若要指定 參數,您可以使用 SqlType 中的Value文字值和 值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
  • BINARY
  • BOOLEAN
  • CHAR
  • 日期
  • DECIMAL
  • DOUBLE
  • INTEGER
  • NVARCHAR
  • SECONDDATE
  • SHORTTEXT
  • SMALLDECIMAL
  • SMALLINT
  • TIME
  • timestamp
  • 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」空間中。 此 Cube 空間會顯示在 Power Query Desktop 和 Power Query Online 使用者介面中,其是由取代較通用「數據表」圖標的「Cube」圖示。

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

之前,當您新增數據表數據行(或內部新增數據行的另一個轉換)時,查詢會「卸除 Cube 空間」,而且所有作業都會在數據表層級完成。 在某些時候,此卸除可能會導致查詢停止折疊。 無法再新增數據行之後執行 Cube 作業。

有了這項變更,新增的數據行就會被視為 Cube 內的動態屬性 。 讓查詢保留在此作業的 Cube 空間中,有一個優點是讓您即使在加入數據行之後仍繼續使用 Cube 作業。

注意

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

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

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"

下一步

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