簡體   English   中英

維度表主鍵轉移到事實表不能寫值

[英]Transfer of primary keys of dimension table to fact table cannot write values

我的問題是了解主鍵與事實表的關系。

這是我正在使用的結構,傳輸有效,但它說我設置為主鍵的值不能為 NULL

這是我正在使用的結構,傳輸有效,但它說我設置為主鍵的值不能為 NULL

我正在使用 SSIS 將數據從 csv 文件傳輸到 OLEDB(SQL server 2019 over SSMS)

實際問題是在哪里/如何在同一任務中獲取值? 我試圖在兩個不同的任務中完成,但它一個接一個地出現在表中(這僅在我允許主鍵為空值時才有效,我認為不能成為解決方案。)

可能是我的問題從源頭三個轉

  1. 第一維表
  2. 到第二維表
  3. 到事實表。 我認為主鍵是在我將數據傳輸到數據庫時生成的,所以我認為我無法在同一個任務中獲得它。

您正在嘗試加載 fischspezi 事實表以及產品 (produkt) 和位置 (standort)。 問題是,您沒有維度中的鍵。

我假設您維度中的“關鍵”列是自動生成的/身份值? 如果是這種情況,那么您需要將單個數據流分解為兩個數據流。 兩者都將保留平面文件源和多播。

數據流維度

這是現有數據流,減去通向事實表的路徑。

數據流事實

此數據流將用於填充事實表。 刪除維度表的兩個分支。 我們在這里需要做的是找到給定輸入的翻譯后的鍵值。 我假設 produkt_ID 和 steuer_id 應該被定義為 NOT NULL 並且在維度中是唯一的,但這里的概念是我們需要能夠使用我們文件中的值,產品 ID 3892,並在維度中找到相同的行鍵值為 1 的表。

用於此目的的工具是查找轉換。您將需要數據流中的 2-3 個就在目的地之前。 第一個將根據 produkt_ID 查找 produktkey。 第二個將根據 steuer_id 找到標准密鑰。

您想要的第三次查找(並添加回維度加載)將查找目標表中的當前行。 如果您運行現有包 10 次,您將擁有 10 倍的數據(除非您定義了唯一約束)。 在這里猜測,但我假設 sale_id 是源數據中的一個值,所以我會在這里查找以確保我不會雙重加載一行。 如果 sales_id 是生成的值,那么為了保持一致性,我會將后綴重命名為 key 以與數據模型的其余部分保持一致。

我還鼓勵大家閱讀 Andy Leonard 的Stairway to Integration Services系列。 第 3 級和第 4 級地址使用查找並確定如何更新現有行,我認為這將是您旅程中的一些后續步驟。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM