התחברות

התחברות
x
או
x
הרשמה
x

או

קליק אחד ואתם מחוברים. מהיר .קל .מאובטח.

מעניין? שתפו דף זה באמצעות הטלפון הנייד

מאמרים

מגמות של ביג דאטה בעולם הביטוח
CA Technologies
SSIS - Buffer Size Optimization
קטגוריה ראשית
בדיקות BI ו-DWH לעומת הבדיקות בתחומים אחרים
קטגוריה ראשית
איסוף דרישות לפרויקטי BI
קטגוריה ראשית
כח המידע במיקוד
קטגוריה ראשית
0

הדף שלנו בפייסבוק

ברוך הבא, אורח
שם משתמש: סיסמא: זכור אותי

דיון: הדרך הנכונה והמהירה ביותר לבצע UPSERT?

הדרך הנכונה והמהירה ביותר לבצע UPSERT? 9 years 8 months ago #5929

  • eliazu
  • eliazu's Avatar
  • Offline
  • Fresh Boarder
  • הודעות: 12
  • קרמה: 0
היי אור וכל חברי הפורום.

ברצוני לדעת מהי הדרך הטובה ביותר לבצע UPSERT
(INSERT OR UPDATE).

אתאר את המצב הנוכחי:
לדוגמא, טבלת עובדים:
ברגע שמגיע עובד חדש הוא נוצר בטבלה.
אם יש עידכון ברשומה לגבי העובד (למשל, מצב משפחתי) יתבצע UPDATE.

את ההבחנה האם צריך לבצע UPDATE או INSERT אני מבצע באמצעות
dynamic lookup בו הגדרתי:
1. sequence-id עבור הרשומות החדשות
2. UPDATE else insert & INSERT else update בהגדרות שלו.
3. מוציא את ה newLookupRow אל אובייקט ה update strategy.

הגדרות ה update strategy:
מקבל את כל רשומות הטבלה עם ה newLookupRow.
בהגדרות שלו ההגדרה היא
decode(newLookupRow
1, dd_insert,
2, dd_update,
dd_reject)
מלבד זאת הורדתי את ה v מ transfer rejected rows.

הגדרות ה target ב workflow manager:
insert + update as update.
מלבד זאת הגדרתי כמובן data driven.

האם זוהי הדרך הכי טובה לעשות UPSERT (עם יצירת generated key עבורו אני זקוק ל dynamic lookup)?
כמו כן, ב logs של ה session אני מקבל המון errors של dd_rejected, עבור הרשומות שקיבלו 0 ב newLookuprow. כיצד אני מבטל את ההודעות האלו ב log?

תודה רבה!
אלירן אזולאי.
הנהלת האתר ביטלה גישת כתיבה ציבורית.

תגובה:הדרך הנכונה והמהירה ביותר לבצע UPSERT? 9 years 8 months ago #5933

  • Or Pelach
  • Or Pelach's Avatar
  • Offline
  • Moderator
  • הודעות: 134
  • קרמה: -1
הי אלירן,
לדעתי שימוש ב-dynamic lookup בצורך שתיארת הוא מיותר.
אפשר בעזרת LKP רגיל בקלות לאתר רשומות שהשתנו ולעדכן אותן או להוסיף רשומות חדשות.
זה גם מפשט את התהליך וגם מאיץ את הביצועים.

כאשר אתה מקבל במקור מס' רשומות עבור אותו KEY
ויש חשיבות לעדכון או הוספת רשומה על פי לוגיקה
לדוגמה:
לנתוני פניות ב-Help Desk יש חשיבות לבדוק האם סטטוס עודכן ל"סגור" אזי יש להוסיף רשומה , אחרת לעדכן אותה.
במקרה כזה כן יש הצדקה ל- dynamic lookup(למרות שגם זה ניתן לפתור עם Expression פשוט)

לגבי rejected rows שנכנסות לקובץ לוג - תוכל לשים Router כדי לפלטר אותן.

בברכה,
אור
הנהלת האתר ביטלה גישת כתיבה ציבורית.

תגובה:הדרך הנכונה והמהירה ביותר לבצע UPSERT? 9 years 8 months ago #5934

  • eliazu
  • eliazu's Avatar
  • Offline
  • Fresh Boarder
  • הודעות: 12
  • קרמה: 0
היי אור,

בקשר ל ROUTER - רעיון מצוין, אבצע זאת.

טבלת היעד היא בעלת כ 20 שדות.
כיצד ניתן בעזרת lookup שהוא לא dynamic לדעת האם צריך לבצע update או insert בקלות?
הפורט newLookupRow בו אני משתמש זמין רק בתצורת dynamic lookup, לא?
(אני מצליח לחשוב איך ניתן לעשות זאת ב EXP, אך זה נראה לי מאוד מסובך. (אצטרך להגדיר את newLookupRow בעצמי באמצעות מעבר על תנאי האם השתנה משהו בין כל פורטי הכניסה) .האם אני מפספס משהו?

ולגבי sequence-id, שמוצא את ה max Key ומוסיף 1 עבור רשומות חדשות,
גם הוא זמין רק ב dynamic. כיצד ניתן ליישם אותו אחרת?
הנהלת האתר ביטלה גישת כתיבה ציבורית.

תגובה:הדרך הנכונה והמהירה ביותר לבצע UPSERT? 9 years 8 months ago #5935

  • Or Pelach
  • Or Pelach's Avatar
  • Offline
  • Moderator
  • הודעות: 134
  • קרמה: -1
ב-LKP רגיל - אם רשומה לא קיימת תוסיף אותה אחרת, ב-Expression תוכל לבדוק האם שדה X,Y,Z השתנו
אם כן -עדכן.
באותו-Expression תוכל לקדם את ה-sequence-id עבור כל רשומה חדשה
הנהלת האתר ביטלה גישת כתיבה ציבורית.

תגובה:הדרך הנכונה והמהירה ביותר לבצע UPSERT? 9 years 8 months ago #5941

  • eliazu
  • eliazu's Avatar
  • Offline
  • Fresh Boarder
  • הודעות: 12
  • קרמה: 0
היי אור,
אני אנסה את זה.

תודה רבה
אלירן
הנהלת האתר ביטלה גישת כתיבה ציבורית.
מנהלים: Laromme Barr
זמן יצירת העמוד: 0.354 שניות

Microsoft

Oracle

IBM

Informatica

Sap

SAS

Qlikview

Cloudera

Machine Learning