برنامهریزی، تحلیل و عملیات پلتفرم · فصل ۳ — Events، Performance و Capacity Advisor · 208
Analytics Events, Dimensions و Metric Regimes
داده و event دارد اما آنها را به مدل تصمیم، attention، experiment یا platform policy قابل توضیح تبدیل نمیکند. موضوع جاری: «Analytics Events, Dimensions و Metric Regimes». میتواند برای «Analytics Events, Dimensions و Metric Regimes» model، signal و guardrail لازم را در یک workflow محدود تعریف و ارزیابی کند.
خلاصهٔ درس
داده و event دارد اما آنها را به مدل تصمیم، attention، experiment یا platform policy قابل توضیح تبدیل نمیکند. موضوع جاری: «Analytics Events, Dimensions و Metric Regimes».
میتواند برای «Analytics Events, Dimensions و Metric Regimes» model، signal و guardrail لازم را در یک workflow محدود تعریف و ارزیابی کند.
خروجی این درس
میتواند برای «Analytics Events, Dimensions و Metric Regimes» model، signal و guardrail لازم را در یک workflow محدود تعریف و ارزیابی کند.
پیشنیازها
1. مسئله واقعی: نمودار سالم، معنای شکسته
یک داشبورد ششماهه Conversion را بدون وقفه نشان میدهد، اما در میانه دوره نام یک Event Parameter عوض شده، Denominator از Session به Active User تغییر کرده و یک Campaign Dimension پرکاردینال اضافه شده است. Chart هنوز خط پیوسته دارد، ولی Measurement Contract دیگر یکی نیست. این درس قبل از هر تفسیر، مرز Regimeها را ثبت میکند.
2. مرز این درس
مالک این درس Analytics Event & Metric-Regime Registry v1 است. Experiment Model درس قبل و Performance Lens/Provenance Result درس بعد را جذب نمیکنیم. اینجا نه علت تغییر KPI را ثابت میکنیم و نه تصمیم Production میدهیم؛ فقط مشخص میکنیم Event/Dimension/Metric semantics در چه بازهای معتبر و با چه Regimeهایی قابل مقایسهاند.
3. Event Contract فقط Event Name نیست
event_name همراه event_schema_version و Parameterهای مؤثر معنا پیدا میکند. Google Analytics Event Parameter را دادهٔ زمینهای برای Interaction میداند که میتواند به Dimension یا Metric خوراک بدهد. اگر Parameter rename یا type/meaning آن عوض شود، صرف ثابت ماندن Event Name continuity را ثابت نمیکند.
4. Parameter → Dimension/Metric را صریح ثبت کن
هر Parameter باید معلوم کند به کدام Dimension یا Metric میرسد و Scope آن چیست. Dimension یک Attribute برای گروهبندی/فیلتر است؛ Metric مقدار کمی است. اگر Parameter جمعآوری شود ولی Mapping آن به Report semantic روشن نباشد، Regime قابل ممیزی نیست و State نباید با حدس به success ارتقا پیدا کند.
5. Metric Label با Metric Contract فرق دارد
Label مثل conversion_rate کافی نیست. Registry باید metric_type، unit، numerator، denominator و aggregation را ثبت کند. نرخ Conversion بر Session با همان نرخ بر Active User دو Metric Regime متفاوت است—even اگر عنوان Chart عوض نشده باشد.
6. Unit تغییر کند، Regime را بررسی کن
تغییر ms به s ممکن است فقط تبدیل واحد باشد یا همراه با تغییر Instrument/aggregation رخ دهد. برای continuity باید Conversion Rule صریح، reversible و testable باشد. اگر فقط Label واحد عوض شود ولی Mapping مشخص نباشد، مقایسه مستقیم NOT_COMPARABLE یا REBASE_REQUIRED میشود.
7. Dimension Scope و Cardinality
اضافهکردن Dimension جدید میتواند Grain داده را عوض کند. Raw URL و Route Template یک Scope یکسان نیستند؛ Campaign ID پرکاردینال هم ممکن است aggregation و cost را تغییر دهد. dimension_scope و cardinality باید بخشی از Regime باشند، نه metadata تزئینی.
8. Filter Set بخشی از Measurement Regime است
دو Query با Metric یکسان اما Filter متفاوت یک Series واحد نیستند مگر Bridge صریح داشته باشند. حذف Bot Traffic، اضافهکردن Country Filter یا تغییر Include/Exclude Rule باید version boundary یا bridge rule ایجاد کند. Filter پنهان یعنی continuity پنهان و غیرقابل دفاع.
9. API Compatibility را با Semantic Compatibility اشتباه نگیر
Google Analytics Data API متادیتای Dimension/Metric و checkCompatibility دارد. این ابزار میگوید چه Fieldهایی میتوانند در یک Report Request کنار هم قرار بگیرند؛ اما ثابت نمیکند تعریف Metric امروز با تعریف همان Label در ماه قبل یکی است. Queryable بودن ≠ comparable بودن.
10. OpenTelemetry و ابهام معنایی
OpenTelemetry توصیه میکند نامها و Attributeها سازگار باشند، aggregation معنادار باشد، unit صریح و semantic ambiguity کم شود. این یک Reference خوب برای Measurement Discipline است، نه Policy محصول MAKNOW. Registry ما باید معنای محلی Product Metric را مستقل و versioned نگه دارد.
11. Effective Interval و Provenance
هر metric_regime_id باید effective_from و در صورت پایان effective_to داشته باشد. provenance_ref نشان میدهد تعریف از کدام Spec/Change Request/Instrument Config آمده است. اگر provenance حذف شود یا Metadata قدیمی باشد، Regime نمیتواند silently current فرض شود؛ State به UNKNOWN یا STALE_EVIDENCE میرود.
12. Compatibility Gate
COMPARABLE فقط وقتی صادر میشود که Event schema، Dimension scope، Metric type، Unit/ratio semantics، Aggregation، Filter set و Provenance همارز باشند. تفاوت شناختهشده با Mapping صریح → BRIDGED. Semantic break بدون Bridge → NOT_COMPARABLE. تغییر عمدهای که continuity را میشکند و baseline جدید میخواهد → REBASE_REQUIRED.
13. مثال کارشده: Conversion Trend
Regime R1 از purchase_complete با denominator=sessions استفاده میکند. R2 همان Chart label را دارد اما denominator=active_users و Dimension=campaign_id را اضافه کرده است. Data API ممکن است هر دو Field set را قابل Query بداند، ولی Registry continuity را رد میکند: denominator و grain عوض شدهاند. Decision=DO_NOT_COMPARE و سری جدید باید Rebase شود.
| case | regime_id | event_or_metric | denominator | metric_type | unit | aggregation | dimension_scope | cardinality | bridge | comparison_status | decision |
|---|---|---|---|---|---|---|---|---|---|---|---|
| baseline_same_regime | R1 | purchase_complete | sessions | ratio | 1 | sum/sum | campaign_group | LOW | R1 | COMPARABLE | PRESERVE_SERIES |
| denominator_changed | R2 | purchase_complete | active_users | ratio | 1 | sum/sum | campaign_group | LOW | none | NOT_COMPARABLE | DO_NOT_COMPARE |
| parameter_renamed_no_mapping | R3 | purchase_done | sessions | ratio | 1 | sum/sum | campaign_group | LOW | none | REBASE_REQUIRED | START_NEW_REGIME_REBASE |
| high_cardinality_dimension | R4 | purchase_complete | sessions | ratio | 1 | sum/sum | campaign_id | HIGH | none | REBASE_REQUIRED | START_NEW_REGIME_REBASE |
| compat_api_but_semantics_changed | R5 | purchase_complete | active_users | ratio | 1 | sum/sum | campaign_group | LOW | API_ONLY | NOT_COMPARABLE | DO_NOT_COMPARE |
| transfer_latency_bridge | LAT2 | http.server.request.duration | requests | histogram | s | distribution | route_template | MEDIUM | ms_to_s+route_map | BRIDGED | COMPARE_WITH_BRIDGE |
14. Negative Caseها
چهار Shortcut باید شکست بخورند: Parameter rename بدون mapping؛ denominator change با label ثابت؛ high-cardinality dimension بدون version boundary؛ و checkCompatibility=OK در حالی که Metric semantics عوض شده است. همچنین Metadata قدیمی یا provenance مفقود نباید با best guess به COMPARABLE تبدیل شود.
15. Transfer: API Latency از ms به s
در Transfer، latency unit از millisecond به second تبدیل میشود و route از raw URL به route-template تفکیک میشود. اگر conversion factor دقیق (ms × 0.001 = s) و dimension mapping رسمی/آزمونپذیر باشد، Registry میتواند BRIDGED صادر کند. بدون این bridge، baseline decision قابل کپی نیست و continuity باید شکسته شود.
ارزیابی
پاسخنامهی این درس در بستهی آموزش وجود ندارد؛ خودت جواب بده و صادقانه علامت بزن. «نیاز به مرور» درس را به صف تکرار میفرستد.
Q1 short_answer
Q2 diagnosis
Q3 application
Q4 transfer
ملاکهای ارزیابی (rubric)
Critical dimensions: lesson boundary; event schema/version; dimension scope/cardinality; metric type/unit/numerator/denominator/aggregation; filter set; effective interval; compatibility/bridge rule; provenance; typed non-success state; transfer recomputation. A passing response never treats a stable label or API queryability as semantic continuity.
منابع و تازگی
مطالعهٔ موارد (case studies)
فایلهای آزمایشگاه
PYTHONDONTWRITEBYTECODE=1 python run_checks.py را اجرا کنید. هدف تشخیص comparability، bridge و rebase از Evidence است؛ Answer Key در مسیر learner وجود ندارد.