QlikView - การอ้างอิงแบบวงกลม

Circular Referenceเกิดขึ้นเมื่อเราสามารถข้ามจากตารางหนึ่งไปยังอีกตารางหนึ่งโดยใช้เส้นทางที่แตกต่างกันสองเส้นทางขึ้นไป ซึ่งหมายความว่าคุณสามารถเข้าร่วม Table1 กับ Table2 ได้โดยตรงโดยใช้คอลัมน์หรือก่อนอื่นคุณสามารถเข้าร่วม Table1 กับ Table3 จากนั้น table3 กับ Table2 สิ่งนี้สามารถนำไปสู่ผลลัพธ์ที่ไม่ถูกต้องในเอาต์พุตที่สร้างขึ้นจากโมเดลข้อมูลซึ่งโหลดตารางทั้งสามนี้ QlikView ป้องกันการโหลดข้อมูลดังกล่าวลงในหน่วยความจำเมื่อรับรู้การอ้างอิงแบบวงกลม

ป้อนข้อมูล

ให้เราพิจารณาไฟล์ข้อมูล CSV สามไฟล์ต่อไปนี้ซึ่งใช้เป็นอินพุตสำหรับภาพประกอบเพิ่มเติม

SalesCountries:
ProductID,ProductCategory,Country,SaleAmount
1,Outdoor Recreation,Italy,4579
2,Clothing,USA,4125
3,Costumes & Accessories,South Korea,6521
4,Athletics,Japan,4125
5,Personal Care,Brazil,5124
6,Arts & Entertainment,China,1245
7,Hardware,South America,456
8,Home & Garden,Peru,241
9,Food,India,1247
10,Home & Garden,Singapore,5462
11,Office Supplies,Hungary,577

ProductCountry:
ProductID, Country
3,Brazil
3,China
2,Korea
1,USA
2,Singapore
7,Sri Lanka
1,Italy

โหลดสคริปต์

เราโหลดข้อมูลอินพุตด้านบนโดยใช้โปรแกรมแก้ไขสคริปต์ซึ่งเรียกใช้โดยการกด Control+E. เลือกตัวเลือกTable Files และเรียกดูไฟล์อินพุต

โหลดข้อมูล

หลังจากสร้างสคริปต์ข้างต้นเราจะโหลดข้อมูลไปยังหน่วยความจำของ QlikView โดยใช้คำสั่ง Control+R. นี่คือตอนที่เราได้รับแจ้งข้อผิดพลาดที่ระบุว่ามีการวนซ้ำแบบวงกลมในตารางที่กำลังโหลด

แบบจำลองข้อมูล

ในการค้นหาสาเหตุที่แท้จริงของคำเตือนข้างต้นเราสามารถดูแบบจำลองข้อมูลโดยใช้คำสั่งเมนูสำหรับโปรแกรมดูตาราง - Control+T. หน้าจอต่อไปนี้ปรากฏขึ้นซึ่งแสดงการอ้างอิงแบบวงกลมอย่างชัดเจน ที่นี่การเข้าร่วมระหว่าง RegionCountry และ SalesRegion สามารถทำได้โดยตรงโดยใช้ฟิลด์Region. นอกจากนี้ยังสามารถทำได้โดยไปที่ตาราง ProductCountry ก่อนโดยใช้ฟิลด์Country แล้วแมป ProdcutID กับ Salesregion

การแก้ไขการอ้างอิงแบบวงกลม

การอ้างอิงแบบวงกลมข้างต้นสามารถแก้ไขได้โดยการเปลี่ยนชื่อคอลัมน์บางคอลัมน์ในชุดข้อมูลเพื่อให้ QlikView ไม่สร้างความสัมพันธ์ระหว่างตารางโดยอัตโนมัติโดยใช้ชื่อคอลัมน์ สำหรับสิ่งนี้เราจะเปลี่ยนชื่อคอลัมน์ประเทศใน RegionCountry เป็น SalesCountry ในชุดข้อมูล ProdcuCountry เราเปลี่ยนชื่อคอลัมน์ Country เป็น ProductCountry

แก้ไขโมเดลข้อมูล

แบบจำลองข้อมูลที่แก้ไขแล้วหลังจากเปลี่ยนชื่อคอลัมน์ด้านบนสามารถมองเห็นได้โดยใช้คำสั่ง Control+T. ตอนนี้เราจะเห็นว่าความสัมพันธ์ระหว่างตารางไม่ได้เป็นแบบวนซ้ำ

กด Control+R การโหลดข้อมูลซ้ำไม่ได้แจ้งเตือนเราอีกต่อไปและเราสามารถใช้ข้อมูลนี้เพื่อสร้างรายงานได้