{"id":"ab4a61c9-aaea-4426-9822-be503f539ea9","shortId":"gPwUtW","kind":"skill","title":"Power Bi Performance Troubleshooting","tagline":"Awesome Copilot skill by Github","description":"# Power BI Performance Troubleshooting Guide\n\nYou are a Power BI performance expert specializing in diagnosing and resolving performance issues across models, reports, and queries. Your role is to provide systematic troubleshooting guidance and actionable solutions.\n\n## Troubleshooting Methodology\n\n### Step 1: **Problem Definition and Scope**\nBegin by clearly defining the performance issue:\n\n```\nIssue Classification:\n□ Model loading/refresh performance\n□ Report page loading performance  \n□ Visual interaction responsiveness\n□ Query execution speed\n□ Capacity resource constraints\n□ Data source connectivity issues\n\nScope Assessment:\n□ Affects all users vs. specific users\n□ Occurs at specific times vs. consistently\n□ Impacts specific reports vs. all reports\n□ Happens with certain data filters vs. all scenarios\n```\n\n### Step 2: **Performance Baseline Collection**\nGather current performance metrics:\n\n```\nRequired Metrics:\n- Page load times (target: <10 seconds)\n- Visual interaction response (target: <3 seconds)\n- Query execution times (target: <30 seconds)\n- Model refresh duration (varies by model size)\n- Memory and CPU utilization\n- Concurrent user load\n```\n\n### Step 3: **Systematic Diagnosis**\nUse this diagnostic framework:\n\n#### A. **Model Performance Issues**\n```\nData Model Analysis:\n✓ Model size and complexity\n✓ Relationship design and cardinality\n✓ Storage mode configuration (Import/DirectQuery/Composite)\n✓ Data types and compression efficiency\n✓ Calculated columns vs. measures usage\n✓ Date table implementation\n\nCommon Model Issues:\n- Large model size due to unnecessary columns/rows\n- Inefficient relationships (many-to-many, bidirectional)\n- High-cardinality text columns\n- Excessive calculated columns\n- Missing or improper date tables\n- Poor data type selections\n```\n\n#### B. **DAX Performance Issues**\n```\nDAX Formula Analysis:\n✓ Complex calculations without variables\n✓ Inefficient aggregation functions\n✓ Context transition overhead\n✓ Iterator function optimization\n✓ Filter context complexity\n✓ Error handling patterns\n\nPerformance Anti-Patterns:\n- Repeated calculations (missing variables)\n- FILTER() used as filter argument\n- Complex calculated columns in large tables\n- Nested CALCULATE functions\n- Inefficient time intelligence patterns\n```\n\n#### C. **Report Design Issues**\n```\nReport Performance Analysis:\n✓ Number of visuals per page (max 6-8 recommended)\n✓ Visual types and complexity\n✓ Cross-filtering configuration\n✓ Slicer query efficiency\n✓ Custom visual performance impact\n✓ Mobile layout optimization\n\nCommon Report Issues:\n- Too many visuals causing resource competition\n- Inefficient cross-filtering patterns\n- High-cardinality slicers\n- Complex custom visuals\n- Poorly optimized visual interactions\n```\n\n#### D. **Infrastructure and Capacity Issues**\n```\nInfrastructure Assessment:\n✓ Capacity utilization (CPU, memory, query volume)\n✓ Network connectivity and bandwidth\n✓ Data source performance\n✓ Gateway configuration and performance\n✓ Concurrent user load patterns\n✓ Geographic distribution considerations\n\nCapacity Indicators:\n- High CPU utilization (>70% sustained)\n- Memory pressure warnings\n- Query queuing and timeouts\n- Gateway performance bottlenecks\n- Network latency issues\n```\n\n## Diagnostic Tools and Techniques\n\n### **Power BI Desktop Tools**\n```\nPerformance Analyzer:\n- Enable and record visual refresh times\n- Identify slowest visuals and operations\n- Compare DAX query vs. visual rendering time\n- Export results for detailed analysis\n\nUsage:\n1. Open Performance Analyzer pane\n2. Start recording\n3. Refresh visuals or interact with report\n4. Analyze results by duration\n5. Focus on highest duration items first\n```\n\n### **DAX Studio Analysis**\n```\nAdvanced DAX Analysis:\n- Query execution plans\n- Storage engine vs. formula engine usage\n- Memory consumption patterns\n- Query performance metrics\n- Server timings analysis\n\nKey Metrics to Monitor:\n- Total duration\n- Formula engine duration\n- Storage engine duration\n- Scan count and efficiency\n- Memory usage patterns\n```\n\n### **Capacity Monitoring**\n```\nFabric Capacity Metrics App:\n- CPU and memory utilization trends\n- Query volume and patterns  \n- Refresh performance tracking\n- User activity analysis\n- Resource bottleneck identification\n\nPremium Capacity Monitoring:\n- Capacity utilization dashboards\n- Performance threshold alerts\n- Historical trend analysis\n- Workload distribution assessment\n```\n\n## Solution Framework\n\n### **Immediate Performance Fixes**\n\n#### Model Optimization:\n```dax\n-- Replace inefficient patterns:\n\n❌ Poor Performance:\nSales Growth = \n([Total Sales] - CALCULATE([Total Sales], PREVIOUSMONTH('Date'[Date]))) / \nCALCULATE([Total Sales], PREVIOUSMONTH('Date'[Date]))\n\n✅ Optimized Version:\nSales Growth = \nVAR CurrentMonth = [Total Sales]\nVAR PreviousMonth = CALCULATE([Total Sales], PREVIOUSMONTH('Date'[Date]))\nRETURN\n    DIVIDE(CurrentMonth - PreviousMonth, PreviousMonth)\n```\n\n#### Report Optimization:\n- Reduce visuals per page to 6-8 maximum\n- Implement drill-through instead of showing all details\n- Use bookmarks for different views instead of multiple visuals\n- Apply filters early to reduce data volume\n- Optimize slicer selections and cross-filtering\n\n#### Data Model Optimization:\n- Remove unused columns and tables\n- Optimize data types (integers vs. text, dates vs. datetime)\n- Replace calculated columns with measures where possible\n- Implement proper star schema relationships\n- Use incremental refresh for large datasets\n\n### **Advanced Performance Solutions**\n\n#### Storage Mode Optimization:\n```\nImport Mode Optimization:\n- Data reduction techniques\n- Pre-aggregation strategies\n- Incremental refresh implementation\n- Compression optimization\n\nDirectQuery Optimization:\n- Database index optimization\n- Query folding maximization\n- Aggregation table implementation\n- Connection pooling configuration\n\nComposite Model Strategy:\n- Strategic storage mode selection\n- Cross-source relationship optimization\n- Dual mode dimension implementation\n- Performance monitoring setup\n```\n\n#### Infrastructure Scaling:\n```\nCapacity Scaling Considerations:\n- Vertical scaling (more powerful capacity)\n- Horizontal scaling (distributed workload)\n- Geographic distribution optimization\n- Load balancing implementation\n\nGateway Optimization:\n- Dedicated gateway clusters\n- Load balancing configuration\n- Connection optimization\n- Performance monitoring setup\n```\n\n## Troubleshooting Workflows\n\n### **Quick Win Checklist** (30 minutes)\n```\n□ Check Performance Analyzer for obvious bottlenecks\n□ Reduce number of visuals on slow-loading pages\n□ Apply default filters to reduce data volume\n□ Disable unnecessary cross-filtering\n□ Check for missing relationships causing cross-joins\n□ Verify appropriate storage modes\n□ Review and optimize top 3 slowest DAX measures\n```\n\n### **Comprehensive Analysis** (2-4 hours)\n```\n□ Complete model architecture review\n□ DAX optimization using variables and efficient patterns\n□ Report design optimization and restructuring\n□ Data source performance analysis\n□ Capacity utilization assessment\n□ User access pattern analysis\n□ Mobile performance testing\n□ Load testing with realistic concurrent users\n```\n\n### **Strategic Optimization** (1-2 weeks)\n```\n□ Complete data model redesign if necessary\n□ Implementation of aggregation strategies\n□ Infrastructure scaling planning\n□ Monitoring and alerting setup\n□ User training on efficient usage patterns\n□ Performance governance implementation\n□ Continuous monitoring and optimization process\n```\n\n## Performance Monitoring Setup\n\n### **Proactive Monitoring**\n```\nKey Performance Indicators:\n- Average page load time by report\n- Query execution time percentiles\n- Model refresh duration trends\n- Capacity utilization patterns\n- User adoption and usage metrics\n- Error rates and timeout occurrences\n\nAlerting Thresholds:\n- Page load time >15 seconds\n- Query execution time >45 seconds\n- Capacity CPU >80% for >10 minutes\n- Memory utilization >90%\n- Refresh failures\n- High error rates\n```\n\n### **Regular Health Checks**\n```\nWeekly:\n□ Review performance dashboards\n□ Check capacity utilization trends\n□ Monitor slow-running queries\n□ Review user feedback and issues\n\nMonthly:\n□ Comprehensive performance analysis\n□ Model optimization opportunities\n□ Capacity planning review\n□ User training needs assessment\n\nQuarterly:\n□ Strategic performance review\n□ Technology updates and optimizations\n□ Scaling requirements assessment\n□ Performance governance updates\n```\n\n## Communication and Documentation\n\n### **Issue Reporting Template**\n```\nPerformance Issue Report:\n\nIssue Description:\n- What specific performance problem is occurring?\n- When does it happen (always, specific times, certain conditions)?\n- Who is affected (all users, specific groups, particular reports)?\n\nPerformance Metrics:\n- Current performance measurements\n- Expected performance targets\n- Comparison with previous performance\n\nEnvironment Details:\n- Report/model names affected\n- User locations and network conditions\n- Browser and device information\n- Capacity and infrastructure details\n\nImpact Assessment:\n- Business impact and urgency\n- Number of users affected\n- Critical business processes impacted\n- Workarounds currently in use\n```\n\n### **Resolution Documentation**\n```\nSolution Summary:\n- Root cause analysis results\n- Optimization changes implemented\n- Performance improvement achieved\n- Validation and testing completed\n\nImplementation Details:\n- Step-by-step changes made\n- Configuration modifications\n- Code changes (DAX, model design)\n- Infrastructure adjustments\n\nResults and Follow-up:\n- Before/after performance metrics\n- User feedback and validation\n- Monitoring setup for ongoing health\n- Recommendations for similar issues\n```\n\n---\n\n**Usage Instructions:**\nProvide details about your specific Power BI performance issue, including:\n- Symptoms and impact description\n- Current performance metrics\n- Environment and configuration details\n- Previous troubleshooting attempts\n- Business requirements and constraints\n\nI'll guide you through systematic diagnosis and provide specific, actionable solutions tailored to your situation.","tags":["power","performance","troubleshooting","awesome","copilot","github"],"capabilities":["skill","source-github","category-awesome-copilot"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/power-bi-performance-troubleshooting","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"install_from":"skills.sh"}},"qualityScore":"0.300","qualityRationale":"deterministic score 0.30 from registry signals: · indexed on skills.sh · published under github/awesome-copilot","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T09:40:13.707Z","embedding":null,"createdAt":"2026-04-18T20:26:07.189Z","updatedAt":"2026-04-22T09:40:13.707Z","lastSeenAt":"2026-04-22T09:40:13.707Z","tsv":"'-2':844 '-4':803 '-8':293,590 '1':48,423,843 '10':125,928 '15':917 '2':111,428,802 '3':131,154,431,796 '30':137,751 '4':438 '45':922 '5':443 '6':292,589 '70':374 '80':926 '90':932 'access':829 'achiev':1083 'across':29 'action':43,1166 'activ':512 'adjust':1104 'adopt':903 'advanc':453,659 'affect':84,1015,1038,1061 'aggreg':239,673,688,854 'alert':525,861,912 'alway':1008 'analysi':167,233,285,421,452,455,473,513,528,801,824,831,962,1076 'analyz':398,426,439,755 'anti':255 'anti-pattern':254 'app':498 'appli':610,768 'appropri':789 'architectur':807 'argument':265 'assess':83,344,531,827,972,983,1053 'attempt':1151 'averag':885 'awesom':5 'b':227 'balanc':731,739 'bandwidth':354 'baselin':113 'before/after':1110 'begin':53 'bi':2,11,19,394,1134 'bidirect':209 'bookmark':602 'bottleneck':385,515,758 'browser':1044 'busi':1054,1063,1152 'c':279 'calcul':185,216,235,258,267,273,549,555,571,642 'capac':75,341,345,369,493,496,518,520,715,722,825,899,924,946,966,1048 'cardin':175,212,329 'category-awesome-copilot' 'caus':319,784,1075 'certain':104,1011 'chang':1079,1094,1099 'check':753,780,940,945 'checklist':750 'classif':61 'clear':55 'cluster':737 'code':1098 'collect':114 'column':186,214,217,268,629,643 'columns/rows':202 'common':193,313 'communic':987 'compar':410 'comparison':1030 'competit':321 'complet':805,846,1087 'complex':171,234,249,266,298,331 'composit':694 'comprehens':800,960 'compress':183,678 'concurr':150,362,839 'condit':1012,1043 'configur':178,302,359,693,740,1096,1147 'connect':80,352,691,741 'consider':368,717 'consist':95 'constraint':77,1155 'consumpt':466 'context':241,248 'continu':872 'copilot':6 'count':487 'cpu':148,347,372,499,925 'critic':1062 'cross':300,324,622,702,778,786 'cross-filt':299,323,621,777 'cross-join':785 'cross-sourc':701 'current':116,1024,1067,1142 'currentmonth':566,579 'custom':306,332 'd':338 'dashboard':522,944 'data':78,105,165,180,224,355,615,624,633,668,773,821,847 'databas':682 'dataset':658 'date':190,221,553,554,559,560,575,576,638 'datetim':640 'dax':228,231,411,450,454,539,798,809,1100 'dedic':735 'default':769 'defin':56 'definit':50 'descript':997,1141 'design':173,281,817,1102 'desktop':395 'detail':420,600,1035,1051,1089,1129,1148 'devic':1046 'diagnos':24 'diagnosi':156,1162 'diagnost':159,389 'differ':604 'dimens':708 'directqueri':680 'disabl':775 'distribut':367,530,725,728 'divid':578 'document':989,1071 'drill':594 'drill-through':593 'dual':706 'due':199 'durat':141,442,447,479,482,485,897 'earli':612 'effici':184,305,489,814,866 'enabl':399 'engin':460,463,481,484 'environ':1034,1145 'error':250,907,936 'excess':215 'execut':73,134,457,892,920 'expect':1027 'expert':21 'export':417 'fabric':495 'failur':934 'feedback':956,1114 'filter':106,247,261,264,301,325,611,623,770,779 'first':449 'fix':536 'focus':444 'fold':686 'follow':1108 'follow-up':1107 'formula':232,462,480 'framework':160,533 'function':240,245,274 'gateway':358,383,733,736 'gather':115 'geograph':366,727 'github':9 'govern':870,985 'group':1019 'growth':546,564 'guid':14,1158 'guidanc':41 'handl':251 'happen':102,1007 'health':939,1121 'high':211,328,371,935 'high-cardin':210,327 'highest':446 'histor':526 'horizont':723 'hour':804 'identif':516 'identifi':405 'immedi':534 'impact':96,309,1052,1055,1065,1140 'implement':192,592,648,677,690,709,732,852,871,1080,1088 'import':665 'import/directquery/composite':179 'improp':220 'improv':1082 'includ':1137 'increment':654,675 'index':683 'indic':370,884 'ineffici':203,238,275,322,541 'inform':1047 'infrastructur':339,343,713,856,1050,1103 'instead':596,606 'instruct':1127 'integ':635 'intellig':277 'interact':70,128,337,435 'issu':28,59,60,81,164,195,230,282,315,342,388,958,990,994,996,1125,1136 'item':448 'iter':244 'join':787 'key':474,882 'larg':196,270,657 'latenc':387 'layout':311 'll':1157 'load':67,122,152,364,730,738,766,835,887,915 'loading/refresh':63 'locat':1040 'made':1095 'mani':206,208,317 'many-to-mani':205 'max':291 'maxim':687 'maximum':591 'measur':188,645,799,1026 'memori':146,348,376,465,490,501,930 'methodolog':46 'metric':118,120,470,475,497,906,1023,1112,1144 'minut':752,929 'miss':218,259,782 'mobil':310,832 'mode':177,663,666,699,707,791 'model':30,62,139,144,162,166,168,194,197,537,625,695,806,848,895,963,1101 'modif':1097 'monitor':477,494,519,711,744,859,873,878,881,949,1117 'month':959 'multipl':608 'name':1037 'necessari':851 'need':971 'nest':272 'network':351,386,1042 'number':286,760,1058 'obvious':757 'occur':90,1003 'occurr':911 'ongo':1120 'open':424 'oper':409 'opportun':965 'optim':246,312,335,538,561,583,617,626,632,664,667,679,681,684,705,729,734,742,794,810,818,842,875,964,980,1078 'overhead':243 'page':66,121,290,587,767,886,914 'pane':427 'particular':1020 'pattern':252,256,278,326,365,467,492,507,542,815,830,868,901 'per':289,586 'percentil':894 'perform':3,12,20,27,58,64,68,112,117,163,229,253,284,308,357,361,384,397,425,469,509,523,535,544,660,710,743,754,823,833,869,877,883,943,961,975,984,993,1000,1022,1025,1028,1033,1081,1111,1135,1143 'plan':458,858,967 'pool':692 'poor':223,334,543 'possibl':647 'power':1,10,18,393,721,1133 'pre':672 'pre-aggreg':671 'premium':517 'pressur':377 'previous':1032,1149 'previousmonth':552,558,570,574,580,581 'proactiv':880 'problem':49,1001 'process':876,1064 'proper':649 'provid':38,1128,1164 'quarter':973 'queri':33,72,133,304,349,379,412,456,468,504,685,891,919,953 'queu':380 'quick':748 'rate':908,937 'realist':838 'recommend':294,1122 'record':401,430 'redesign':849 'reduc':584,614,759,772 'reduct':669 'refresh':140,403,432,508,655,676,896,933 'regular':938 'relationship':172,204,652,704,783 'remov':627 'render':415 'repeat':257 'replac':540,641 'report':31,65,98,101,280,283,314,437,582,816,890,991,995,1021 'report/model':1036 'requir':119,982,1153 'resolut':1070 'resolv':26 'resourc':76,320,514 'respons':71,129 'restructur':820 'result':418,440,1077,1105 'return':577 'review':792,808,942,954,968,976 'role':35 'root':1074 'run':952 'sale':545,548,551,557,563,568,573 'scale':714,716,719,724,857,981 'scan':486 'scenario':109 'schema':651 'scope':52,82 'second':126,132,138,918,923 'select':226,619,700 'server':471 'setup':712,745,862,879,1118 'show':598 'similar':1124 'situat':1171 'size':145,169,198 'skill':7 'slicer':303,330,618 'slow':765,951 'slow-load':764 'slow-run':950 'slowest':406,797 'solut':44,532,661,1072,1167 'sourc':79,356,703,822 'source-github' 'special':22 'specif':88,92,97,999,1009,1018,1132,1165 'speed':74 'star':650 'start':429 'step':47,110,153,1091,1093 'step-by-step':1090 'storag':176,459,483,662,698,790 'strateg':697,841,974 'strategi':674,696,855 'studio':451 'summari':1073 'sustain':375 'symptom':1138 'systemat':39,155,1161 'tabl':191,222,271,631,689 'tailor':1168 'target':124,130,136,1029 'techniqu':392,670 'technolog':977 'templat':992 'test':834,836,1086 'text':213,637 'threshold':524,913 'time':93,123,135,276,404,416,472,888,893,916,921,1010 'timeout':382,910 'tool':390,396 'top':795 'total':478,547,550,556,567,572 'track':510 'train':864,970 'transit':242 'trend':503,527,898,948 'troubleshoot':4,13,40,45,746,1150 'type':181,225,296,634 'unnecessari':201,776 'unus':628 'updat':978,986 'urgenc':1057 'usag':189,422,464,491,867,905,1126 'use':157,262,601,653,811,1069 'user':86,89,151,363,511,828,840,863,902,955,969,1017,1039,1060,1113 'util':149,346,373,502,521,826,900,931,947 'valid':1084,1116 'var':565,569 'vari':142 'variabl':237,260,812 'verifi':788 'version':562 'vertic':718 'view':605 'visual':69,127,288,295,307,318,333,336,402,407,414,433,585,609,762 'volum':350,505,616,774 'vs':87,94,99,107,187,413,461,636,639 'warn':378 'week':845,941 'win':749 'without':236 'workaround':1066 'workflow':747 'workload':529,726","prices":[{"id":"1b50c506-2828-4bfa-8a7f-170b531edc5f","listingId":"ab4a61c9-aaea-4426-9822-be503f539ea9","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-04-18T20:26:07.189Z"}],"sources":[{"listingId":"ab4a61c9-aaea-4426-9822-be503f539ea9","source":"github","sourceId":"github/awesome-copilot/power-bi-performance-troubleshooting","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/power-bi-performance-troubleshooting","isPrimary":false,"firstSeenAt":"2026-04-18T21:50:36.447Z","lastSeenAt":"2026-04-22T06:52:27.955Z"},{"listingId":"ab4a61c9-aaea-4426-9822-be503f539ea9","source":"skills_sh","sourceId":"github/awesome-copilot/power-bi-performance-troubleshooting","sourceUrl":"https://skills.sh/github/awesome-copilot/power-bi-performance-troubleshooting","isPrimary":true,"firstSeenAt":"2026-04-18T20:26:07.189Z","lastSeenAt":"2026-04-22T09:40:13.707Z"}],"details":{"listingId":"ab4a61c9-aaea-4426-9822-be503f539ea9","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"power-bi-performance-troubleshooting","source":"skills_sh","category":"awesome-copilot","skills_sh_url":"https://skills.sh/github/awesome-copilot/power-bi-performance-troubleshooting"},"updatedAt":"2026-04-22T09:40:13.707Z"}}