הדרכות להעברה מ-Snowflake ל-BigQuery

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

דוגמאות לצינורות העברה ב-Snowflake

אתם יכולים להעביר את הנתונים מ-Snowflake ל-BigQuery באמצעות שלושה תהליכים שונים: ELT,‏ ETL או שימוש בכלים של שותפים.

חילוץ, טעינה וטרנספורמציה

אפשר להגדיר תהליך חילוץ, טעינה וטרנספורמציה (ELT) בשתי שיטות:

  • שימוש בצינור להפקת נתונים מ-Snowflake וטעינת הנתונים ב-BigQuery
  • שליפת נתונים מ-Snowflake באמצעות מוצרים אחרים Google Cloud .

שימוש בצינור עיבוד נתונים לחילוץ נתונים מ-Snowflake

כדי לחלץ נתונים מ-Snowflake ולטעון אותם ישירות ל-Cloud Storage, משתמשים בכלי snowflake2bq.

אחרי כן, תוכלו לטעון את הנתונים מ-Cloud Storage ל-BigQuery באמצעות אחד מהכלים הבאים:

כלים אחרים לחילוץ נתונים מ-Snowflake

אפשר גם להשתמש בכלים הבאים כדי לחלץ נתונים מ-Snowflake:

כלים אחרים לטעינת נתונים ל-BigQuery

אפשר גם להשתמש בכלים הבאים כדי לטעון נתונים ל-BigQuery:

חילוץ, טרנספורמציה וטעינה

אם רוצים לשנות את הנתונים לפני שטוענים אותם ל-BigQuery, אפשר להשתמש בכלים הבאים:

  • Dataflow
  • Cloud Data Fusion
    • יוצרים צינור עיבוד נתונים לשימוש חוזר ומשנים את הנתונים באמצעות תוספים של CDAP.
  • Dataproc
    • אפשר לבצע טרנספורמציה של הנתונים באמצעות Spark SQL או קוד בהתאמה אישית בכל אחת משפות Spark הנתמכות, כמו Scala,‏ Java,‏ Python או R.

כלים של שותפים להעברה

יש כמה ספקים שמתמחים בהעברת EDW. רשימה של שותפים מרכזיים והפתרונות שהם מספקים זמינה במאמר BigQuery partners.

מדריך לייצוא מ-Snowflake

במדריך הבא מוצגת דוגמה לייצוא נתונים מ-Snowflake ל-BigQuery באמצעות הפקודה COPY INTO <location> של Snowflake. למידע מפורט על התהליך, כולל דוגמאות קוד, אפשר לעיין במאמר בנושא Google Cloud כלי שירותים מקצועיים להעברה מ-Snowflake ל-BigQuery

הכנה לייצוא

כדי להכין את נתוני Snowflake לייצוא, אפשר לחלץ את נתוני Snowflake לקטגוריה של Cloud Storage או של Amazon Simple Storage Service ‏ (Amazon S3) באמצעות השלבים הבאים:

Cloud Storage

במדריך הזה, הקובץ מוכן בפורמט PARQUET.

  1. משתמשים בהצהרות SQL של Snowflake כדי ליצור מפרט של פורמט קובץ עם שם.

    create or replace file format NAMED_FILE_FORMAT
        type = 'PARQUET'

    מחליפים את NAMED_FILE_FORMAT בשם של פורמט הקובץ. לדוגמה, my_parquet_unload_format.

  2. יוצרים שילוב באמצעות הפקודה CREATE STORAGE INTEGRATION.

    create storage integration INTEGRATION_NAME
        type = external_stage
        storage_provider = gcs
        enabled = true
        storage_allowed_locations = ('BUCKET_NAME')

    מחליפים את מה שכתוב בשדות הבאים:

    • INTEGRATION_NAME: שם לשילוב האחסון. לדוגמה, gcs_int.
    • BUCKET_NAME: הנתיב לקטגוריה של Cloud Storage. לדוגמה, gcs://mybucket/extract/.
  3. מאחזרים את חשבון השירות של Cloud Storage בשביל Snowflake באמצעות הפקודה DESCRIBE INTEGRATION.

    desc storage integration INTEGRATION_NAME;

    הפלט אמור להיראות כך:

    +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+
    | property                    | property_type | property_value                                                              | property_default |
    +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------|
    | ENABLED                     | Boolean       | true                                                                        | false            |
    | STORAGE_ALLOWED_LOCATIONS   | List          | gcs://mybucket1/path1/,gcs://mybucket2/path2/                               | []               |
    | STORAGE_BLOCKED_LOCATIONS   | List          | gcs://mybucket1/path1/sensitivedata/,gcs://mybucket2/path2/sensitivedata/   | []               |
    | STORAGE_GCP_SERVICE_ACCOUNT | String        | service-account-id@iam.gserviceaccount.com                 |                  |
    +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+
  4. נותנים לחשבון השירות שמופיע בתור STORAGE_GCP_SERVICE_ACCOUNT הרשאת קריאה וכתיבה לקטגוריה שצוינה בפקודה של שילוב האחסון. בדוגמה הזו, נותנים לחשבון השירות service-account-id@ גישת קריאה וכתיבה לקטגוריה <var>UNLOAD_BUCKET</var>.

  5. יוצרים שלב חיצוני של Cloud Storage שמפנה לשילוב שיצרתם קודם.

    create or replace stage STAGE_NAME
        url='UNLOAD_BUCKET'
        storage_integration = INTEGRATION_NAME
        file_format = NAMED_FILE_FORMAT;

    מחליפים את מה שכתוב בשדות הבאים:

    • STAGE_NAME: שם לאובייקט של שלב Cloud Storage. לדוגמה, my_ext_unload_stage.

Amazon S3

בדוגמה הבאה מוצגות הפעולות שצריך לבצע כדי להעביר נתונים מטבלה ב-Snowflake לקטגוריה ב-Amazon S3:

  1. ב-Snowflake, מגדירים אובייקט של שילוב אחסון כדי לאפשר ל-Snowflake לכתוב לקטגוריה של Amazon S3 שמפנה לשלב חיצוני של Cloud Storage.

    בשלב הזה מגדירים הרשאות גישה לקטגוריה של Amazon S3, יוצרים את תפקיד ה-IAM של Amazon Web Services‏ (AWS) ויוצרים שילוב אחסון ב-Snowflake באמצעות הפקודה CREATE STORAGE INTEGRATION:

    create storage integration INTEGRATION_NAME
    type = external_stage
    storage_provider = s3
    enabled = true
    storage_aws_role_arn = 'arn:aws:iam::001234567890:role/myrole'
    storage_allowed_locations = ('BUCKET_NAME')

    מחליפים את מה שכתוב בשדות הבאים:

    • INTEGRATION_NAME: שם לשילוב האחסון. לדוגמה, s3_int.
    • BUCKET_NAME: הנתיב לקטגוריית Amazon S3 שאליה רוצים לטעון קבצים. לדוגמה, s3://unload/files/.
  2. מאחזרים את משתמש AWS IAM באמצעות הפקודה DESCRIBE INTEGRATION.

    desc integration INTEGRATION_NAME;

    הפלט אמור להיראות כך:

    +---------------------------+---------------+================================================================================+------------------+
    | property                  | property_type | property_value                                                                 | property_default |
    +---------------------------+---------------+================================================================================+------------------|
    | ENABLED                   | Boolean       | true                                                                           | false            |
    | STORAGE_ALLOWED_LOCATIONS | List          | s3://mybucket1/mypath1/,s3://mybucket2/mypath2/                                | []               |
    | STORAGE_BLOCKED_LOCATIONS | List          | s3://mybucket1/mypath1/sensitivedata/,s3://mybucket2/mypath2/sensitivedata/    | []               |
    | STORAGE_AWS_IAM_USER_ARN  | String        | arn:aws:iam::123456789001:user/abc1-b-self1234                                 |                  |
    | STORAGE_AWS_ROLE_ARN      | String        | arn:aws:iam::001234567890:role/myrole                                          |                  |
    | STORAGE_AWS_EXTERNAL_ID   | String        | MYACCOUNT_SFCRole=                                                   |                  |
    +---------------------------+---------------+================================================================================+------------------+
  3. יוצרים תפקיד עם ההרשאה CREATE STAGE לסכימה וההרשאה USAGE לשילוב האחסון:

        CREATE role ROLE_NAME;  
        GRANT CREATE STAGE ON SCHEMA public TO ROLE ROLE_NAME;
        GRANT USAGE ON INTEGRATION s3_int TO ROLE ROLE_NAME;

    מחליפים את ROLE_NAME בשם של התפקיד. לדוגמה, myrole.

  4. נותנים למשתמש AWS IAM הרשאות גישה ל-bucket של Amazon S3, ויוצרים שלב חיצוני באמצעות הפקודה CREATE STAGE:

        USE SCHEMA mydb.public;
    
        create or replace stage STAGE_NAME
            url='BUCKET_NAME'
            storage_integration = INTEGRATION_NAMEt
            file_format = NAMED_FILE_FORMAT;

    מחליפים את מה שכתוב בשדות הבאים:

    • STAGE_NAME: שם לאובייקט של שלב Cloud Storage. לדוגמה, my_ext_unload_stage.

ייצוא נתונים מ-Snowflake

אחרי שמכינים את הנתונים, אפשר להעביר אותם אל Google Cloud. כדי להעתיק נתונים מטבלת מסד הנתונים של Snowflake לקטגוריה של Cloud Storage או Amazon S3, צריך להשתמש בפקודה COPY INTO ולציין את אובייקט השלב החיצוני, STAGE_NAME.

    copy into @STAGE_NAME/d1
    from TABLE_NAME;

מחליפים את TABLE_NAME בשם של טבלת מסד הנתונים של Snowflake.

כתוצאה מהפקודה הזו, נתוני הטבלה מועתקים לאובייקט שלב, שמקושר לקטגוריה של Cloud Storage או Amazon S3. הקובץ כולל את התחילית d1.

שיטות ייצוא אחרות

כדי להשתמש ב-Azure Blob Storage לייצוא הנתונים שלכם, פועלים לפי השלבים שמפורטים במאמר בנושא פריקת נתונים ל-Microsoft Azure. אחר כך, מעבירים את הקבצים המיוצאים ל-Cloud Storage באמצעות Storage Transfer Service.