[{"data":1,"prerenderedAt":1137},["ShallowReactive",2],{"navigation":3,"/dashboard/story-filters":203},[4,22,47,64,101,126,143,156,169,190],{"title":5,"path":6,"stem":7,"children":8,"page":21},"آشنایی و مبانی","/intro","01.intro",[9,13,17],{"title":10,"path":11,"stem":12},"معماری داده‌ها","/intro/architecture","01.intro/1.architecture",{"title":14,"path":15,"stem":16},"الگوهای پیشنهادی","/intro/best-practices","01.intro/2.best-practices",{"title":18,"path":19,"stem":20},"مقایسه ETL و ELT","/intro/etl-vs-elt","01.intro/3.etl-vs-elt",false,{"title":23,"path":24,"stem":25,"children":26,"page":21},"ساخت و مدیریت فضا","/space","02.space",[27,31,35,39,43],{"title":28,"path":29,"stem":30},"ساختار فضا و پروژه","/space/structure","02.space/1.structure",{"title":32,"path":33,"stem":34},"ذخیره در باکت اختصاصی","/space/dedicated-bucket","02.space/2.dedicated-bucket",{"title":36,"path":37,"stem":38},"آموزش ساخت فضا","/space/create-space","02.space/3.create-space",{"title":40,"path":41,"stem":42},"طرح فضا","/space/plan","02.space/4.plan",{"title":44,"path":45,"stem":46},"سرور MCP","/space/mcp-server","02.space/5.mcp-server",{"title":48,"path":49,"stem":50,"children":51,"page":21},"مدیریت کاربران","/user-management","03.user-management",[52,56,60],{"title":53,"path":54,"stem":55},"آشنایی با نقش‌ها","/user-management/roles","03.user-management/1.roles",{"title":57,"path":58,"stem":59},"اعطای دسترسی","/user-management/access","03.user-management/2.access",{"title":61,"path":62,"stem":63},"آموزش اعطای دسترسی","/user-management/manage-users","03.user-management/3.manage-users",{"title":65,"path":66,"stem":67,"children":68,"page":21},"ایجاد و مدیریت دیتاست","/dataset","04.dataset",[69,73,77,81,85,89,93,97],{"title":70,"path":71,"stem":72},"ایجاد دیتاست","/dataset/create-dataset","04.dataset/1.create-dataset",{"title":74,"path":75,"stem":76},"الگوهای نام‌گذاری","/dataset/naming-conventions","04.dataset/2.naming-conventions",{"title":78,"path":79,"stem":80},"تفاوت درج با ورژن و آپدیت","/dataset/write-modes","04.dataset/3.write-modes",{"title":82,"path":83,"stem":84},"انواع ستون و نوع مقدار","/dataset/column-types","04.dataset/4.column-types",{"title":86,"path":87,"stem":88},"متادیتا و ویژگی‌های ستون","/dataset/column-settings","04.dataset/5.column-settings",{"title":90,"path":91,"stem":92},"قوانین امنیتی جدول","/dataset/table-settings","04.dataset/6.table-settings",{"title":94,"path":95,"stem":96},"ویرایش اسکیما","/dataset/schema-evolution","04.dataset/7.schema-evolution",{"title":98,"path":99,"stem":100},"آموزش ایجاد جدول سفارشی","/dataset/create-custom-table","04.dataset/8.create-custom-table",{"title":102,"path":103,"stem":104,"children":105,"page":21},"لود داده","/data-load","05.data-load",[106,110,114,118,122],{"title":107,"path":108,"stem":109},"لندر گو (Lander Go)","/data-load/lander-go","05.data-load/1.lander-go",{"title":111,"path":112,"stem":113},"لود مستقیم (API)","/data-load/api-load","05.data-load/2.api-load",{"title":115,"path":116,"stem":117},"لود با تبدیل (Transform)","/data-load/transform-load","05.data-load/3.transform-load",{"title":119,"path":120,"stem":121},"یکتاسازی و مدیریت Late Data","/data-load/idempotency-and-late-data","05.data-load/4.idempotency-and-late-data",{"title":123,"path":124,"stem":125},"لاگ درخواست‌های رد شده","/data-load/dropped-requests","05.data-load/5.dropped-requests",{"title":127,"path":128,"stem":129,"children":130,"page":21},"داشبورد","/dashboard","06.dashboard",[131,135,139],{"title":132,"path":133,"stem":134},"ساختار و دسترسی","/dashboard/structure","06.dashboard/1.structure",{"title":136,"path":137,"stem":138},"فیلترهای استوری","/dashboard/story-filters","06.dashboard/2.story-filters",{"title":140,"path":141,"stem":142},"آموزش ساخت استوری","/dashboard/create-story","06.dashboard/3.create-story",{"title":144,"path":145,"stem":146,"children":147,"page":21},"کوئری","/query","07.query",[148,152],{"title":149,"path":150,"stem":151},"نکات نوشتن کوئری","/query/query-notes","07.query/1.query-notes",{"title":153,"path":154,"stem":155},"توابع اختصاصی داده‌لند","/query/dadeland-sql","07.query/2.dadeland-sql",{"title":157,"path":158,"stem":159,"children":160,"page":21},"فانل","/funnel","08.funnel",[161,165],{"title":162,"path":163,"stem":164},"آموزش ایجاد فانل","/funnel/create-funnel","08.funnel/1.create-funnel",{"title":166,"path":167,"stem":168},"شیوه کار فانل","/funnel/how-funnel-works","08.funnel/2.how-funnel-works",{"title":170,"path":171,"stem":172,"children":173,"page":21},"ماژول کلاینت","/client-module","09.client-module",[174,178,182,186],{"title":175,"path":176,"stem":177},"آشنایی با ماژول کلاینت","/client-module/intro","09.client-module/1.intro",{"title":179,"path":180,"stem":181},"تنظیمات ماژول","/client-module/settings","09.client-module/2.settings",{"title":183,"path":184,"stem":185},"جمع‌آوری داده (لندر وب)","/client-module/lander-web","09.client-module/3.lander-web",{"title":187,"path":188,"stem":189},"آموزش راه‌اندازی","/client-module/up-and-running","09.client-module/4.up-and-running",{"title":191,"path":192,"stem":193,"children":194,"page":21},"عملیات","/activation","10.activation",[195,199],{"title":196,"path":197,"stem":198},"توزیع داده (Reverse ETL)","/activation/reverse-etl","10.activation/1.reverse-etl",{"title":200,"path":201,"stem":202},"یکپارچه‌سازی‌های توزیع داده","/activation/integrations","10.activation/2.integrations",{"id":204,"title":136,"body":205,"description":1130,"extension":1131,"links":1132,"meta":1133,"navigation":1134,"path":137,"seo":1135,"stem":138,"__hash__":1136},"docs/06.dashboard/2.story-filters.md",{"type":206,"value":207,"toc":1123},"minimark",[208,217,220,225,231,262,361,470,515,822,905,907,911,914,934,936,940,947,1006,1015,1017,1021,1033,1053,1061,1063,1067,1070,1074,1077,1101,1119],[209,210,211,212,216],"p",{},"فیلترهای استوری در داده‌لند به صورت هوشمند عمل می‌کنند؛ با تعریف فیلتر در سطح ",[213,214,215],"strong",{},"استوری","، شروط مربوطه به صورت خودکار به تمامی ویجت‌های مرتبط تزریق می‌شوند و نیازی به مپینگ دستی متغیرها در کوئری ویجت‌ها نیست.",[218,219],"hr",{},[221,222,224],"h3",{"id":223},"فیلتر-هوشمند-smart-filter","فیلتر هوشمند (Smart Filter)",[209,226,227,228,230],{},"در ابزارهای سنتی BI (مانند Metabase)، پیاده‌سازی فیلتر نیازمند تعریف متغیرها در کوئری SQL هر ویجت و اتصال دستی آن‌ها در تنظیمات داشبورد است. در مقابل، داده‌لند از معماری ",[213,229,224],{}," بهره می‌برد:",[232,233,234,241],"ul",{},[235,236,237,240],"li",{},[213,238,239],{},"اتصال در سطح مدل داده:"," فیلتر استوری مستقیماً به جدول و ستون فیزیکی پایگاه داده (یا چندین جدول و ستون) متصل می‌شود.",[235,242,243,246,247,255,256,261],{},[213,244,245],{},"تزریق خودکار (Smart Injection):"," موتور تحلیلی داده‌لند وابستگی‌های فیزیکی کوئری را در بندهای ",[248,249,251],"span",{"dir":250},"ltr",[252,253,254],"code",{},"FROM"," و ",[248,257,258],{"dir":250},[252,259,260],{},"JOIN"," شناسایی کرده و شروط فیلتر را در زمان اجرا به صورت خودکار به کوئری ویجت تزریق می‌نماید.",[263,264,271,316],"collapsible",{":ui":265,"className":266,"close-text":269,"name":270,"open-text":269},"{\"trigger\": \"text-base\", \"triggerIcon\": \"size-5\"}",[267,268],"[&_button]:!text-base","[&_svg]:!size-5"," ","نحوه اعمال خودکار فیلتر هوشمند (مقایسه با متابیس)",[272,273,274,306],"code-group",{"dir":250},[275,276,284],"pre",{"className":277,"code":278,"filename":279,"highlights":280,"language":282,"meta":283,"style":283},"language-sql shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","SELECT * \nFROM orders \nWHERE create_time > {{date_filter}}\n","Metabase (SQL)",[281],3,"sql","",[252,285,286,293,299],{"__ignoreMap":283},[248,287,290],{"class":288,"line":289},"line",1,[248,291,292],{},"SELECT * \n",[248,294,296],{"class":288,"line":295},2,[248,297,298],{},"FROM orders \n",[248,300,303],{"class":301,"line":281},[288,302],"highlight",[248,304,305],{},"WHERE create_time > {{date_filter}}\n",[275,307,310],{"className":277,"code":308,"filename":309,"language":282,"meta":283,"style":283},"SELECT * FROM orders\n","Dadeland (Smart Filter)",[252,311,312],{"__ignoreMap":283},[248,313,314],{"class":288,"line":289},[248,315,308],{},[209,317,318,319,322,323,328,329,332,333,338,339,344,345,350,351,355,356,360],{},"در ",[213,320,321],{},"متابیس"," باید متغیر فیلتر (مانند ",[248,324,325],{"dir":250},[252,326,327],{},"{{date_filter}}",") در متن SQL درج شده و در داشبورد متصل گردد. در ",[213,330,331],{},"داده‌لند"," نیازی به دستکاری کوئری نیست؛ کافی است فیلتری از نوع ",[248,334,335],{"dir":250},[252,336,337],{},"DATETIME"," روی ستون ",[248,340,341],{"dir":250},[252,342,343],{},"create_time"," جدول ",[248,346,347],{"dir":250},[252,348,349],{},"orders"," در استوری تعریف شود تا شرط فیلتر در زمان اجرا به کوئری تزریق گردد. این سازوکار روی تمامی جداول حاضر در بندهای ",[248,352,353],{"dir":250},[252,354,254],{}," یا ",[248,357,358],{"dir":250},[252,359,260],{}," به یکسان اعمال می‌شود.",[263,362,365,396,416,464],{":ui":265,"className":363,"close-text":269,"name":364,"open-text":269},[267,268],"مستثنی کردن جدول از فیلتر هوشمند با استفاده از بک‌تیک",[366,367,368],"div",{"dir":250},[275,369,372],{"className":277,"code":370,"highlights":371,"language":282,"meta":283,"style":283},"SELECT \n    (SELECT COUNT(*) FROM `orders`) as total_all_time,\n    COUNT(*) as filtered_count\nFROM orders\n",[295],[252,373,374,379,385,390],{"__ignoreMap":283},[248,375,376],{"class":288,"line":289},[248,377,378],{},"SELECT \n",[248,380,382],{"class":381,"line":295},[288,302],[248,383,384],{},"    (SELECT COUNT(*) FROM `orders`) as total_all_time,\n",[248,386,387],{"class":288,"line":281},[248,388,389],{},"    COUNT(*) as filtered_count\n",[248,391,393],{"class":288,"line":392},4,[248,394,395],{},"FROM orders\n",[209,397,398,399,402,403,406,407,355,411,415],{},"قرار دادن نام هر جدول درون ",[213,400,401],{},"بک‌تیک"," (",[252,404,405],{},"`",") در بندهای ",[248,408,409],{"dir":250},[252,410,254],{},[248,412,413],{"dir":250},[252,414,260],{},"، آن ارجاع را از اعمال خودکار فیلتر هوشمند مستثنی (Exclude) می‌سازد:",[232,417,418,435,447],{},[235,419,420,423,424,428,429,434],{},[213,421,422],{},"مستثنی کردن کل ویجت:"," درج نام جدول با بک‌تیک در بند اصلی ",[248,425,426],{"dir":250},[252,427,254],{}," (مانند ",[248,430,431],{"dir":250},[252,432,433],{},"FROM `orders`",") موجب نمایش مقادیر کل و بدون فیلتر در ویجت می‌شود.",[235,436,437,440,441,446],{},[213,438,439],{},"مستثنی کردن جداول متصل‌شده (JOIN):"," با قرار دادن نام جدول جوین‌شده درون بک‌تیک (مانند ",[248,442,443],{"dir":250},[252,444,445],{},"LEFT JOIN `users` u ON ...",")، فیلترهای استوری روی آن جدول اعمال نمی‌گردند.",[235,448,449,452,453,458,459,463],{},[213,450,451],{},"فیلترپذیری گزینشی در زیرکوئری‌ها:"," ارجاع بدون بک‌تیک (مانند ",[248,454,455],{"dir":250},[252,456,457],{},"FROM orders",") فیلتر استوری را می‌پذیرد و ارجاع با بک‌تیک (مانند ",[248,460,461],{"dir":250},[252,462,433],{}," در زیرکوئری) ثابت و معاف از فیلتر باقی می‌ماند.",[465,466,467],"warning",{},[209,468,469],{},"استفاده از بک‌تیک دور نام جدول صرفاً برای معافیت عمدی از فیلتر استوری کاربرد دارد؛ درج تصادفی آن مانع از تزریق خودکار فیلترها می‌گردد.",[263,471,474,496,509],{":ui":265,"className":472,"close-text":269,"name":473,"open-text":269},[267,268],"اولویت فیلتر ثابت کوئری بر فیلتر هوشمند استوری",[366,475,476],{"dir":250},[275,477,480],{"className":277,"code":478,"highlights":479,"language":282,"meta":283,"style":283},"SELECT * \nFROM orders \nWHERE create_time > '2024-01-01'\n",[295],[252,481,482,486,491],{"__ignoreMap":283},[248,483,484],{"class":288,"line":289},[248,485,292],{},[248,487,489],{"class":488,"line":295},[288,302],[248,490,298],{},[248,492,493],{"class":288,"line":281},[248,494,495],{},"WHERE create_time > '2024-01-01'\n",[209,497,498,499,504,505,508],{},"اعمال شرط مستقیم در بند ",[248,500,501],{"dir":250},[252,502,503],{},"WHERE"," روی ستونی از یک جدول فیزیکی، به عنوان ",[213,506,507],{},"فیلتر ثابت"," تلقی می‌شود. در صورت تعریف فیلتر استوری روی همان ستون، فیلتر استوری روی این ویجت اثر نخواهد داشت؛ زیرا فیلتر ثابت داخل کوئری همواره اولویت بالاتری دارد.",[510,511,512],"note",{},[209,513,514],{},"پیشنهاد می‌شود از فیلترهای ثابت در کوئری پرهیز نموده و فیلترها را در سطح استوری تعریف نمایید تا کاربران نهایی امکان کاوش آزادانه داده‌ها را داشته باشند.",[263,516,519,528,655,658,782,785,819],{":ui":265,"className":517,"close-text":269,"name":518,"open-text":269},[267,268],"فیلترپذیری انتخابی ستون‌ها در کنار استفاده از بک‌تیک",[209,520,521,522,527],{},"جدول زیر نمونه‌ای از وضعیت آب‌وهوای روزانه شهرها در جدول فرضی ",[248,523,524],{"dir":250},[252,525,526],{},"fact_weather_daily"," را نمایش می‌دهد:",[529,530,531,574],"table",{},[532,533,534],"thead",{},[535,536,537,546,553,560,567],"tr",{},[538,539,541],"th",{"align":540},"left",[248,542,543],{"dir":250},[252,544,545],{},"fact_id",[538,547,548],{"align":540},[248,549,550],{"dir":250},[252,551,552],{},"stat_date",[538,554,555],{"align":540},[248,556,557],{"dir":250},[252,558,559],{},"min_temp",[538,561,562],{"align":540},[248,563,564],{"dir":250},[252,565,566],{},"max_temp",[538,568,569],{"align":540},[248,570,571],{"dir":250},[252,572,573],{},"condition",[575,576,577,595,611,626,641],"tbody",{},[535,578,579,583,586,589,592],{},[580,581,582],"td",{"align":540},"Sydney",[580,584,585],{"align":540},"2026-08-22",[580,587,588],{"align":540},"11",[580,590,591],{"align":540},"18",[580,593,594],{"align":540},"Clear",[535,596,597,600,602,605,608],{},[580,598,599],{"align":540},"Eindhoven",[580,601,585],{"align":540},[580,603,604],{"align":540},"12",[580,606,607],{"align":540},"16",[580,609,610],{"align":540},"Drizzle",[535,612,613,616,618,620,623],{},[580,614,615],{"align":540},"Zurich",[580,617,585],{"align":540},[580,619,591],{"align":540},[580,621,622],{"align":540},"24",[580,624,625],{"align":540},"Cloudy",[535,627,628,631,633,635,638],{},[580,629,630],{"align":540},"Paris",[580,632,585],{"align":540},[580,634,591],{"align":540},[580,636,637],{"align":540},"26",[580,639,640],{"align":540},"Thunderstorm",[535,642,643,646,648,650,653],{},[580,644,645],{"align":540},"Florence",[580,647,585],{"align":540},[580,649,591],{"align":540},[580,651,652],{"align":540},"25",[580,654,640],{"align":540},[209,656,657],{},"برای سنجش میانگین دمای هر شهر در یک وضعیت آب‌وهوایی خاص نسبت به میانگین جهانی در همان وضعیت، کوئری زیر نوشته می‌شود:",[366,659,660],{"dir":250},[275,661,666],{"className":277,"code":662,"highlights":663,"language":282,"meta":283,"style":283},"SELECT\n  main.fact_id AS city,\n  main.condition AS condition,\n  AVG((main.min_temp + main.max_temp) / 2.0) AS city_avg_temp,\n  (\n    SELECT\n      AVG((b.min_temp + b.max_temp) / 2.0)\n    FROM\n      `fact_weather_daily` b\n    WHERE\n      b.condition = main.condition\n  ) AS all_cities_avg_temp\nFROM\n  fact_weather_daily main\nGROUP BY\n  main.fact_id,\n  main.condition\nORDER BY\n  main.fact_id,\n  main.condition\n",[664,665],9,11,[252,667,668,673,678,683,688,694,700,706,712,718,724,730,736,742,748,754,760,766,772,777],{"__ignoreMap":283},[248,669,670],{"class":288,"line":289},[248,671,672],{},"SELECT\n",[248,674,675],{"class":288,"line":295},[248,676,677],{},"  main.fact_id AS city,\n",[248,679,680],{"class":288,"line":281},[248,681,682],{},"  main.condition AS condition,\n",[248,684,685],{"class":288,"line":392},[248,686,687],{},"  AVG((main.min_temp + main.max_temp) / 2.0) AS city_avg_temp,\n",[248,689,691],{"class":288,"line":690},5,[248,692,693],{},"  (\n",[248,695,697],{"class":288,"line":696},6,[248,698,699],{},"    SELECT\n",[248,701,703],{"class":288,"line":702},7,[248,704,705],{},"      AVG((b.min_temp + b.max_temp) / 2.0)\n",[248,707,709],{"class":288,"line":708},8,[248,710,711],{},"    FROM\n",[248,713,715],{"class":714,"line":664},[288,302],[248,716,717],{},"      `fact_weather_daily` b\n",[248,719,721],{"class":288,"line":720},10,[248,722,723],{},"    WHERE\n",[248,725,727],{"class":726,"line":665},[288,302],[248,728,729],{},"      b.condition = main.condition\n",[248,731,733],{"class":288,"line":732},12,[248,734,735],{},"  ) AS all_cities_avg_temp\n",[248,737,739],{"class":288,"line":738},13,[248,740,741],{},"FROM\n",[248,743,745],{"class":288,"line":744},14,[248,746,747],{},"  fact_weather_daily main\n",[248,749,751],{"class":288,"line":750},15,[248,752,753],{},"GROUP BY\n",[248,755,757],{"class":288,"line":756},16,[248,758,759],{},"  main.fact_id,\n",[248,761,763],{"class":288,"line":762},17,[248,764,765],{},"  main.condition\n",[248,767,769],{"class":288,"line":768},18,[248,770,771],{},"ORDER BY\n",[248,773,775],{"class":288,"line":774},19,[248,776,759],{},[248,778,780],{"class":288,"line":779},20,[248,781,765],{},[209,783,784],{},"تحلیل رفتار کوئری:",[232,786,787,796,805],{},[235,788,789,790,795],{},"جدول اصلی در بند ",[248,791,792],{"dir":250},[252,793,794],{},"FROM fact_weather_daily main"," بدون بک‌تیک است؛ بنابراین کلیه فیلترهای استوری (مانند شهر یا تاریخ) به آن تزریق می‌شوند.",[235,797,798,799,804],{},"در زیرکوئری، جدول داخل بک‌تیک (",[248,800,801],{"dir":250},[252,802,803],{},"`fact_weather_daily`",") قرار دارد تا از فیلترهای استوری معاف بماند و میانگین جهانی با تغییر شهر یا تاریخ تغییر نکند.",[235,806,807,808,813,814,818],{},"با وجود بک‌تیک، به دلیل شرط ",[248,809,810],{"dir":250},[252,811,812],{},"b.condition = main.condition","، فیلتر استوری روی ستون وضعیت آب‌وهوا (",[248,815,816],{"dir":250},[252,817,573],{},") از جدول اصلی به زیرکوئری منتقل می‌گردد.",[209,820,821],{},"به این ترتیب، امکان فیلترپذیری هدفمند یک ستون خاص در کنار معافیت سایر ستون‌ها فراهم می‌شود.",[263,823,826,847,875,878],{":ui":265,"className":824,"close-text":269,"name":825,"open-text":269},[267,268],"فیلترپذیری با JOIN",[209,827,828,829,834,835,840,841,846],{},"جهت فیلترپذیری داده‌های یک جدول وقایع (نظیر ",[248,830,831],{"dir":250},[252,832,833],{},"sales",") بر اساس ابعاد جدول وابسته (نظیر شهر یا کشور در ",[248,836,837],{"dir":250},[252,838,839],{},"users",")، اتصال جدول با ",[248,842,843],{"dir":250},[252,844,845],{},"LEFT JOIN"," بدون بک‌تیک کفایت می‌کند:",[366,848,849],{"dir":250},[275,850,853],{"className":277,"code":851,"highlights":852,"language":282,"meta":283,"style":283},"SELECT \n    SUM(s.amount) AS total_sales\nFROM sales s\nLEFT JOIN users u ON s.user_id = u.user_id\n",[392],[252,854,855,859,864,869],{"__ignoreMap":283},[248,856,857],{"class":288,"line":289},[248,858,378],{},[248,860,861],{"class":288,"line":295},[248,862,863],{},"    SUM(s.amount) AS total_sales\n",[248,865,866],{"class":288,"line":281},[248,867,868],{},"FROM sales s\n",[248,870,872],{"class":871,"line":392},[288,302],[248,873,874],{},"LEFT JOIN users u ON s.user_id = u.user_id\n",[209,876,877],{},"ویژگی‌های این شیوه اتصال شامل موارد زیر است:",[232,879,880,894,897],{},[235,881,882,883,355,888,893],{},"نیازی به فراخوانی ستون‌های جدول متصل‌شده در بندهای ",[248,884,885],{"dir":250},[252,886,887],{},"SELECT",[248,889,890],{"dir":250},[252,891,892],{},"GROUP BY"," وجود ندارد.",[235,895,896],{},"تمامی ستون‌های جدول متصل‌شده فیلترپذیر می‌شوند و فیلترهای استوری در زمان اجرا به کوئری تزریق می‌گردند.",[235,898,899,900,904],{},"استفاده از ",[248,901,902],{"dir":250},[252,903,845],{}," تضمین می‌کند که در صورت عدم انتخاب فیلتر توسط کاربر، هیچ رکوردی از جدول اصلی حذف نشود.",[218,906],{},[221,908,910],{"id":909},"مزایای-فیلتر-هوشمند","مزایای فیلتر هوشمند",[209,912,913],{},"بهره‌گیری از فیلترهای هوشمند در مقایسه با فیلترهای دستی سنتی مزایای زیر را فراهم می‌سازد:",[232,915,916,922,928],{},[235,917,918,921],{},[213,919,920],{},"کاهش زمان توسعه و نگهداری:"," افزودن فیلتر جدید بدون دستکاری کوئری ویجت‌ها و صرفاً در سطح استوری صورت می‌پذیرد.",[235,923,924,927],{},[213,925,926],{},"تمرکز بر تحلیل داده:"," زمان کارشناسان به جای تنظیم دستی مپینگ‌ها صرف کاوش و تفسیر داده‌ها می‌گردد.",[235,929,930,933],{},[213,931,932],{},"استقلال کاربران کسب‌وکار:"," تیم‌های غیرفنی می‌توانند فیلترهای استوری را به صورت خودکفا تعریف و مدیریت نمایند.",[218,935],{},[221,937,939],{"id":938},"محدودیت-فیلتر-هوشمند","محدودیت فیلتر هوشمند",[209,941,942,943,946],{},"فیلترهای هوشمند منحصراً بر روی ",[213,944,945],{},"جداول فیزیکی"," عمل می‌کنند. جداول مجازی و عبارات جدول متداول (CTE) تحت پوشش تزریق خودکار قرار نمی‌گیرند و فیلتر باید مستقیماً روی جداول فیزیکی اعمال شود:",[272,948,949,970],{"dir":250},[275,950,954],{"className":277,"code":951,"filename":952,"highlights":953,"language":282,"meta":283,"style":283},"SELECT \n  count(*) as total_orders\nFROM orders\n","Physical Table (Supported)",[281],[252,955,956,960,965],{"__ignoreMap":283},[248,957,958],{"class":288,"line":289},[248,959,378],{},[248,961,962],{"class":288,"line":295},[248,963,964],{},"  count(*) as total_orders\n",[248,966,968],{"class":967,"line":281},[288,302],[248,969,395],{},[275,971,975],{"className":277,"code":972,"filename":973,"highlights":974,"language":282,"meta":283,"style":283},"WITH virtual_orders AS (\n  SELECT * FROM orders\n)\nSELECT \n  count(*) as total_orders\nFROM virtual_orders\n","Virtual Table (Not Supported)",[696],[252,976,977,982,987,992,996,1000],{"__ignoreMap":283},[248,978,979],{"class":288,"line":289},[248,980,981],{},"WITH virtual_orders AS (\n",[248,983,984],{"class":288,"line":295},[248,985,986],{},"  SELECT * FROM orders\n",[248,988,989],{"class":288,"line":281},[248,990,991],{},")\n",[248,993,994],{"class":288,"line":392},[248,995,378],{},[248,997,998],{"class":288,"line":690},[248,999,964],{},[248,1001,1003],{"class":1002,"line":696},[288,302],[248,1004,1005],{},"FROM virtual_orders\n",[209,1007,1008,1009,1014],{},"در ساختار CTE، فیلتر استوری امکان تزریق مستقیم به جدول مجازی ",[248,1010,1011],{"dir":250},[252,1012,1013],{},"virtual_orders"," را ندارد؛ بنابراین توصیه می‌شود کوئری‌ها مستقیماً بر مبنای جداول فیزیکی پایگاه داده نگارش شوند.",[218,1016],{},[221,1018,1020],{"id":1019},"فیلترهای-ثابت-ویجت","فیلترهای ثابت ویجت",[209,1022,1023,1024,1028,1029,1032],{},"فیلترهای اعمال‌شده در مرحله ساخت ویجت (در شیت یا بند ",[248,1025,1026],{"dir":250},[252,1027,503],{}," کوئری)، به عنوان ",[213,1030,1031],{},"فیلترهای ثابت"," شناسایی شده و در تب مربوطه قابل مدیریت هستند:",[232,1034,1035,1047],{},[235,1036,1037,1040,1041,1046],{},[213,1038,1039],{},"در حالت فعال:"," این فیلترها همواره با شروط استوری (به صورت ",[248,1042,1043],{"dir":250},[252,1044,1045],{},"AND",") ترکیب می‌شوند. در صورت یکسان بودن ستون هدف، اولویت با فیلتر ثابت است و فیلتر استوری اعمال نمی‌گردد.",[235,1048,1049,1052],{},[213,1050,1051],{},"در حالت غیرفعال:"," این فیلترها از کوئری نهایی حذف می‌شوند و امکان آزمودن شرایط را بدون تغییر کوئری فراهم می‌سازند.",[510,1054,1055],{},[209,1056,1057,1058,1060],{},"جهت جلوگیری از خطای تفسیر داده‌ها توسط تحلیلگران، پیشنهاد می‌شود از فیلترهای ثابت صرف‌نظر کرده و شروط را در سطح ",[213,1059,215],{}," تعریف نمایید.",[218,1062],{},[221,1064,1066],{"id":1065},"فیلتر-پنهان-استوری","فیلتر پنهان استوری",[209,1068,1069],{},"فیلتر پنهان راهکاری برای اعمال شروط از پیش تعیین‌شده بر داده‌های استوری است، بدون آنکه کاربر نهایی متوجه اعمال آن شود. مدیران کالکشن می‌توانند این فیلتر را با مقداری معین روی استوری فعال نمایند:",[1071,1072],"prose-video",{"alt":1066,"src":1073},"/images/hidden-filter.mp4",[209,1075,1076],{},"ویژگی‌های فیلتر پنهان شامل موارد زیر است:",[232,1078,1079,1085,1095],{},[235,1080,1081,1084],{},[213,1082,1083],{},"مقدار اجباری:"," برخورداری از یک مقدار پیش‌فرض معین برای این فیلتر الزامی است.",[235,1086,1087,1090,1091,1094],{},[213,1088,1089],{},"عدم نمایش به کاربر:"," در نوار فیلترهای استوری نمایش داده نمی‌شود و کاربر دارای دسترسی ",[213,1092,1093],{},"مشاهده استوری"," امکان مشاهده، ویرایش یا حذف آن را ندارد.",[235,1096,1097,1100],{},[213,1098,1099],{},"تزریق خودکار:"," همانند سایر فیلترهای هوشمند به کلیه ویجت‌های مرتبط تزریق می‌گردد.",[209,1102,1103,1104,1107,1108,1111,1112,1115,1116,1118],{},"برای مثال، جهت ساخت استوری اختصاصی برای ",[213,1105,1106],{},"تیم تهران","، کافی است فیلتری روی ستون شهر با مقدار ",[213,1109,1110],{},"تهران"," تعریف شده و به حالت ",[213,1113,1114],{},"پنهان"," درآید؛ در این صورت کاربران دارای دسترسی ",[213,1117,1093],{}," بدون مشاهده ابزار فیلتر، صرفاً داده‌های تهران را دریافت می‌نمایند.",[1120,1121,1122],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":283,"searchDepth":289,"depth":295,"links":1124},[1125,1126,1127,1128,1129],{"id":223,"depth":281,"text":224},{"id":909,"depth":281,"text":910},{"id":938,"depth":281,"text":939},{"id":1019,"depth":281,"text":1020},{"id":1065,"depth":281,"text":1066},"در این صفحه با نحوه عملکرد فیلترهای هوشمند در استوری، مکانیسم‌های تزریق شرط و تفاوت آن با سایر ابزارها آشنا می‌شوید.","md",null,{},true,{"title":136,"description":1130},"pe72o8Vez8ciyhdCWTvMUzLRpjNkbwDyBn0oJaIpAoU",1793189280775]