Sql-Server

將 DAX OpenQuery 輸對外連結接到 SQL Server 臨時表

  • July 2, 2018

我想將表格模型中的度量記錄為 KPI,並將值儲存在 SQL Server 的表中。

我已經創建了一個從我的 SQL Server 實例到我的 SSAS 實例的連結伺服器。我編寫了一個儲存過程來通過 執行 DAX 程式碼OPENQUERY,目的是將它們儲存在臨時表中,然後再將它們載入到 KPI 表中。我正在使用臨時表,因為我正在查詢多個表格模型。

當我嘗試使用輸出中的值更新我的臨時表時,就會出現我的問題OPENQUERY。我的OPENQUERY輸出目前在 CTE 內,我希望對臨時表進行簡單的聯接,但由於 DAX 查詢的輸出返回了 內的每個列名[ ],當我嘗試加入其中一個OPENQUERY列時,我收到錯誤“無效的列名…”。

例如

UPDATE temp
SET temp.[Current Contract Count] = cte.[Contract Count]
FROM #ServiceZoneKPIs AS temp
INNER JOIN tabular_cte AS cte
ON cte.[Copy of Service Zone Code] = temp.[ServiceZoneAlternateKey]

發生錯誤是因為 OPENQEURY 輸出中不存在“服務區域的副本”;輸出列名是

$$ Copy of Service Zone $$. 我很可能在這裡錯過了一個簡單的技巧?

如何將OPENQUERY輸出(返回表格模型數據)加入我的 T-SQL 臨時表?

如果列名有括號,則需要對其進行轉義。你可以看看如果你使用 function QUOTENAME()

SELECT QUOTENAME('[awful column name]') 
-- Result: [[awful column name]]]

注意額外的右括號。您應該嘗試為包含括號的列名添加一對額外的封閉括號和一個額外的封閉括號。

假設您的問題是tabular_cte’s 列:

UPDATE temp
SET temp.[Current Contract Count] = cte.[[Contract Count]]]
FROM #ServiceZoneKPIs AS temp
INNER JOIN tabular_cte AS cte
ON cte.[[Copy of Service Zone Code]]] = temp.[ServiceZoneAlternateKey]

引用自:https://dba.stackexchange.com/questions/211145