تجزیه و تحلیل سری زمانی در کاوشگر داده لاجورد

ساخت وبلاگ

Azure Data Explorer (ADX) مجموعه ای از داده های تله متری را از خدمات ابری یا دستگاه های IoT انجام می دهد. این داده ها را می توان برای بینش های مختلف مانند نظارت بر سلامت خدمات ، فرآیندهای تولید فیزیکی و روند استفاده تجزیه و تحلیل کرد. تجزیه و تحلیل در مجموعه زمانی از معیارهای منتخب انجام می شود تا یک انحراف در این الگوی در مقایسه با الگوی پایه معمولی آن پیدا شود. ADX حاوی پشتیبانی بومی برای ایجاد ، دستکاری و تجزیه و تحلیل سری های زمانی چندگانه است. در این مقاله ، بیاموزید که چگونه Azure Data Explorer برای ایجاد و تجزیه و تحلیل هزاران سری زمانی در ثانیه استفاده می شود و امکان راه حل های نظارت و گردش کار در زمان واقعی را فراهم می کند.

ایجاد سری زمانی

در این بخش ، ما مجموعه بزرگی از سری زمانی معمولی را به سادگی و بطور شهودی با استفاده از اپراتور سری Make ایجاد خواهیم کرد و در صورت لزوم مقادیر گمشده را پر می کنیم. اولین قدم در تجزیه و تحلیل سری زمانی ، تقسیم و تبدیل جدول اصلی Telemetry به مجموعه ای از سری های زمانی است. جدول معمولاً حاوی یک ستون Timestamp ، ابعاد متنی و معیارهای اختیاری است. ابعاد برای تقسیم داده ها استفاده می شود. هدف این است که در فواصل زمانی منظم هزاران سری زمانی برای هر پارتیشن ایجاد کنیم.

جدول ورودی DEMO_MAKE_SERIES1 شامل 600K سوابق ترافیک سرویس وب دلخواه است. از دستور زیر برای نمونه 10 سوابق استفاده کنید:

demo_make_series1 |10 گرفتن 

جدول حاصل شامل یک ستون Timestamp ، سه ستون ابعاد متنی و بدون معیارها است:

 

زمان سنج مرورگر اوسور کشور/منطقه
2016-08-25 09: 12: 35. 4020000 Chrome 51. 0 ویندوز 7 انگلستان
2016-08-25 09: 12: 41. 1120000 Chrome 52. 0 ویندوز 10
2016-08-25 09: 12: 46. 2300000 Chrome 52. 0 ویندوز 7 انگلستان
2016-08-25 09: 12: 46. 5100000 Chrome 52. 0 ویندوز 10 انگلستان
2016-08-25 09: 12: 46. 5570000 Chrome 52. 0 ویندوز 10 جمهوری لیتوانی
2016-08-25 09: 12: 47. 0470000 Chrome 52. 0 ویندوز 8. 1 هندوستان
2016-08-25 09: 12: 51. 3600000 Chrome 52. 0 ویندوز 10 انگلستان
2016-08-25 09: 12: 51. 6930000 Chrome 52. 0 ویندوز 7 هلند
2016-08-25 09: 12: 56. 4240000 Chrome 52. 0 ویندوز 10 انگلستان
2016-08-25 09: 13: 08. 7230000 Chrome 52. 0 ویندوز 10 هندوستان

از آنجا که هیچ معیاری وجود ندارد ، ما فقط می توانیم مجموعه ای از سری های زمانی را بسازیم که خود تعداد ترافیک را نشان می دهد ، که توسط سیستم عامل با استفاده از پرس و جو زیر تقسیم شده است:

اجازه دهید min_t = toscalar (demo_make_series1 | خلاصه حداقل (timestamp)) ؛اجازه دهید max_t = toscalar (demo_make_series1 | خلاصه حداکثر (timestamp)) ؛demo_make_series1 |Make-series num = count () پیش فرض = 0 در Timestamp از min_t تا max_t مرحله 1H توسط OSVER |TimeChart را ارائه دهید 
  • از اپراتور سری Make برای ایجاد مجموعه ای از سه سری زمانی استفاده کنید ، جایی که:
    • num = count (): سری زمانی از ترافیک
    • از min_t تا max_t مرحله 1H: سری زمانی در سطل های 1 ساعته در محدوده زمانی ایجاد می شود (قدیمی ترین و جدیدترین زمان بندی سوابق جدول)
    • پیش فرض = 0: روش پر کردن سطل های از دست رفته را برای ایجاد سری زمانی منظم مشخص کنید. از طرف دیگر از series_fill_const () ، series_fill_forward () ، series_fill_backward () و series_fill_linear () استفاده کنید
    • توسط OSVER: پارتیشن توسط سیستم عامل

    در جدول بالا ، ما سه پارتیشن داریم. ما می توانیم یک سری زمانی جداگانه ایجاد کنیم: ویندوز 10 (قرمز) ، 7 (آبی) و 8. 1 (سبز) برای هر نسخه سیستم عامل همانطور که در نمودار مشاهده می شود:

    Time series partition.

    توابع تجزیه و تحلیل سری زمانی

    در این بخش ، ما توابع پردازش سری معمولی را انجام خواهیم داد. پس از ایجاد مجموعه ای از سری زمانی ، Azure Data Explorer از لیست رو به رشد توابع برای پردازش و تجزیه و تحلیل آنها پشتیبانی می کند. برای اطلاعات بیشتر ، به تجزیه و تحلیل سری زمانی در Azure Data Explorer مراجعه کنید. ما چند کارکرد نماینده برای پردازش و تجزیه و تحلیل سری های زمانی را شرح خواهیم داد.

    تصفیه

    فیلتر کردن یک روش معمول در پردازش سیگنال است و برای کارهای پردازش سری زمانی مفید است (به عنوان مثال ، یک سیگنال پر سر و صدا را صاف کنید ، تشخیص را تغییر دهید).

    • دو عملکرد فیلتر عمومی وجود دارد:
      • Series_Fir (): استفاده از فیلتر FIR. برای محاسبه ساده میانگین متحرک و تمایز سری زمانی برای تشخیص تغییر استفاده می شود.
      • Series_iir (): با استفاده از فیلتر IIR. برای هموار سازی نمایی و جمع تجمعی استفاده می شود.
      اجازه دهید min_t = toscalar (demo_make_series1 | خلاصه حداقل (timestamp)) ؛اجازه دهید max_t = toscalar (demo_make_series1 | خلاصه حداکثر (timestamp)) ؛demo_make_series1 |Make-series num = count () پیش فرض = 0 در Timestamp از min_t تا max_t مرحله 1H توسط OSVER |گسترش ma_num = series_fir (شماره ، تکرار (1 ، 5) ، درست ، درست) |TimeChart را ارائه دهید 

      Time series filtering.

      تجزیه و تحلیل رگرسیون

      ADX برای برآورد روند سری زمانی ، از تجزیه و تحلیل رگرسیون خطی تقسیم شده پشتیبانی می کند.

      • از series_fit_line () استفاده کنید تا بهترین خط را در یک سری زمانی برای تشخیص روند عمومی قرار دهید.
      • برای تشخیص تغییرات روند ، نسبت به پایه ، که در نظارت بر سناریوها مفید هستند ، از series_fit_2lines () استفاده کنید.

      نمونه ای از توابع Series_Fit_line () و Series_Fit_2Lines () در یک پرس و جو سری زمانی:

      demo_series2 |EXTEND SERIES_FIT_2LINES (Y) ، SERIES_FIT_LINE (Y) |linechart را با (xcolumn = x) ارائه دهید 

      Time series regression.

      • آبی: سری زمانی اصلی
      • سبز: خط مناسب
      • قرمز: دو خط نصب شده

      عملکرد با دقت نقطه پرش (تغییر سطح) را تشخیص داد.

      تشخیص فصلی

      بسیاری از معیارها از الگوهای فصلی (دوره ای) پیروی می کنند. ترافیک کاربر خدمات ابری معمولاً حاوی الگوهای روزانه و هفتگی است که در اواسط روز کاری بالاترین و کمترین در شب و آخر هفته است. سنسورهای IoT در فواصل دوره ای اندازه گیری می کنند. اندازه گیری های فیزیکی مانند دما ، فشار یا رطوبت نیز ممکن است رفتار فصلی را نشان دهد.

      مثال زیر از تشخیص فصلی در ترافیک یک ماهه یک سرویس وب (سطل های 2 ساعته) استفاده می کند:

      demo_series3 |TimeChart را ارائه دهید 

      Time series seasonality.

      • برای تشخیص خودکار دوره های سری زمانی ، از series_periods_detect () استفاده کنید.
      • اگر می دانیم که یک متریک باید دارای دوره (های) مشخصی خاص باشد ، از series_periods_validate () استفاده کنید و می خواهیم تأیید کنیم که وجود دارند.

      اگر دوره های مشخصی خاص وجود نداشته باشد یک ناهنجاری است

      demo_series3 |پروژه (دوره ها ، نمرات) = series_periods_detect (شماره ، 0. ، 14d/2H ، 2) // برای تشخیص دوره های سری زمانی |دوره های MV-Expand ، نمرات |روزهای تمدید = 2H*TODOUBLE (دوره)/1d 
      دوره امتیازات روزها
      84 0. 820622786055595 7
      12 0. 764601405803502 1

      این عملکرد فصلی روزانه و هفتگی را تشخیص می دهد. نمرات روزانه کمتر از هفتگی است زیرا روزهای آخر هفته با روزهای هفته متفاوت است.

      توابع عناصر

      عملیات حسابی و منطقی را می توان در یک سری زمانی انجام داد. با استفاده از series_subtract () می توانیم یک سری زمانی باقیمانده را محاسبه کنیم ، یعنی تفاوت بین متریک خام اصلی و یک صاف ، و به دنبال ناهنجاری ها در سیگنال باقیمانده است:

      اجازه دهید min_t = toscalar (demo_make_series1 | خلاصه حداقل (timestamp)) ؛اجازه دهید max_t = toscalar (demo_make_series1 | خلاصه حداکثر (timestamp)) ؛demo_make_series1 |Make-series num = count () پیش فرض = 0 در Timestamp در MIN_T تا MAX_T مرحله 1H توسط OSVER |گسترش ma_num = series_fir (شماره ، تکرار (1 ، 5) ، درست ، درست) |Extend Bestual_NUM = Series_subtract (Num ، MA_NUM) // برای محاسبه سری زمانی باقیمانده |جایی که OSVER == "ویندوز 10" // فیلتر بر روی Win 10 برای تجسم نمودار تمیزتر |TimeChart را ارائه دهید 

      Time series operations.

      • آبی: سری زمانی اصلی
      • قرمز: سری زمانی صاف
      • سبز: سری زمانی باقیمانده

      گردش کار سری زمانی در مقیاس

      مثال زیر نشان می دهد که چگونه این توابع می توانند در مقیاس هزاران سری زمانی در ثانیه برای تشخیص ناهنجاری اجرا شوند. برای دیدن چند سوابق تله متری نمونه از متریک شمارش سرویس DB در طی چهار روز ، پرس و جو زیر را اجرا کنید:

      demo_many_series1 |4 
      زمان سنج محل حصار DB دگرگونی
      2016-09-11 21: 00: 00. 0000000 LOC 9 5117853934049630089 262 0
      2016-09-11 21: 00: 00. 0000000 LOC 9 5117853934049630089 241 0
      2016-09-11 21: 00: 00. 0000000 LOC 9 -865998331941149874 262 279862
      2016-09-11 21: 00: 00. 0000000 LOC 9 371921734563783410 255 0

      و آمار ساده:

      demo_many_series1 |خلاصه شماره = تعداد () ، min_t = min (timestamp) ، max_t = max (timestamp) 
      حدود min_t max_t
      2177472 2016-09-08 00: 00: 00. 0000000 2016-09-11 23: 00: 00. 0000000

      ساختن یک سری زمانی در سطل های 1 ساعته از متریک خوانده شده (کل چهار روز * 24 ساعت = 96 امتیاز) ، منجر به نوسان الگوی طبیعی می شود:

      let min_t = toscalar (demo_many_series1 | خلاصه حداقل (timestamp)) ؛اجازه دهید max_t = toscalar (demo_many_series1 | خلاصه حداکثر (timestamp)) ؛demo_many_series1 |Make-Series Reads = AVG (DataRead) در Timestamp از min_t تا max_t مرحله 1H |TimeChart را با (ymin = 0) ارائه دهید 

      Time series at scale.

      رفتار فوق گمراه کننده است ، زیرا سری زمانی عادی تک از هزاران مورد مختلف جمع شده است که ممکن است الگوهای غیر طبیعی داشته باشند. بنابراین ، ما در هر نمونه یک سری زمانی ایجاد می کنیم. نمونه ای توسط LOC (مکان) ، ANONOP (عملیات) و DB (دستگاه خاص) تعریف شده است.

      چند سری زمانی را می توانیم ایجاد کنیم؟

      demo_many_series1 |خلاصه توسط LOC ، OP ، DB |شمردن 
      شمردن
      18339

      اکنون ، ما در حال ایجاد مجموعه ای از سری زمانی 18339 از متریک Count Count هستیم. ما بند را به بیانیه سری Make اضافه می کنیم ، رگرسیون خطی را اعمال می کنیم و دو سری برتر را انتخاب می کنیم که مهمترین روند کاهش دهنده را داشتند:

      let min_t = toscalar (demo_many_series1 | خلاصه حداقل (timestamp)) ؛اجازه دهید max_t = toscalar (demo_many_series1 | خلاصه حداکثر (timestamp)) ؛demo_many_series1 |Make-Series Reads = AVG (DataRead) در Timestamp از min_t تا max_t مرحله 1H توسط LOC ، OP ، DB |گسترش (rsquare ، شیب) = series_fit_line (خواندن) |Top 2 توسط شیب ASC |TimeChart را با (عنوان = 'قطع ترافیک خدمات برای 2 مورد (از 18339)') 

      Time series top two.

      نمونه ها را نمایش دهید:

      let min_t = toscalar (demo_many_series1 | خلاصه حداقل (timestamp)) ؛اجازه دهید max_t = toscalar (demo_many_series1 | خلاصه حداکثر (timestamp)) ؛demo_many_series1 |Make-Series Reads = AVG (DataRead) در Timestamp از min_t تا max_t مرحله 1H توسط LOC ، OP ، DB |گسترش (rsquare ، شیب) = series_fit_line (خواندن) |Top 2 توسط شیب ASC |Project Loc ، OP ، DB ، شیب 
      محل Op DB شیب
      LOC 15 37 1151 -102743. 910227889
      LOC 13 37 1249 -86303. 2334644601

      در کمتر از دو دقیقه ، Azure Data Explorer نزدیک به 20،000 سری زمانی را مورد تجزیه و تحلیل قرار داد و دو سری زمانی غیر طبیعی را تشخیص داد که در آن تعداد خواندن ناگهان کاهش یافت.

      این قابلیت های پیشرفته همراه با عملکرد سریع Azure Data Explorer یک راه حل منحصر به فرد و قدرتمند برای تجزیه و تحلیل سری زمانی ارائه می دهد.

      مراحل بعدی

      • در مورد تشخیص ناهنجاری و پیش بینی سریال های زمانی در Azure Data Explorer اطلاعات کسب کنید.
      • در مورد قابلیت های یادگیری ماشین در Azure Data Explorer اطلاعات کسب کنید.
اخبار رمز ارزها...
ما را در سایت اخبار رمز ارزها دنبال می کنید

برچسب : نویسنده : منیژه سلیمی بازدید : <-PostHit-> تاريخ : چهارشنبه 15 شهريور 1402 ساعت: 16:24