Mysql
查詢每月創建為一張表的表(電話 PBX)
我試過在特定的 Power BI 論壇上問這個問題,但沒有用:
所以我想知道這是否可以通過我擁有 1 個 SQL 伺服器來實現,該伺服器合併來自云 MySQL 伺服器中表的所有數據。因此 Power BI 只查詢 1 x 表?
情況
- 我在電話系統上有 Power BI 報告。
- 數據是我的 Power BI 連接到的 MySQL 數據庫。
- PBX平台來自一家名為“yeastar”的公司
問題
但是,問題是這個電話系統每個月都會創建一個新表。我無法控製或改變這一點。
我的 Power BI 連接到 1 個月的表並且一切正常,但是我不能再檢索另一個月的數據,因為它在另一個表中。每個月都會創建一個新表,我必須創建一個新的 Power BI 項目並連接到該新表。
我的問題
- 我可以將表名作為欄位後跟萬用字元嗎?
- 我是否需要另一個 SQL 伺服器用作“轉換”,以便查詢所有這些表,然後向 Power BI 提供 1 個大表?
範例表/查詢
螢幕截圖顯示了我正在查詢的數據庫。
將數據拆分為多個表通常是“錯誤的”。
一個“單個”表可以
PARTITIONed
分成多個子表。如果設置正確,您可以使用“可傳輸表”將新的“月份”添加到分區表中。BI 是做什麼的?它是否執行越來越長的數據摘要?那麼,這一切都是落後的。相反,總結每個月的數據,因為它進來了;這些數據將進入一個表。這個匯總表的閱讀速度會快得多。
您可能需要考慮為您的 PowerBI 查詢創建一個視圖。
該視圖將被定義為:
CREATE VIEW `cdr.cdr_summaryview` ( id, datetime, clid, src.dst, dcontext, srctrunk, dstrunk, lastapp ) AS SELECT id, datetime, clid, src.dst, dcontext, srctrunk, dstrunk, lastapp FROM `cdr.cdr_202002` UNION SELECT id, datetime, clid, src.dst, dcontext, srctrunk, dstrunk, lastapp FROM `cdr.cdr_202003` -- /*============================= -- repeat UNION for all tables -- =============================*/ UNION SELECT id, datetime, clid, src.dst, dcontext, srctrunk, dstrunk, lastapp FROM `cdr.cdr_202109`
cdr.cdr_summaryview
使用這種方法,您只需修改現有視圖定義並通過新UNION
子句添加新表即可將新的月度表添加到視圖中。您的 PowerBI 查詢僅將
cdr.cdr.summaryview
用作數據源,而不是單獨的每月匯總表。參考:
- CREATE VIEW 語句(MySQL 參考手冊)
- 第 24 章分區(MySQL 參考手冊)
也就是說,將每月數據放在單獨的表中並不是最好的主意。像 Rick James 指出的那樣對數據進行分區是一個更好的解決方案。
回答您的問題
我可以將表名作為萬用字元後跟欄位嗎?
不,您不能為表名定義萬用字元。
我是否需要另一個 SQL 伺服器用作“轉換”,以便查詢所有這些表,然後向 Power BI 提供 1 個大表?
您可以根據我的建議解決您的問題。