Skip to content

CGI Data Analytics Interview Questions & Answers

Curated interview practice questions with answers. These are practice scenarios, not a verified list of past interview questions.

About CGI hiring for Data Analytics roles

CGI is a Canadian IT and business consulting services company providing systems integration, managed services, and software solutions. Its India global delivery centres support clients in government, banking, utilities and manufacturing. It hires in India for software engineers, test engineers, data analysts and support engineers.

For Data Analytics roles, this CGI practice set focuses most on SQL (7), Data Modelling & Warehousing (5), Power BI (4), Excel (4). It has 17 easy, 21 medium, 2 hard questions, so you can start easy and work up to the harder ones.

Company type
IT services
Headquarters
Montreal, Canada
Main India offices
Bengaluru, Hyderabad, Chennai, Mumbai

CGI Data Analytics interview process

  1. Online assessment (aptitude + technical)
  2. Technical interview
  3. Managerial round
  4. HR round

Typical pattern based on public candidate experiences. Rounds vary by role, team and year.

Solved for CGIStart practicing
3 QUESTIONS FREESign up to unlock the full question bank and track your progress.Unlock every question and answer, then continue practising company-wise and package-wise.
3 questions free Unlock the rest in seconds
01

A profit margin visual shows errors for products with zero sales. How do you fix it in DAX?

Save to ▾
Show answer
DIVIDE(numerator, denominator, alternate) handles division by zero or blank safely and returns blank or the alternate value you supply, so visuals do not show errors or infinity. The / operator returns an error or infinity in those cases. For example, DIVIDE([Profit], [Sales]) shows blank for a product with no sales. Use / only when you are certain the denominator can never be zero, because it is marginally faster.
02

How do you combine text from several cells with a separator in Excel?

Save to ▾
Show answer
-- join first and last name with a space =TEXTJOIN(" ", TRUE, A2, B2) -- all products of one order in a single cell, comma separated =TEXTJOIN(", ", TRUE, FILTER(C2:C500, A2:A500=F2)) -- older method =A2 & " " & B2 -- TRUE in TEXTJOIN skips empty cells, which CONCAT and & do not
03

Write Python code to extract UTM source, medium and campaign from a column of landing page URLs.

Save to ▾
Show answer
import pandas as pd from urllib.parse import urlparse, parse_qs def get_utms(url): params = parse_qs(urlparse(str(url)).query) return pd.Series({ 'source': params.get('utm_source', ['(direct)'])[0].lower(), 'medium': params.get('utm_medium', ['(none)'])[0].lower(), 'campaign': params.get('utm_campaign', ['(not set)'])[0].lower(), }) df[['source', 'medium', 'campaign']] = df['landing_url'].apply(get_utms)
04

What is columnar storage and why do analytical warehouses use it?

Save to ▾
Show answer
Columnar storage keeps all values of one column together on disk instead of storing full rows together. Analytical queries usually read a few columns across millions of rows, so the engine reads only those columns. Similar values sit side by side and compress very well, which cuts storage and scan cost. The trade-off is slower single-row inserts and updates, which is why OLTP databases stay row-based.
05

Explain GROUP BY with an example.

CGISQLMedium
Save to ▾
Show answer
It groups rows sharing values so aggregates run per group, for example SELECT region, SUM(sales) FROM orders GROUP BY region.
06

What is the difference between bounce rate and engagement rate in GA4?

Save to ▾
Show answer
In GA4, an engaged session lasts longer than 10 seconds, has a conversion (key event) or has at least two page or screen views. Engagement rate is engaged sessions divided by total sessions. Bounce rate is simply the opposite: the share of sessions that were not engaged. This is more useful than the old single-page bounce definition, because a user who reads a full blog post for three minutes is no longer counted as a bounce.
07

A campaign landing page gets heavy traffic but very few sign-ups. How would you diagnose it?

Save to ▾
Show answer
Check traffic quality first: is the right audience coming, and does the ad message match the page? Then look at page behaviour by device: load time, scroll depth, form start versus form submit, and which form field users abandon. Session recordings or heatmaps help. Test the form on mobile for errors. Common fixes are faster pages, fewer form fields, a clear call to action above the fold and matching the ad's offer.
08

When would you choose Polars or DuckDB over pandas?

Save to ▾
Show answer
Choose them when data is large, roughly several gigabytes, or when pandas is slow or runs out of memory. DuckDB runs fast SQL directly on CSV and Parquet files on a laptop, ideal for analysts comfortable with SQL. Polars is a DataFrame library with lazy evaluation and multi-threading, often many times faster than pandas. pandas still wins for small data, its huge ecosystem and compatibility with most tutorials and libraries.
09

Import mode vs DirectQuery?

Save to ▾
Show answer
Import loads data into memory for fast visuals; DirectQuery queries the source live, giving fresh data but slower performance and some DAX limits.
10

A stakeholder wants a 40-column crosstab in Tableau that looks exactly like their Excel sheet. How do you handle it?

Save to ▾
Show answer
I would ask what they do with it. If they export and work on it in Excel, a crosstab view with a download option or a scheduled extract is fine, and Tableau should not fight Excel. If they actually scan it for exceptions, I would suggest a summary view with highlights and a drill-down to the detail table. Often both: a short visual summary on top and the detailed table on a second tab.
11

What is Simpson's paradox? Give an example.

Save to ▾
Show answer
Simpson's paradox happens when a trend in several groups reverses when the groups are combined, because group sizes differ. Example: a new sales process has higher conversion in both small and large stores, yet overall conversion looks lower because it was mostly rolled out to large stores, which convert worse in general. The lesson is to check segments and confounding variables before concluding from aggregate numbers.
12

What is the difference between ETL and ELT?

Save to ▾
Show answer
In ETL, data is extracted from sources, transformed on a separate engine and then loaded into the warehouse. In ELT, raw data is loaded first and transformed inside the warehouse using SQL, often with a tool like dbt. Cloud warehouses with cheap storage and scalable compute made ELT the common choice in 2026, because raw data stays available for reprocessing. ETL still suits cases needing masking or heavy cleansing before data lands.
13

What is the Central Limit Theorem and why does it matter for analysts?

Save to ▾
Show answer
The Central Limit Theorem says that the distribution of sample means approaches a normal distribution as sample size grows, usually from about 30 observations, even if the underlying data is skewed. This is why we can use z-tests, t-tests and confidence intervals for averages such as order value or session time. It does not make the raw data normal, and very heavy-tailed data may need larger samples.
14

What is the difference between Power BI Desktop, Power BI Service and Power BI Report Server?

Save to ▾
Show answer
Power BI Desktop is the free Windows application where you connect data, model it, write DAX and design reports. Power BI Service is the cloud platform where reports are published, shared, scheduled for refresh, and organised into workspaces and apps. Power BI Report Server is an on-premises option for organisations that cannot use the cloud, with fewer features. Most analysts build in Desktop and share through the Service.
15

How should you document data cleaning decisions?

Save to ▾
Show answer
Keep a cleaning log or README listing each rule, why it exists and its impact, for example removed 1,240 test orders flagged by email domain. Code-based cleaning in SQL, Python or Power Query steps is itself documentation if steps are named clearly. Record counts before and after each major step. This lets reviewers trust the numbers, helps a colleague rerun the work, and answers the question why your total differs from the raw file.
16

What are additive, semi-additive and non-additive facts?

Save to ▾
Show answer
Additive facts, like sales amount or quantity, can be summed across every dimension. Semi-additive facts, like account balance or stock on hand, can be summed across accounts or stores but not across time; for time you take the closing or average value. Non-additive facts, like percentages, ratios or unit prices, cannot be summed at all, so you store their components (profit and revenue) and calculate the ratio at query time.
17

What does CASE WHEN do?

CGISQLMedium
Save to ▾
Show answer
It adds conditional logic inside queries, for example bucketing ages or flagging values, returning different results per condition.
18

What are indexes and when can they hurt?

CGISQLMedium
Save to ▾
Show answer
Indexes speed up lookups by keeping sorted pointers. They slow writes and use space, so index columns used in filters and joins, not every column.
19

What is conditional formatting?

Save to ▾
Show answer
It automatically formats cells based on rules such as colour scales, data bars or highlighting values above a target, making patterns visible at a glance.
20

Write SQL to count orders by week and by day of week.

Save to ▾
Show answer
-- orders per week (PostgreSQL style) SELECT DATE_TRUNC('week', order_date) AS week_start, COUNT(*) AS orders FROM orders GROUP BY 1 ORDER BY 1; -- orders by day of week (0 = Sunday) SELECT EXTRACT(DOW FROM order_date) AS dow, COUNT(*) AS orders FROM orders GROUP BY 1 ORDER BY 1;
21

How do you write a good hypothesis for an experiment?

Save to ▾
Show answer
A good hypothesis names the change, the expected effect, the metric and the reason. For example: showing delivery date on the product page will increase add-to-cart rate by at least 2% because uncertainty about delivery stops purchases. It should be written before the test starts, be measurable, and state the null hypothesis of no difference. A vague hypothesis like 'the new page will be better' leads to cherry-picking metrics afterwards.
22

What is a role-playing dimension?

Save to ▾
Show answer
A role-playing dimension is one physical dimension used several times by the same fact table in different roles. The classic case is the date dimension: an orders fact has order date, ship date and delivery date keys, all pointing to the same date table. In SQL you join it three times with different aliases; in Power BI you keep one active relationship and use USERELATIONSHIP or create separate date views for each role.
23

What are strategic, operational and analytical dashboards?

Save to ▾
Show answer
Strategic dashboards serve leadership with a few high-level KPIs and trends, updated daily to monthly. Operational dashboards monitor live or near-live activity for teams on the ground, such as orders pending dispatch or call queue length, often with alerts. Analytical dashboards let analysts and managers explore data with filters and drill-downs to find causes. Knowing which type you are building decides the level of detail, refresh rate and design.
24

A file has dates in mixed formats, some dd/mm/yyyy and some mm/dd/yyyy. How do you handle it?

Save to ▾
Show answer
Find out which system or region produced each format, since a source column often explains it. Values with a day above 12 reveal the format unambiguously. Parse with an explicit format per source, for example pd.to_datetime(col, format='%d/%m/%Y', errors='coerce'), rather than letting the tool guess. Check failed or suspicious parses, such as future dates, and ask the source team to send ISO format yyyy-mm-dd going forward.
25

How do SUMIFS and SUMPRODUCT differ?

CGIExcelMedium
Save to ▾
Show answer
SUMIFS sums values meeting several criteria and is fast. SUMPRODUCT multiplies arrays and adds them, handling more complex conditions and weighted totals.
26

RANK vs DENSE_RANK vs ROW_NUMBER?

CGISQLMedium
Save to ▾
Show answer
ROW_NUMBER gives a unique sequence. RANK gives ties the same rank and skips the next (1, 1, 3). DENSE_RANK gives ties the same rank without gaps (1, 1, 2).
27

What is a Data Table in Excel's What-If Analysis?

CGIExcelMedium
Save to ▾
Show answer
A Data Table shows how a formula's result changes when one or two inputs vary. For example, place a loan EMI formula in a corner, list interest rates down the column and tenures across the row, then use What-If Analysis, Data Table to fill every combination. It is ideal for sensitivity analysis in pricing or budgeting. Large Data Tables slow recalculation, so set calculation to automatic except tables when needed.
28

What are Type I and Type II errors?

Save to ▾
Show answer
A Type I error is a false positive: concluding there is an effect when there is none, for example launching a feature that does not actually lift sales. Its probability is alpha, often 0.05. A Type II error is a false negative: missing a real effect, with probability beta. Power is 1 minus beta. Larger samples reduce Type II errors, and the business cost of each mistake should guide which one you guard against more.
29

Write pandas code to fill missing values in a column with the median of each group.

Save to ▾
Show answer
# Fill missing delivery_days with the median for that city df['delivery_days'] = ( df['delivery_days'] .fillna(df.groupby('city')['delivery_days'].transform('median')) ) # Rows in a city with no values at all stay NaN; fall back to overall median df['delivery_days'] = df['delivery_days'].fillna(df['delivery_days'].median())
30

What is Tableau Prep used for?

Save to ▾
Show answer
Tableau Prep is a visual tool for cleaning and shaping data before analysis. You build a flow of steps: connect inputs, clean fields, split columns, group similar values, pivot, join, union and aggregate, and see the data change at every step. The output can be an extract or published data source that dashboards use. It suits analysts who need repeatable preparation without writing SQL or Python.
31

Difference between a CTE, a subquery and a temp table?

CGISQLMedium
Save to ▾
Show answer
A subquery is inline; a CTE is a named, readable block for one statement; a temp table is physically stored for the session and can be indexed and reused.
32

What is Power Query's role in Power BI?

Save to ▾
Show answer
It extracts and transforms data using recorded steps in M language, such as merging, unpivoting, changing types and removing errors, before loading to the model.
33

What is a lambda function in Python and where do analysts use it?

Save to ▾
Show answer
A lambda is a small anonymous function written in one line, for example lambda x: x * 1.18 to add GST. Analysts use lambdas with sorted for custom sort keys, with pandas assign for computed columns, for example assign(margin=lambda d: d.profit / d.sales), and occasionally with apply. For anything longer than one expression or reused in several places, a normal def function is clearer and easier to test.
34

What is the difference between users, sessions and events in Google Analytics 4?

Save to ▾
Show answer
GA4 uses an event-based model: every interaction, such as page_view, scroll, add_to_cart or purchase, is an event with parameters. A session is a group of events from one user within a period of activity, ending after 30 minutes of inactivity by default. A user is identified by a device cookie, app instance or a logged-in user ID. One user can have many sessions, and each session many events.
35

Write Python code to test whether conversion differs between control and treatment.

Save to ▾
Show answer
from statsmodels.stats.proportion import proportions_ztest, proportion_confint conversions = [1180, 1295] # control, treatment visitors = [30000, 30100] z, p = proportions_ztest(conversions, visitors) print(f'z = {z:.2f}, p = {p:.4f}') for c, n in zip(conversions, visitors): low, high = proportion_confint(c, n, method='wilson') print(f'rate {c/n:.3%} 95% CI {low:.3%} to {high:.3%}')
36

What is data cleaning and why does it take so much of an analyst's time?

Save to ▾
Show answer
Data cleaning means fixing or removing incorrect, incomplete, duplicated or inconsistent data so analysis is trustworthy. Real data comes from many systems and manual entry, so you meet typos, mixed formats, missing values and duplicates. Analysts often spend half or more of a project on it because every later chart and model depends on it. Wrong inputs give confident but wrong answers, which is worse than no answer.
37

What is the difference between relationships, joins and data blending in Tableau?

Save to ▾
Show answer
Relationships, the default logical layer, connect tables flexibly and Tableau decides join type and level per view, avoiding duplicated measures. Joins physically merge tables into one at a fixed level, which can duplicate rows if grains differ. Blending combines data from separate data sources at the view level using a primary and secondary source, aggregating the secondary first. Prefer relationships, use joins for specific row-level needs, and blending as a last resort.
38

What is the difference between WHERE and HAVING?

Save to ▾
Show answer
WHERE filters rows before grouping. HAVING filters groups after GROUP BY and can use aggregates like SUM() or COUNT().
39

What are variance and standard deviation?

Save to ▾
Show answer
Variance is the average squared distance of values from their mean; standard deviation is its square root, in the same units as the data. They measure spread. Two stores may both average 50,000 rupees daily, but one with a standard deviation of 2,000 is stable while one with 20,000 is volatile. For samples, divide by n minus 1 instead of n to get an unbiased estimate.
40

What is a degenerate dimension?

Save to ▾
Show answer
A degenerate dimension is a dimension key stored directly in the fact table with no separate dimension table, because it has no other attributes worth storing. Invoice number, order number and transaction ID are typical examples. They are useful for grouping order lines back into an order, counting distinct orders or tracing a row to the source system. Creating a separate table just for the number would add a useless join.

Tips to crack the CGI Data Analytics interview

  • Revise core programming, SQL and testing basics, as CGI roles often involve maintaining and testing enterprise systems.
  • Learn about CGI's member-ownership model, where employees are called members and can buy shares.
  • Prepare clear examples of teamwork and client communication, which are important in CGI's consulting culture.
  • Keep a one-minute story ready for every project on your CV: problem, your part, tools, result.
  • Practise the hard questions on this page aloud; CGI interviewers usually ask follow-ups on your first answer.

Frequently asked questions

How many rounds are there in the CGI Data Analytics interview?

Candidates usually go through 4 stages: Online assessment (aptitude + technical); Technical interview; Managerial round; HR round. The exact rounds change with the role, team, location and your experience, so confirm the process with the recruiter.

Which topics should I prepare for the CGI Data Analytics interview?

This practice set leans on SQL (7), Data Modelling & Warehousing (5), Power BI (4), Excel (4). Revise those first, then practise explaining one or two of your own projects end to end, because most CGI interviewers ask you to walk through real work.

Are these the exact questions asked at CGI?

No. These are curated practice questions that match the skills and difficulty usually tested in it services interviews like CGI's. They are not a leaked or verified list of past questions.

Where does CGI hire Data Analytics professionals in India?

CGI has large teams in Bengaluru, Hyderabad, Chennai, Mumbai. Openings and locations change often, so check the CGI careers page and filter by city and experience.

Data Analytics questions for similar companies