הזרמת נתונים מ-Microsoft Dataverse

‫Datastream תומך בשכפול של אירועי שינוי ממופע של Microsoft Dataverse. ‫Dataverse היא פלטפורמת נתונים מבוססת-ענן שמאפשרת לאחסן ולנהל בצורה מאובטחת נתונים שמשמשים אפליקציות עסקיות.

בדף הזה מופיע מידע על:

  • מונחי המפתח שחשוב להבין כשמשכפלים מ-Dataverse.
  • התנהגות של Datastream כשמטפלים בנתונים שנשלפים מסביבת מקור של Dataverse.
  • הגרסאות של Dataverse שנתמכות על ידי Datastream.
  • מגבלות ידועות על השימוש ב-Dataverse כמקור.

מונחי מפתח

‫Dataverse פועל באמצעות המושגים הבאים:

  • טבלה, שנקראה בעבר ישות, דומה לטבלה במסדי נתונים יחסיים. ‫Dataverse כולל טבלאות רגילות כברירת מחדל, אבל אפשר גם ליצור טבלאות בהתאמה אישית.
  • עמודה, שנקראה בעבר שדה, היא מאפיין של טבלה, והיא דומה לעמודה במסדי נתונים יחסיים.
  • שורה היא רשומה ספציפית בטבלה, והיא דומה לשורה במסדי נתונים יחסיים.

התנהגות

התמיכה במקור Dataverse ב-Datastream מתבססת על Dataverse Web API, שמשתמש בפרוטוקול Open Data Protocol‏ (OData). הנתונים מועברים מזרם הנתונים על סמך השינויים במקור, בהתאם למרווח הזמן שהגדרתם.

כשמשכפלים נתונים ממקור Dataverse, מתרחשת הפעולה הבאה:

  • אינטראקציה עם API: Datastream מקיים אינטראקציה עם Dataverse Web API באמצעות בקשות RESTful. כתובת ה-URL של סביבת הבסיס היא https://ORGANIZATION_ID.crm.dynamics.com/api/data/v9.1/. נעשה שימוש בכותרות רגילות (Accept: application/json, ‏ OData-MaxVersion: 4.0,‏ OData-Version: 4.0).
  • אימות: Datastream מטפל באימות באמצעות OAuth 2.0 עם סוג ההרשאה client credentials (פרטי כניסה של לקוח). ‫Datastream מקבל אסימונים מ-Microsoft Identity Platform.
  • גילוי סכימות: הסכימות של Dataverse הן דינמיות. ‫Datastream מאתר שמות של אובייקטים וסכימות על ידי שליחת שאילתה לנקודת הקצה /EntityDefinitions.

    • שמות של אובייקטים: Datastream מאחזר שמות של אובייקטים על ידי שליחת בקשת GET לנתיב של קבוצת הישויות /EntityDefinitions עם המסנן $filter=TableType ne 'Virtual' and IsPrivate eq false והפרמטר $select=EntitySetName.
    • סכימת אובייקט: Datastream מאחזר את סכימת האובייקט לכל ישות על ידי שליחת בקשת GET לנתיב של קבוצת הישויות /EntityDefinitions עם הפרמטר $expand=Attributes($select=LogicalName,AttributeType,AttributeTypeName) והמסנן $filter=EntitySetName eq '[objectName]'.
  • שכפול נתונים:

    • ‫Datastream משכפל טבלאות רגילות ומותאמות אישית של Dataverse. היא לא כוללת שולחנות וירטואליים ושולחנות פרטיים.
    • מילוי היסטורי: אם מוגדר עבור מקור נתונים, Datastream משכפל את כל הנתונים ההיסטוריים של הטבלאות הכלולות. כדי לעשות זאת, שולחים בקשת GET ראשונית לקבוצת הישויות ומבצעים איטרציה בכל הדפים באמצעות המאפיין @odata.nextLink שמופיע בתשובות של ה-API. נעשה שימוש בכותרת Prefer: odata.maxpagesize=5000.
    • סנכרון מצטבר: Datastream משכפל אירועי הוספה ועדכון. הסנכרון מתבצע באמצעות חותמות זמן, ומסננים רשומות שבהן הערך בשדה modifiedon גדול מזמן הסנכרון האחרון ($filter=modifiedon gt [last_sync_timestamp]).‏ Datastream לא מתעד אירועי מחיקה.
  • מרווח זמן בין בדיקות: מקור הנתונים בודק אם יש שינויים בהתאם למרווח הזמן בין בדיקות שהגדרתם כשיוצרים את מקור הנתונים. המרווח משתקף במדד עדכניות הנתונים של הזרם.

כל האובייקטים המשוכפלים תומכים בסנכרון מצטבר באמצעות השדה modifiedon ובמילוי חוסרים מלא.

גרסאות

ב-Datastream נעשה שימוש בגרסה v9.1 של Dataverse Web API.

מגבלות ידועות

המגבלות הידועות על שימוש ב-Dataverse כמקור כוללות:

  • שיטת הסנכרון המצטבר, שמבוססת על חותמת הזמן modifiedon, לא מתעדת אירועי מחיקה.
  • התכונה המומלצת של Dataverse למעקב אחרי שינויים, שמשתמשת בקישורי דלתא (@odata.deltaLink), לא נתמכת ב-Datastream. הסיבה לכך היא שאין תמיכה בשמירה של כתובת ה-URL של קישור הדלתא שנדרשת לשליפות מצטברות עתידיות.
  • השכפול מוגבל לטבלאות רגילות ולטבלאות מותאמות אישית. אין תמיכה בטבלאות וירטואליות ופרטיות.
  • עדכון מדויק של השדה modifiedon בטבלאות המקוריות הוא קריטי כדי להבטיח שהסנכרון המצטבר יפעל כמצופה.
  • כדי לאחזר את התוויות של שדות Picklist, בקשות הנתונים צריכות לכלול את הכותרת Prefer: data.include-annotations="*", ולא רק את ערכי המספרים השלמים.

המאמרים הבאים