פתרון בעיות ב-Dataform

במאמר הזה מוסבר איך לפתור בעיות ב-Dataform.

הגישה ל-BigQuery נדחתה

השגיאה הבאה מתרחשת כשמפעילים קריאה לצינור לפני שמעניקים ל-Dataform גישה ל-BigQuery:

Access Denied: Project PROJECT_ID: User does not have bigquery.jobs.create permission in project PROJECT_ID.

כדי לפתור את השגיאה, צריך להעניק ל-Dataform גישה ל-BigQuery.

טוקן גישה למאגר מרוחק נדחה

השגיאה הבאה מתרחשת כשאין לטוקן האימות שלכם למאגר צד שלישי מקושר גישה למאגר הזה:

The access token for remote repository REPOSITORY_NAME was rejected

כדי לפתור את השגיאה, צריך לבדוק את ההרשאות הנדרשות בספק Git ולעדכן בהתאם את אסימון האימות ב-Secret Manager. מידע נוסף על אימות מאגרי Git של צד שלישי ב-Dataform זמין במאמר חיבור למאגר Git של צד שלישי.

יש חריגה ממגבלת הבו-זמניות (concurrency) של שאילתות ב-BigQuery

השגיאה הבאה מתרחשת כשמספר השאילתות המקבילות שמופעלות ב-BigQuery חורג ממגבלת המקבילות של שאילתות ב-BigQuery:

Exceeded rate limits: too many concurrent queries for this project_and_region

כדי לפתור את השגיאה הזו, צריך לצמצם את מספר השאילתות המקבילות לפחות מ-250 באחת מהדרכים הבאות:

הוראות לפתרון השגיאה הזו ב-BigQuery זמינות במאמר פתרון בעיות שקשורות למכסות ולמגבלות.

חריגה מהמכסה ב-BigQuery

השגיאה הבאה מתרחשת כשמספר בקשות ה-API ש-Dataform שולח ל-BigQuery חורג מהמכסה של BigQuery:

Quota exceeded: Your user_method exceeded quota for concurrent api requests
per user per method.

כדי לפתור את השגיאה הזו, צריך לצמצם את מספר השאילתות המקבילות לפחות מ-250 באחת מהדרכים הבאות:

הוראות לפתרון השגיאה הזו ב-BigQuery זמינות במאמר פתרון בעיות שקשורות למכסות ולמגבלות.

שגיאות בהפעלת צינור עיבוד נתונים ב-BigQuery

השגיאות הבאות מתרחשות במהלך הביצוע של תהליך עבודה ב-BigQuery:

כדי לפתור את השגיאות האלה, אפשר לעיין במאמר בנושא הודעות שגיאה ב-BigQuery.

הקומפילציה נכשלת

השגיאות הבאות מתרחשות במהלך ההידור בגלל הגודל או מספר השאילתות המהודרות:

  • Compilation timed out. Reduce the complexity of your project to ensure it can compile within limits.
  • Compilation exceeded its allowed heap memory limits. Reduce the complexity of your project to ensure it can compile within limits.
  • Compilation exceeded its allowed ArrayBuffer or string memory limits. Reduce the complexity of your project to ensure it can compile within limits.

כדי לפתור את השגיאות האלה, צריך לבצע את השלבים הבאים:

  1. מעדכנים את Dataform core לגרסה העדכנית ביותר.
  2. בודקים את תהליך העבודה כדי לזהות נקודות של חוסר יעילות ולצמצם אותן.
  3. הקטנת הגודל של שאילתות SQL.
  4. צריך לצמצם את מספר הפעולות של JavaScript בזיכרון, למשל:

    config { config {type: "table" }}
    js {
        const tooBig = new Uint8Array(110_000_000);
    }
    SELECT ...
    
  5. פיצול המאגר

מידע נוסף על מגבלות משאבים של קומפילציה ב-Dataform זמין במאמר מכסות ומגבלות.

התנגשות בין מאפייני includeDependentAssertions

השגיאה הבאה מתרחשת במהלך ההידור כשהפרמטר includeDependentAssertions מוגדר לאותה פעולה עם ערכים שונים בקובץ אחד:

Conflicting "includeDependentAssertions" properties are not allowed. Dependency
dependencyName has different values set for this property.

כדי לפתור את השגיאה, צריך לערוך את הקובץ ולהסיר את החזרות המתנגשות של הפרמטר includeDependentAssertions.

מידע נוסף על השימוש בפרמטר includeDependentAssertions להגדרת הצהרות כתלויות זמין במאמר הגדרת ההצהרות של פעולה נבחרת כתלויות.

הצירוף של חשבונות שירות בין פרויקטים נחסם

השגיאה הבאה מתרחשת כשמנסים להשתמש בחשבון שירות בהתאמה אישית מפרויקט שונה ממאגר Dataform, והפעולה נחסמת בגלל מגבלה של מדיניות הארגון:

The caller does not have permission to act as service account: SERVICE_ACCOUNT_EMAIL

כדי לפתור את השגיאה, מבצעים את הפעולות הבאות:

  1. מזהים את הפרויקט שבו נמצא חשבון השירות המותאם אישית. Google Cloud
  2. בפרויקט הזה, משביתים את האילוץ iam.disableCrossProjectServiceAccountUsage של מדיניות הארגון. מידע נוסף זמין במאמר הפעלה של צירוף חשבונות שירות בין פרויקטים.
  3. מוודאים שלחשבון המשתמש של המתקשר יש את התפקיד 'משתמש בחשבון שירות' (roles/iam.serviceAccountUser) בחשבון השירות המותאם אישית.

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

@dataform/core שגיאות תלות

השגיאות הבאות מתרחשות במהלך ההידור אם התלות dataform-core ב-package.json לא עדכנית:

Failed to resolve @dataform/core
@dataform/core version should be X.X.X or newer

התלות @dataform/core נדרשת ב-package.json. כשמאתחלים את סביבת העבודה הראשונה במאגר, Dataform מאכלס אוטומטית את package.json בגרסה הנוכחית של @dataform/core. צריך לעדכן את @dataform/core לגרסה האחרונה כשהיא יוצאת.

כדי לפתור את השגיאות האלה, צריך לעדכן את @dataform/core לגרסה העדכנית.

ההרשאה של פרטי הכניסה של משתמש הקצה נדחתה

השגיאה הבאה מתרחשת כשמריצים את עומס העבודה באמצעות פרטי כניסה של משתמש לחשבון Google, אבל ל-Dataform אין את ההרשאות הנדרשות:

Dataform does not have the necessary permissions to run your workload using end user credentials. Error details: Account restricted: https://accounts.google.com/info/servicerestricted?...

השגיאה הזו יכולה להתרחש אם בארגון שלכם משתמשים בכללי בקרת גישה מבוססת-הקשר שמגבילים את הגישה לשירותים על סמך זהות המשתמש וההקשר. Google Cloud

כדי לפתור את השגיאה הזו, יכול להיות שתצטרכו לעדכן את ההגדרות של בקרת גישה מבוססת-הקשר כדי לאפשר ל-Dataform להשתמש בפרטי הכניסה של משתמשים בחשבון Google. כדי לעשות זאת, צריך להחריג את מזהה לקוח ה-OAuth של Dataform בהגדרות של רמת הגישה. פרטים על החרגת אפליקציות מופיעים במאמר בנושא הגדרת רמות גישה לאפליקציות נתמכות.

כדי לקבל את מזהה הלקוח ב-OAuth עבור Dataform, צריך לפנות אל Cloud Customer Care.

לא ניתן לטעון את dataform.json

השגיאה הבאה מתרחשת כשמפעילים סביבת עבודה של Dataform, אבל תהליך ההפעלה נכשל בהתקנת כל החבילות:

Uncaught Error: Failed to resolve dataform.json

כדי לפתור את השגיאה, פותחים את package.json בסביבת העבודה ולוחצים על Install packages (התקנת חבילות).

לא ניתן לטעון את workflow_settings.yaml

השגיאה הבאה מתרחשת כשמפעילים סביבת עבודה של Dataform, אבל תהליך ההפעלה נכשל בהתקנת כל החבילות:

Uncaught Error: Failed to resolve workflow_settings.yaml

כדי לפתור את השגיאה, פותחים את workflow_settings.yaml בסביבת העבודה ולוחצים על Install packages (התקנת חבילות).

טירגוט חבילות git+ לא אפשרי

השגיאה הבאה מתרחשת כשמגדירים חבילות ב-package.json עם יעדים שמופיע לפניהם הקידומת git+:

'git+' prefixed package targets are not currently supported. However,
in most cases they can be used via a '.tar.gz' suffixed target instead.

‫Dataform לא תומך ביעדי חבילה עם הקידומת git+.

כדי לפתור את השגיאה הזו, צריך ליצור tar.gz כתובת URL של החבילה ולעדכן את יעד החבילה ב-package.json. מידע נוסף על התקנת חבילות ב-Dataform זמין במאמר התקנת חבילה.

הזמן שהוקצב להתקנת החבילה פג

השגיאה הבאה מתרחשת כשהגודל של החבילות שמוגדרות ב-package.json חורג מהגודל המקסימלי של יחסי תלות ב-NPM:

API request error: Package installation timed out

כדי לפתור את השגיאה הזו, צריך להסיר חבילות מיותרות מ-package.json. חשוב לוודא שקובץ package.json לא מכיל את @dataform/cli, ושהגודל הכולל של יחסי התלות המוגדרים ב-NPM לא חורג מ-200MB.

אם הגדרות הגרסה מפנות אל Git commitishes, צריך לוודא שהקבצים package.json ביעדים שלהם תקינים.

ההרשאה לפעול כחשבון שירות נדחתה

השגיאה הבאה מתרחשת כשלחשבון הראשי שמבצע את הפעולה חסרה ההרשאה iam.serviceAccounts.actAs בחשבון השירות הרלוונטי:

Permission denied: Principal CALLER_EMAIL is missing 'iam.serviceAccounts.actAs' permission on service account SERVICE_ACCOUNT_EMAIL.

השגיאה הזו יכולה להתרחש במהלך הפעולות הבאות:

  • יצירה או עדכון של מאגר.
  • יצירה או עדכון של הגדרת תהליך עבודה.
  • יצירת הפעלה של תהליך עבודה.
  • עדכון של הגדרת הפצה.

כדי לפתור את השגיאה, צריך להעניק לחשבון המשתמש את התפקיד 'משתמש בחשבון שירות' (roles/iam.serviceAccountUser) בחשבון השירות הרלוונטי. למידע נוסף, ראו מתן תפקידי IAM נדרשים.

לא ניתן לגשת למאגר חבילות פרטי

השגיאה הבאה מתרחשת כשתוקף האימות של Dataform לחבילה פרטית פג:

Permission denied when fetching one or more npm packages. Please verify that
private registry authentication details are valid for each npm registry

כדי לפתור את השגיאה הזו, צריך לוודא שפרטי האימות של המאגר הפרטי תקינים לכל מאגר NPM. מידע נוסף זמין במאמר בנושא אימות חבילה פרטית.

אי אפשר להגיע למאגר המרוחק

השגיאה הבאה מתרחשת בגלל חוסר יציבות של Git או כשהחיבור למאגר של צד שלישי לא הוגדר בצורה נכונה:

Remote repository REPOSITORY_NAME could not be reached.

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

אי אפשר להגיע למאגר המרוחק: generic::invalid_argument

השגיאה הבאה מתרחשת בדף Release configurations details כשנתקלים מדי פעם בחיבור איטי, לא יציב או מנותק ל-GitHub, ל-GitLab או ל-Bitbucket:

generic::invalid_argument: Remote repository 'REMOTE_REPOSITORY_URL' could not be reached.

לא צריך לעשות שום דבר. אלא אם הבעיות ב-GitHub, ב-GitLab או ב-Bitbucket Cloud נמשכות, הגרסאות המתוזמנות הבאות יכולות להצליח.

מאגרי קוד לא מוצגים ב-Dataform

יכול להיות שחלק ממאגרי Dataform יופיעו בחיפושים במאגר משאבי ענן או בביקורות של הרשאות IAM, אבל הם לא יופיעו ב-Dataform במסוף Google Cloud .

כדי ללמוד איך לזהות את המקור של המאגרים האלה באמצעות תוויות, אפשר לעיין במאמר בנושא זיהוי מאגרים של נכסי BigQuery.

אי אפשר להגיע לסוד של מאגר מרוחק

השגיאה הבאה מתרחשת כשחשבון השירות המותאם אישית לא יכול לגשת לסוד ב-Secret Manager של מאגר צד שלישי מקושר:

Dataform's service account is unable to reach the configured secret.
Make sure the secret exists and is shared with your Dataform service account:
SERVICE_ACCOUNT_ID.

כדי לפתור את השגיאה, מבצעים את הפעולות הבאות:

  • מוודאים שלחשבון השירות המותאם אישית יש גישה לסוד.
  • מוציאים את הסוד מגבולות הגזרה לשירות של VPC-SC. בשלב הזה, Dataform לא תומך ב-VPC-SC.

חשבון השירות לא מופיע בתפריט הנפתח

כשמגדירים מאגר או הפעלה של תהליך עבודה, יכול להיות שבתפריט חשבון שירות לא יופיע חשבון שירות מותאם אישית קיים.

‫Dataform משתמש ב-Identity and Access Management API כדי להציג רשימה של חשבונות שירות. לשם כך נדרשת הרשאה iam.serviceAccounts.list ברמת הפרויקט.

כדי לפתור את הבעיה תוכלו לנסות אחד מהפתרונות הבאים:

  • לוחצים על הזנה ידנית ומזינים את המזהה של חשבון השירות.
  • צריך לבקש מהאדמין של הפרויקט להקצות לכם את התפקיד 'הצגת חשבונות שירות' (roles/iam.serviceAccountViewer) או תפקיד אחר שכולל את ההרשאה iam.serviceAccounts.list בפרויקט.

ארגומנט לא ידוע: tags

השגיאה הבאה מתרחשת כשגרסת Dataform CLI לא מזהה את הארגומנט tags:

Unknown argument: tags

כדי לפתור את השגיאה, מבצעים את הפעולות הבאות:

  • צריך לעדכן את הגרסה של CLI לגרסה 3.0.0 ואילך. חשוב תמיד לבדוק גרסאות חדשות של חבילות בסביבה שאינה סביבת ייצור לפני הפריסה בסביבת הייצור.
  • מומלץ להשתמש תמיד בגרסה העדכנית ביותר של חבילת הליבה של Dataform.
  • מציינים במפורש את גרסת החבילה ב-package.json, לדוגמה, 3.0.0. אל תשתמשו באפשרויות אחרות של dependencies package.json, למשל >version.