我正在處理一個 SQL Server 資料庫,其中包含一個“定義的資料”列,其中包含 JSON 資料(以及其他一些簡單的列)。資料隨著時間的推移而積累,現在我們有大約 800 萬行。
來自該資料庫的資料由 ETL 系統定期讀取,然后 ETL 系統讀取“定義資料”列中的 JSON 資料,并根據 JSON 資料中包含的列名稱將資料映射到新的 SQL Server 表。
此 SQL Server 表易于更改,這意味著大約每 4 個月需要額外的列或更改列名稱。每當此 SQL Server 表更改其資料結構時,都會引入一個新版本,這也會強制更改 JSON 資料結構。
但是,ETL 系統應該仍然能夠從 SQL Server 資料庫加載所有歷史 (JSON) 資料,而不管隨時間變化的版本。考慮到 SQL Server 表和 JSON 資料的版本更改,我該如何進行這項作業?
!例子] 1
所以在這個例子中,我的問題是:
我如何確保可以將客戶端 20 和 21 加載到一個SQL Server 表中而不會出錯,因為 JSON 資料結構在歷史資料的情況下沒有反映版本 2?
鑒于 SQL Server 資料庫的大小,根據最新版本更新所有歷史 JSON 資料似乎不是一個選項(在本例中,這意味著為 01-01-2021 資料添加“AssetType”并填充它在 NULL 中)。
很多,非常感謝提前!
uj5u.com熱心網友回復:
首先,我會通過在資訊模式中查找它們來檢查表中是否存在 json 欄位作為列名。如果不存在,則更改表添加列。
uj5u.com熱心網友回復:
我如何確保可以將客戶端 20 和 21 加載到一個 SQL Server 表中而不會出錯,因為 JSON 資料結構在歷史資料的情況下沒有反映版本 2?
您維護 2 個單獨的表。與源具有相同架構的原始/暫存/青銅表,以及具有所需報告架構的清理/倉庫/銀表。如果您有多個單獨的源,則可能有單獨的原始表。
定期增強 Cleansed 表的架構以添加出現在 Raw 表中的新資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/399923.html
標籤:sql json sql-server
上一篇:T-SQL遞回更新
