ایجاد طرحواره BigQuery با مولد bigquery-schema PyPI آسان تر شد
هنگام وارد کردن داده ها به BigQuery، یک مرحله مهم، تعریف ساختار جدول – طرحواره آن است. این طرح را می توان به صورت خودکار شناسایی یا به صورت دستی تعریف کرد.
تشخیص خودکار با روش LoadJobConfig BigQuery (برای مجموعه داده های کوچکتر)
وقتی دادهها را از یک فایل CSV بارگیری میکنیم، از روش LoadJobConfig با پارامتر autodetect روی True استفاده میکنیم. این به واردکننده داده BigQuery (بار bq) میگوید که به 500 رکورد اول دادههای شما نگاه کند تا طرح آن را حدس بزند. این برای مجموعه دادههای کوچکتر به خوبی کار میکند، بهویژه اگر دادهها از یک منبع کاملاً تعریف شده مانند یک پایگاه داده از قبل موجود سرچشمه بگیرند.
تعریف دستی: خسته کننده برای داده های بزرگ و در حال تکامل
وقتی با دادههای استخراجشده از سرویسی مانند REST API سروکار داریم، که ممکن است هزاران رکورد داشته باشد، یا در جایی که رکوردهای قدیمیتر ممکن است دارای فیلدهای متفاوتی نسبت به موارد جدیدتر باشند، تشخیص خودکار کوتاهی میکند. در اینجا، تعریف دستی طرحواره ضروری می شود. روش سنتی ایجاد دستی یک فایل schema.json است.
مطمئناً، میتوانید دادههای JSON را مرور کنید، با این فرض که مهارتهای خواندنی مانند Josh2funny (کمدین نیجریهای را بررسی کنید)، و طرح واره را بر اساس آن تعریف کنید. اما آیا خوب نیست که رویکرد قابل اعتمادتری داشته باشیم؟
مولد طرحواره بزرگ PyPI
این بسته پایتون در هنگام تولید طرحواره های BigQuery یک نجات دهنده است. با داده های محدود شده با خط جدید کار می کند، خواه در قالب JSON، CSV، یا حتی فهرستی از فرهنگ لغت Python و اشیاء csv.DictReader باشد. برخلاف واردکننده داده BigQuery، این بسته تمام داده های شما را تجزیه و تحلیل می کند تا طرحواره ای دقیق تر و بدون خطا ایجاد کند. بعلاوه، از سردرگمی که اغلب با حالت تکراری BigQuery و نوع داده RECORD ایجاد می شود، در امان است.
نصب: شروع به کار
برای نصب bigquery-schema-generator در محیط مجازی خود، به سادگی اجرا کنید:pip3 install bigquery-schema-generator
استفاده
این بسته راه های مختلفی را برای ادغام آن در گردش کار شما ارائه می دهد:
- خط فرمان: میتوانید با اجرای اسکریپت پوسته موجود، فراخوانی ماژول پایتون یا استفاده از اسکریپت پایتون، مستقیماً از خط فرمان از آن استفاده کنید. اسناد PyPI تمام جزئیات این روش ها را ارائه می دهد.
- به عنوان کتابخانه: این روشی است که من از آن استفاده کردم همانطور که در کد زیر نشان داده شده است.
(پروژه ای که با این ابزار پیاده سازی کردم را بررسی کنید.)