Free BIDA Practice Questions
10 free, exam-style Business Intelligence & Data Analyst (BIDA) practice questions with answers and
explanations. No signup required. Work through them below, then take the
full free BIDA practice test to study every exam domain.
Question 1
A Power BI analyst creates this calculated column in the Sales table:
Revenue Pct = Sales[Amount] / CALCULATE(SUM(Sales[Amount]), ALL(Sales))
She expects the column to update dynamically when a Region slicer is used. After selecting 'North', all Revenue Pct values remain unchanged. What is the MOST likely explanation?
- CALCULATE inside a calculated column cannot modify filter context the same way it does inside a measure, so the denominator always reflects the unfiltered grand total regardless of any slicer state
- Calculated columns are evaluated once at model refresh and do not respond to slicers or visual filters - a measure is required for context-sensitive calculations
- The ALL(Sales) argument strips the slicer filter before it can apply, so the formula must be rewritten using ALLSELECTED to respect the current visual context
- Calculated columns cannot reference their own table inside CALCULATE without using RELATEDTABLE to safely navigate the model relationship
Show answer & explanation
Correct answer: B - Calculated columns are evaluated once at model refresh and do not respond to slicers or visual filters - a measure is required for context-sensitive calculations
Question 2
A financial analyst receives a budget workbook where each of twelve months is a separate column containing revenue figures. She connects the file to Power BI via Power Query. Which single transformation creates a structure suitable for time-series analysis in Power BI?
- Append the twelve monthly columns to form a single consolidated annual revenue total
- Use Group By on the month columns to aggregate and summarise revenue values, creating one consolidated summary row that represents the average across all twelve monthly periods
- Pivot the month columns by selecting the month headers as the new row grouping field
- Unpivot the twelve monthly columns so each month becomes a separate row with a period label and a revenue value
Show answer & explanation
Correct answer: D - Unpivot the twelve monthly columns so each month becomes a separate row with a period label and a revenue value
Question 3
An analyst creates this measure in Power BI:
All Products Sales = CALCULATE([Total Sales], ALL(Products))
A table visual has Product Category on rows and All Products Sales as a value column. What does this measure display for each category row?
- The grand total of all product sales, repeated identically for every category row regardless of which category is displayed
- The total sales for only the products belonging to each displayed category, consistent with the visual's row filter context
- An error, because ALL() must reference a column rather than a full table when used as a CALCULATE filter argument
- The cumulative sales from the first category row to the current row, following a default top-to-bottom evaluation sequence
Show answer & explanation
Correct answer: A - The grand total of all product sales, repeated identically for every category row regardless of which category is displayed
Question 4
An analyst runs the following SQL query and receives an error:
SELECT Region, SUM(Revenue) AS TotalRevenue
FROM Sales
WHERE SUM(Revenue) > 500000
GROUP BY Region
What is the MOST likely cause of the error?
- The alias TotalRevenue cannot be referenced in the same SELECT clause where it is first defined
- GROUP BY must appear before WHERE in the written clause order for the query to execute correctly
- Aggregate functions cannot appear in a WHERE clause - the filter on SUM(Revenue) must be moved to a HAVING clause
- SUM() requires a DISTINCT modifier to prevent double-counting revenues when used alongside GROUP BY in the same query block, which has been omitted here
Show answer & explanation
Correct answer: C - Aggregate functions cannot appear in a WHERE clause - the filter on SUM(Revenue) must be moved to a HAVING clause
Question 5
A Tableau analyst builds a view showing the Top 10 customers by revenue using a Top N filter. She adds a Region quick filter so users can isolate a specific region. After selecting 'East', several non-East customers still appear in the Top 10. What is the MOST appropriate fix?
- Rebuild the Top 10 as a table calculation so it re-evaluates after all dimension filters have been applied in the order of operations
- Promote the Region filter to a context filter so the Top 10 calculation is scoped to only the records that pass the Region condition
- Replace the Region quick filter with a filter action driven from a separate Region reference sheet to enforce the correct evaluation sequence
- Change the Customer dimension from Continuous to Discrete so that each customer is treated as an individual categorical member rather than a position on a continuous scale, allowing the Top N condition to evaluate correctly against distinct values
Show answer & explanation
Correct answer: B - Promote the Region filter to a context filter so the Top 10 calculation is scoped to only the records that pass the Region condition
Question 6
A finance analyst uses VLOOKUP to retrieve employee names from an HR lookup table. The table is sorted in ascending order by Employee ID, the match_type argument is set to FALSE, and data types and cell values have been verified to match exactly with no leading or trailing spaces. Employee ID is in column C of the array and Name is in column A. The formula returns #N/A for every record. What is the MOST likely cause?
- VLOOKUP searches left to right only - it cannot return a value from a column that sits to the LEFT of the lookup column within the selected array
- Even with match_type set to FALSE, VLOOKUP still requires the first column of the lookup array to be sorted in ascending order to correctly locate exact match values
- The #N/A errors are caused by a structural mismatch between the lookup range and the source table that only becomes visible when Employee ID is not in the first column of the array range selected
- VLOOKUP is limited to lookup arrays spanning fewer than 256 columns - selecting a wide range that includes columns to the left of Employee ID may push the return column index beyond the maximum allowed offset value for this function
Show answer & explanation
Correct answer: A - VLOOKUP searches left to right only - it cannot return a value from a column that sits to the LEFT of the lookup column within the selected array
Question 7
After fitting a linear regression model, an analyst plots the residuals against the predicted values and observes a funnel shape - the scatter of residuals clearly widens as predicted values increase. Which OLS assumption is violated?
- No autocorrelation - residuals must be independent across all observations, showing no systematic or sequential pattern that would indicate temporal or spatial clustering in the error terms
- No multicollinearity - the independent variables must not be substantially correlated with one another, as high inter-predictor correlation inflates standard errors and destabilises coefficient estimates
- Normality of residuals - the error terms must follow an approximately normal distribution and should not display increasing spread as a function of the predicted values
- Homoscedasticity - the variance of the residuals must remain constant across all levels of the predicted values rather than expanding in a fan or funnel pattern
Show answer & explanation
Correct answer: D - Homoscedasticity - the variance of the residuals must remain constant across all levels of the predicted values rather than expanding in a fan or funnel pattern
Question 8
A data warehouse designer is building a retail analytics model in Power BI. Products belong to subcategories, and subcategories belong to departments. In a star schema, how should this product hierarchy be modeled?
- Create three separate dimension tables - Product, Subcategory, and Department - each joined directly to the Sales fact table via its own dedicated foreign key column in the fact table
- Store the hierarchy as a parent-child recursive table where each node holds a reference to its parent ID, preserving relational integrity while minimising attribute redundancy across dimension levels
- Flatten the hierarchy into a single Product dimension table with ProductName, SubcategoryName, and DepartmentName as regular attribute columns
- Add a bridge table between Subcategory and Department to resolve what the designer suspects is a many-to-many relationship embedded within the product hierarchy structure
Show answer & explanation
Correct answer: C - Flatten the hierarchy into a single Product dimension table with ProductName, SubcategoryName, and DepartmentName as regular attribute columns
Question 9
A business analyst presents a monthly revenue trend to the CFO using a bar chart where the y-axis begins at $950,000 instead of $0. After viewing the chart - where one bar appears nearly double the height of another - the CFO approves a major budget reallocation. The analyst's manager later flags the chart as misleading. What is the PRIMARY design violation?
- The analyst used a bar chart rather than a line chart, which is the standard format for displaying a financial metric measured across consecutive time periods
- Truncating the y-axis exaggerates the visual difference between bars, distorting the perceived magnitude of variation and misrepresenting the data to decision-makers
- The chart lacks data labels on each bar, making it impossible for the CFO to verify the exact revenue figures before committing to a decision
- Bar charts are inappropriate for executive financial presentations because they fail to communicate precise numerical values as effectively as a formatted data table, and a supporting table should always accompany any chart shown to the C-suite to enable independent verification of the underlying figures
Show answer & explanation
Correct answer: B - Truncating the y-axis exaggerates the visual difference between bars, distorting the perceived magnitude of variation and misrepresenting the data to decision-makers
Question 10
An analyst runs the following line of Python code on a DataFrame called df:
result = df.loc[df['Profit'] < 0, ['Region', 'Product', 'Profit']]
What does result contain?
- All rows where Profit is negative, returning only the Region, Product, and Profit columns
- The sum of Profit values grouped by Region and Product for every row where Profit falls below zero
- All rows from df with a new Boolean column appended that flags each row where Profit is less than zero
- The first row in df that satisfies the Profit condition, with only the three specified column labels returned
Show answer & explanation
Correct answer: A - All rows where Profit is negative, returning only the Region, Product, and Profit columns