در این بلاگ، نگاهی خواهیم داشت به اینکه چگونه می توانید تاریخ انقضای جداول آنالیتیکس در BigQuery را تغییر دهید. بعد از اتصال آنالیتیکس 4 به بیگ کوئری، شما به نسخه sandbox یا رایگان با امکانات محدود دسترسی خواهید داشت. تاریخ انقضای جداولی که در نسخه رایگان بیگ کوئری ایجاد می شوند، به طور پیش فرض حداکثر 60 روز بعد از ایجاد است. در نتیجه برای اینکه بتوانید اطلاعات خام آنالیتیکس خود را برای همیشه داشته باشید، باید حساب بیگ کوئری خود را به یک کارت اعتباری وصل کنید و از این محدودیتها رها شوید.
چگونه تاریخ انقضای جداول آنالیتیکس در بیگ کوئری را به بیش از 60 روز، مثلاً هرگز تغییر دهیم؟
برای انجام این کار باید وارد رابط کاربری بیگ کوئری شوید. شما میتوانید تنظیمات مربوط به هر دیتاست و یا جدول را تغییر دهید. اما اگر بخواهید این کار را برای هر دیتاست یا هر جدول به صورت جداگانه انجام دهید، قطعاً کار پردردسر و پرزحمتی خواهد بود. در این مقاله، من راهی برای ویرایش چند جداول به منظور تغییر تاریخ انقضای آنها به شما نشان خواهم داد.
تغییر تنظیمات مربوط به دیتاست در بیگ کوئری
همانطور که پیش از این گفته شد، بعد از ایجاد حساب کاربری در بیگ کوئری و اتصال آن به آنالیتیکس 4، شما به نسخه رایگان بیگ کوئری با چند محدودیت دسترسی خواهید داشت. یکی از مهمترین محدودیتها این است که اطلاعات ذخیره شده بعد از 60 روز پاک می شوند.
اگر تجربه کار با بیگ کوئری و استخراج اطلاعات از جداول آنالیتیکس را داشته باشید، حتما میدانید که اطلاعات آنالیتیکس برای هر روز در بیگ کوئری به صورت یک جدول ذخیره می شود. در نتیجه به عنوان مثال، جدولی که برای امروز در بیگ کوئری ایجاد می شود، 60 روز دیگر از بین خواهد رفت تا اطلاعات روز 61 در بیگ کوئری ذخیره شود.
اما شما میتوانید با ارتقای حساب بیگ کوئری خود، این محدودیت را به طور کامل از بین ببرید یا به مدت زمانی که در نظر دارید، ارتقا دهید.
برای تغییر این مدت زمان پیش فرض، میتوانید روی دیتاست آنالیتیکس 4 در بیگ کوئری کلیک کنید. در صفحهای که نمایش داده می شود، روی گزینه EDIT DETAILS کلیک کنید. در صفحه بعد، باید تیک گزینه Enable table expiration را بردارید.
وقتی این کار را انجام میدهید، هر جدولی که از این لحظه به بعد در این دیتاست داده ایجاد می شود، تاریخ انقضا نخواهد داشت.
اما آیا این تنظیمات برای جداولی که پیش از این ایجاد شده بودند هم اعمال خواهد شد؟
خیر. در این شرایط جداولی که از قبل ایجاد شده اند، همچنان تاریخ انقضا خواهند داشت. زیرا گزینه Default table expiration برای دیتاست فقط انقضای جدول را برای جداول آینده به روز می کند، نه برای جداول موجود. بنابراین ما به راهی برای بهروزرسانی انقضای جداول موجود نیاز داریم تا 60 روز بعد از تاریخ ایجادشان خود به خود از بین نروند.
تغییر تنظیمات مربوط به جدول در بیگ کوئری
برای تغییر تاریخ انقضای هر جدول در بیگ کوئری، باید تک به تک آنها را ویرایش کنید و گزینه مربوط به تاریخ انقضا در تنظیمات هریک را خاموش کنید. اما این کار، زمانی که 60 روز اطلاعات یا 60 جدول داشته باشید، قطعاً کاری طاقت فرسا و خسته کننده خواهد بود. باید راه آسانتری برای انجام این کار وجود داشته باشد، به خصوص اگر دهها جدول برای بهروزرسانی دارید.
یک روش جایگزین، اجرای کوئری ALTER TABLE در خود BigQuery است. با اجرای این کوئری میتوانید تاریخ انقضای جدول را به null یا درواقع هرگز تغییر دهید. توجه داشته باشید که استفاده از دستور ALTER در نسخه رایگان یا همان SANDBOX ممکن نیست و شما حتما باید حساب بیگ کوئری خود را به یک کارت اعتباری متصل کرده باشید.
ALTER TABLE
`my-websire-ga4.analytics_345406046.events_20230830`
SET
OPTIONS(expiration_timestamp=null)
در این کد، ما تاریخ انقضای یک جدول در تاریخ 20230830 را به روز خواهیم کرد. اما چطور میتوان این کار را برای تمام جداول به صورت همزمان انجام داد؟
برای انجام این کار باید از قطعه کد زیر استفاده کنید:
DECLARE list_of_tables ARRAY<STRING>;
DECLARE counter INT64 DEFAULT 0;
EXECUTE IMMEDIATE
‘SELECT ARRAY(SELECT distinct table_name FROM `my-websire-ga4.analytics_345406046.INFORMATION_SCHEMA.COLUMNS`)’
INTO list_of_tables;
LOOP
IF counter = ARRAY_LENGTH(list_of_tables) THEN
LEAVE;
END IF;
EXECUTE IMMEDIATE
CONCAT(‘ALTER TABLE `my-websire-ga4.analytics_345406046.’,list_of_tables[offset(counter)],’` SET OPTIONS(expiration_timestamp=null)’);
SET counter = counter + 1;
END LOOP;
نکات مهم در رابطه با این کد:
- قبل از اجرای کد، باید آی دی پروژه و دیتاست را در خطوط 5 و 14 به روز کنید.
- در خطوط 4 تا 6، تمام جداول موجود در دیتاست را در آرایهای به نام list_of_tables قرار میدهیم.
- برای دسترسی به هریک از مقداری موجود در آرایه، از یک شمارنده استفاده میکنیم.
- در خطوط 8 تا 17 یک حلقه را اجرا می کنیم که هریک از جداول در آرایه را انتخاب کرده و دستور ALTER TABLE را برای هر کدام اجرا می کند.
- در نهایت، شمارنده با هر تکرار، یکی افزایش می یابد و به محض اینکه شمارنده به انتهای آرایه رسید، مأموریت حلقه به پایان میرسد.
هنگامی که این کوئری را اجرا می کنید، لیستی از مراحل پردازش را میبینید، زیرا هر تکرار در حلقه فرایند BigQuery خود را اجرا می کند. بنابراین اگر جداول زیادی برای بهروزرسانی دارید، ممکن است کمی طول بکشد. بعد از بهپایانرسیدن اجرای این کوئری، خواهید دید که تاریخ انقضای هریک از جداول به صورت داینامیک یا پویا به Never تغییر پیدا کرده است.