הדרכות להעברה מ-Snowflake ל-BigQuery
במסמך הזה מפורטות דוגמאות מקיפות ומדריכים לדרכים השונות שבהן אפשר להגדיר צינור להעברה מ-Snowflake ל-BigQuery.
דוגמאות לצינורות העברה ב-Snowflake
אתם יכולים להעביר את הנתונים מ-Snowflake ל-BigQuery באמצעות שלושה תהליכים שונים: ELT, ETL או שימוש בכלים של שותפים.
חילוץ, טעינה וטרנספורמציה
אפשר להגדיר תהליך חילוץ, טעינה וטרנספורמציה (ELT) בשתי שיטות:
- שימוש בצינור להפקת נתונים מ-Snowflake וטעינת הנתונים ב-BigQuery
- שליפת נתונים מ-Snowflake באמצעות מוצרים אחרים Google Cloud .
שימוש בצינור עיבוד נתונים לחילוץ נתונים מ-Snowflake
כדי לחלץ נתונים מ-Snowflake ולטעון אותם ישירות ל-Cloud Storage, משתמשים בכלי snowflake2bq.
אחרי כן, תוכלו לטעון את הנתונים מ-Cloud Storage ל-BigQuery באמצעות אחד מהכלים הבאים:
- מחבר שירות העברת הנתונים ל-BigQuery ב-Cloud Storage
- הפקודה
LOADבאמצעות כלי שורת הפקודה של BigQuery - ספריות לקוח של BigQuery API
כלים אחרים לחילוץ נתונים מ-Snowflake
אפשר גם להשתמש בכלים הבאים כדי לחלץ נתונים מ-Snowflake:
- Dataflow
- Cloud Data Fusion
- Dataproc
- Apache Spark BigQuery connector
- מחבר Snowflake ל-Apache Spark
- Hadoop BigQuery connector
- מנהל ההתקן של JDBC מ-Snowflake ומ-Sqoop כדי לחלץ נתונים מ-Snowflake אל Cloud Storage:
כלים אחרים לטעינת נתונים ל-BigQuery
אפשר גם להשתמש בכלים הבאים כדי לטעון נתונים ל-BigQuery:
- Dataflow
- Cloud Data Fusion
- Dataproc
- Dataprep by Trifacta
חילוץ, טרנספורמציה וטעינה
אם רוצים לשנות את הנתונים לפני שטוענים אותם ל-BigQuery, אפשר להשתמש בכלים הבאים:
- Dataflow
- משכפלים את הקוד של תבנית JDBC ל-BigQuery ומשנים את התבנית כדי להוסיף טרנספורמציות של Apache Beam.
- 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.
משתמשים בהצהרות SQL של Snowflake כדי ליצור מפרט של פורמט קובץ עם שם.
create or replace file format NAMED_FILE_FORMAT type = 'PARQUET'
מחליפים את
NAMED_FILE_FORMATבשם של פורמט הקובץ. לדוגמה,my_parquet_unload_format.יוצרים שילוב באמצעות הפקודה
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/.
-
מאחזרים את חשבון השירות של 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 | | +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+
נותנים לחשבון השירות שמופיע בתור
STORAGE_GCP_SERVICE_ACCOUNTהרשאת קריאה וכתיבה לקטגוריה שצוינה בפקודה של שילוב האחסון. בדוגמה הזו, נותנים לחשבון השירותservice-account-id@גישת קריאה וכתיבה לקטגוריה<var>UNLOAD_BUCKET</var>.יוצרים שלב חיצוני של 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:
ב-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/.
-
מאחזרים את משתמש 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=
| | +---------------------------+---------------+================================================================================+------------------+ יוצרים תפקיד עם ההרשאה
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.נותנים למשתמש 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.