Ssas
使用 #temp 表從查詢中載入 SSAS 表格模型表失敗
在我們的 SSAS 表格模型中,我們有幾種使用複雜查詢來創建/填充表的情況。
由於專有資訊和純查詢長度,此處無法展示實際案例,但以下測試案例說明了這種情況:
SELECT s.Servername, i.instanceID, i.InstanceName, i.ClientVersion, i.MajorVersion INTO #InstanceList FROM ServerLookup s INNER JOIN InstanceLookup i ON i.ServerID = s.ServerID SELECT i.Servername, i.InstanceName, i.ClientVersion, i.MajorVersion, im.EntryDescription, im.MonitorID INTO #InstanceMonitoring FROM #InstanceList i INNER JOIN InstanceMonitor im ON im.InstanceID = i.InstanceID SELECT i.ServerName, i.instanceName, m.MonitorName, m.MonitorDescription FROM #InstanceMonitoring i INNER JOIN MonitorLookup m on m.MonitorID = i.MonitorID
查詢在 SSMS 中執行 fin,但是當我們嘗試在表格模型中創建表時,它會拋出以下錯誤消息:
無法將修改保存到伺服器。返回錯誤:‘OLE DB 或 ODBC 錯誤。’。
沒有關於該錯誤的更多資訊。
我無法找到任何說明臨時表不能用於創建表格模型表的文件,並且我不願意告訴我的開發人員社區,如果沒有一些資訊來支持它就無法完成。
SQL 查詢可以轉換為儲存過程,然後作為 SSAS 維度/事實表的源 SQL 語句執行。與典型的儲存過程一樣,您可以毫無問題地使用臨時表。可以通過使用
EXEC
帶有結果集的語句從 SSAS 呼叫儲存過程,然後以與來自視圖或表的方式相同的方式使用該結果集。EXEC Schema.SP_Name
您可以在 SSAS 中以這種方式定義和使用臨時表:
with TempTableName as (<*select clause for temp table*>) Select <*columns from TempTableName and other tables*> from TempTableName, <*other tables*> where <*join conditions*>