{"id":109396,"date":"2025-07-03T10:54:03","date_gmt":"2025-07-03T05:24:03","guid":{"rendered":"https:\/\/www.mygreatlearning.com\/blog\/?page_id=109396"},"modified":"2025-07-02T17:29:30","modified_gmt":"2025-07-02T11:59:30","slug":"tableau-quiz","status":"publish","type":"page","link":"https:\/\/www.mygreatlearning.com\/blog\/tableau-quiz\/","title":{"rendered":"Tableau Quiz"},"content":{"rendered":"\n<div id=\"tableau-quiz-app-wrapper\">\n    <style>\n        \/* --- General Reset & Variables --- *\/\n        html { scroll-behavior: smooth; }\n        #tableau-quiz-app-wrapper {\n            --primary-blue: #1A73E8; --hover-blue: #1865c9; --background-grey: #F8F9FA; --border-grey: #DADCE0; --text-primary: #202124; --text-secondary: #5F6368; --option-bg: #FFFFFF; --option-hover-bg: #F1F3F4; --color-success: #1E8E3E; --correct-bg: #E6F4EA; --correct-text: #117233; --color-danger: #D93025; --incorrect-bg: #FCE8E6; --incorrect-text: #A50E0E; --color-warning: #f59e0b; --whatsapp-green: #25D366; --twitter-blue: #1DA1F2; --linkedin-blue: #0A66C2; --telegram-blue: #24A1DE; --shadow: 0 1px 2px 0 rgba(60, 64, 67, 0.3), 0 2px 6px 2px rgba(60, 64, 67, 0.15); --shadow-lg: 0 10px 25px rgba(0, 0, 0, 0.1); font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif; color: var(--text-primary); box-sizing: border-box;\n        }\n        #tableau-quiz-app-wrapper *, #tableau-quiz-app-wrapper *::before, #tableau-quiz-app-wrapper *::after { box-sizing: inherit; }\n        #quiz-app-container { width: 1200px; max-width: 100%; border-radius: 8px; overflow: hidden; margin: 50px auto auto auto; }\n        #tableau-quiz-app-wrapper .quiz-screen { display: none; }\n        #tableau-quiz-app-wrapper .quiz-screen.active { display: block; animation: fadeIn 0.5s ease-out; }\n        @keyframes fadeIn { from { opacity: 0; transform: translateY(15px); } to { opacity: 1; transform: translateY(0); } }\n        \n        \/* --- Screen Padding & Header --- *\/\n        #main-menu-view, #user-details-view, #analysis-view { padding: 2rem 3rem; }\n        #tableau-quiz-app-wrapper .quiz-header { text-align: center; margin-bottom: 2.5rem; }\n        #tableau-quiz-app-wrapper .quiz-header h1 { font-size: 2.5rem; margin: 0 0 0.5rem 0; }\n        #tableau-quiz-app-wrapper .quiz-header p { font-size: 1.1rem; color: var(--text-secondary); max-width: 600px; margin: 0 auto; }\n        \n        \/* --- Main Menu --- *\/\n        #tableau-quiz-app-wrapper .difficulty-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.5rem; margin-bottom: 3rem; }\n        #tableau-quiz-app-wrapper .difficulty-card { border: 1px solid var(--border-grey); background-color: #fff; border-radius: 8px; text-align: center; padding: 1.5rem; cursor: pointer; transition: transform 0.2s ease, box-shadow 0.2s ease; display: flex; flex-direction: column; }\n        #tableau-quiz-app-wrapper .difficulty-card:hover { transform: translateY(-5px); box-shadow: var(--shadow-lg); }\n        #tableau-quiz-app-wrapper .difficulty-card .icon { font-size: 2.5rem; margin-bottom: 1rem; }\n        #tableau-quiz-app-wrapper .difficulty-card h2 { font-size: 1.5rem; margin: 0 0 0.5rem 0; }\n        #tableau-quiz-app-wrapper .difficulty-card p { font-size: 0.9rem; color: var(--text-secondary); margin: 0 0 1.5rem 0; }\n        #tableau-quiz-app-wrapper .difficulty-card .features { font-size: 0.875rem; color: var(--text-secondary); text-align: left; margin-bottom: 1.5rem; flex-grow: 1; }\n        #tableau-quiz-app-wrapper .difficulty-card .features p { margin: 0.5rem 0; }\n        #tableau-quiz-app-wrapper .start-btn { width: 100%; }\n        #tableau-quiz-app-wrapper .difficulty-card.beginner h2 { color: var(--color-success); }\n        #tableau-quiz-app-wrapper .difficulty-card.intermediate h2 { color: var(--color-warning); }\n        #tableau-quiz-app-wrapper .difficulty-card.advanced h2 { color: var(--color-danger); }\n        #tableau-quiz-app-wrapper .quiz-features-section { text-align: center; background-color: #fff; padding: 2rem; border-radius: 8px; border: 1px solid var(--border-grey); }\n        #tableau-quiz-app-wrapper .quiz-features-section h2 { font-size: 1.5rem; margin: 0 0 1.5rem 0; }\n        #tableau-quiz-app-wrapper .features-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1.5rem; }\n        #tableau-quiz-app-wrapper .feature-item { display: flex; flex-direction: column; align-items: center; }\n        #tableau-quiz-app-wrapper .feature-item .icon { font-size: 2rem; margin-bottom: 0.5rem; }\n        \n        \/* --- Buttons --- *\/\n        #tableau-quiz-app-wrapper .quiz-btn { font-size: 0.875rem; font-weight: 500; padding: 0.6rem 1.5rem; border-radius: 4px; border: 1px solid var(--border-grey); cursor: pointer; transition: background-color 0.2s ease; margin-top: 20px;}\n        #tableau-quiz-app-wrapper .quiz-btn.primary { background-color: var(--primary-blue); color: white; border-color: var(--primary-blue); }\n        #tableau-quiz-app-wrapper .quiz-btn.primary:hover { background-color: var(--hover-blue); }\n        #tableau-quiz-app-wrapper .quiz-btn:disabled { opacity: 0.5; cursor: not-allowed; }\n        \n        \/* --- Quiz Header & Progress --- *\/\n        #quiz-view { background-color: #fff; }\n        #quiz-header, #results-header, #analysis-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.5rem; border-bottom: 1px solid var(--border-grey); }\n        #quiz-header h1, #results-header h1, #analysis-header h1 { font-size: 1.25rem; margin: 0; }\n        #tableau-quiz-app-wrapper .header-actions { display: flex; align-items: center; gap: 1rem; }\n        #progress-stepper { display: flex; gap: 0.5rem; flex-grow: 1; margin: 0 2rem; }\n        #tableau-quiz-app-wrapper .step { height: 4px; flex-grow: 1; background-color: #E0E0E0; border-radius: 2px; transition: background-color 0.3s ease; }\n        #tableau-quiz-app-wrapper .step.active { background-color: var(--primary-blue); }\n        #tableau-quiz-app-wrapper .step.correct { background-color: var(--color-success); }\n        #tableau-quiz-app-wrapper .step.incorrect { background-color: var(--color-danger); }\n        #question-count, #timer { font-size: 0.875rem; color: var(--text-secondary); font-weight: 500; }\n        #timer { min-width: 50px; text-align: right; }\n        \n        \/* --- Quiz Body & Options --- *\/\n        #quiz-body, #analysis-body { padding: 2rem 3rem; }\n        .tableau-quiz-question-text { font-size: 1.25rem; margin: 0 0 2rem 0; line-height: 1.5; }\n        #options-container { display: flex; flex-direction: column; gap: 1rem; }\n        #tableau-quiz-app-wrapper .option { border: 1px solid var(--border-grey); border-radius: 8px; cursor: pointer; transition: all 0.2s ease-in-out; }\n        #tableau-quiz-app-wrapper .option:not(.disabled):hover { border-color: var(--primary-blue); box-shadow: 0 0 0 1px var(--primary-blue); }\n        #tableau-quiz-app-wrapper .option-label { display: block; padding: 1rem; cursor: pointer; }\n        #tableau-quiz-app-wrapper .option-letter { font-weight: 500; margin-right: 1rem; color: var(--primary-blue); }\n        #tableau-quiz-app-wrapper .option.disabled { cursor: not-allowed; }\n        #tableau-quiz-app-wrapper .option.correct { border-color: var(--color-success); background-color: var(--correct-bg); }\n        #tableau-quiz-app-wrapper .option.incorrect { border-color: var(--color-danger); background-color: var(--incorrect-bg); }\n        \n        \/* --- Feedback & Hint --- *\/\n        #tableau-quiz-app-wrapper .feedback { padding: 0 1rem 1rem 1rem; font-size: 0.9rem; line-height: 1.5; }\n        #tableau-quiz-app-wrapper .feedback-title { font-weight: bold; }\n        #tableau-quiz-app-wrapper .feedback-title.correct { color: var(--correct-text); }\n        #tableau-quiz-app-wrapper .feedback-title.incorrect { color: var(--incorrect-text); }\n        #tableau-quiz-app-wrapper .feedback-text { color: var(--text-secondary); margin-top: 0.25rem; }\n        #hint-container { margin-top: 2rem; }\n        #hint-toggle { color: var(--primary-blue); background: none; border: none; padding: 0; font-weight: 500; cursor: pointer; display: flex; align-items: center; gap: 0.25rem; }\n        #hint-toggle svg { width: 20px; height: 20px; transition: transform 0.2s; }\n        #hint-toggle.open svg { transform: rotate(180deg); }\n        #hint-text { margin-top: 0.5rem; color: var(--text-secondary); padding: 1rem; background-color: var(--option-hover-bg); border-radius: 8px; font-size: 0.9rem; }\n        \n        \/* --- Quiz Footer --- *\/\n        #quiz-footer, #analysis-footer { display: flex; justify-content: space-between; padding: 1.5rem 3rem; gap: 1rem; border-top: 1px solid var(--border-grey); }\n        #analysis-footer { justify-content: flex-end; }\n        \n        \/* --- User Details & Analysis --- *\/\n        #user-details-form-container { max-width: 500px; margin: 2rem auto; }\n        #user-details-form .form-group { margin-bottom: 1rem; }\n        #user-details-form label { display: block; font-weight: 500; margin-bottom: 0.5rem; text-align: left;}\n        #user-details-form input { width: 100%; padding: 0.75rem; border: 1px solid var(--border-grey); border-radius: 4px; font-size: 1rem; }\n        #user-details-form input:focus { outline: none; border-color: var(--primary-blue); box-shadow: 0 0 0 2px rgba(26, 115, 232, 0.2); }\n        #user-details-form small { display: block; margin-top: 0.5rem; color: var(--text-secondary); font-size: 0.8rem; text-align: left;}\n        #tableau-quiz-app-wrapper .form-actions { display: flex; gap: 1rem; margin-top: 1.5rem; }\n        #tableau-quiz-app-wrapper .form-actions .quiz-btn { flex: 1; }\n        #tableau-quiz-app-wrapper .category-analysis { margin-bottom: 2rem; }\n        #tableau-quiz-app-wrapper .category-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.5rem; }\n        #tableau-quiz-app-wrapper .category-header h3 { margin: 0; font-size: 1rem; }\n        #tableau-quiz-app-wrapper .category-score { font-weight: 500; }\n        #tableau-quiz-app-wrapper .progress-bar-bg { width: 100%; height: 8px; background: #eee; border-radius: 4px; overflow: hidden; }\n        #tableau-quiz-app-wrapper .progress-bar-fg { height: 100%; background: var(--primary-blue); border-radius: 4px; transition: width 0.5s ease-out; }\n        #tableau-quiz-app-wrapper .question-breakdown { font-size: 0.875rem; margin-top: 1rem; text-align: left; }\n        #tableau-quiz-app-wrapper .question-breakdown strong { color: var(--correct-text); }\n        #tableau-quiz-app-wrapper .question-breakdown span { color: var(--incorrect-text); }\n        #tableau-quiz-app-wrapper .hidden { display: none; }\n\n        \/* --- START: New Results View Styles --- *\/\n        #results-view .container { max-width: 1100px; margin: 0 auto; padding: 2rem 1rem; color: #1A202C;}\n        #results-view .page-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 2rem; flex-wrap: wrap; }\n        #results-view .header-title h1 { font-size: 2rem; font-weight: 700; margin: 0; }\n        #results-view .header-title p { color: #4A5568; margin-top: 0.25rem; }\n        #results-view .restart-quiz-btn { display: flex; align-items: center; gap: 0.5rem; padding: 0.6rem 1.2rem; background-color: #4353FF; border: 1px solid #E2E8F0; border-radius: 0.5rem; font-size: 0.875rem; font-weight: 600; color: white; cursor: pointer; transition: background-color 0.2s; margin-top: 1rem; }\n        #results-view .restart-quiz-btn:hover { background-color: #4353FF; }\n        #results-view .main-content { display: grid; grid-template-columns: 1fr; gap: 2rem; }\n        #results-view .card { background-color: #ffffff; padding: 1.5rem; }\n        #results-view .score-card { text-align: center; color:gray;}\n        #results-view .score-card h2 { font-size: 1.125rem; font-weight: 600; margin-top: 0; margin-bottom: 1rem; }\n        #results-view .score-visual { position: relative; width: 10rem; height: 10rem; margin: 0 auto; }\n        #results-view .score-visual svg { width: 100%; height: 100%; }\n        #results-view .progress-ring-circle { transition: stroke-dashoffset 0.8s ease-out; transform: rotate(-90deg); transform-origin: 50% 50%; }\n        #results-view .score-text { position: absolute; top: 0; left: 0; right: 0; bottom: 0; display: flex; flex-direction: column; justify-content: center; align-items: center; }\n        #results-view .score-text .score-value { font-size: 2.25rem; font-weight: 700; }\n        #results-view .score-text .score-value span { font-size: 1.5rem; color: #4A5568; }\n        #results-view .score-text .score-label { font-size: 0.875rem; color: #4A5568; margin-top: 0.25rem; }\n        #results-view .score-breakdown { margin-top: 1.5rem; display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; }\n        #results-view .score-breakdown div span { font-weight: 700; font-size: 1.125rem; }\n        #results-view .score-breakdown div p { font-size: 0.75rem; color: #4A5568; margin: 0; }\n        #results-view .text-correct { color: #22c55e; }\n        #results-view .text-incorrect { color: #ef4444; }\n        #results-view .text-skipped { color: #6b7280; }\n        #results-view .analysis-card { display: flex; align-items: flex-start; gap: 1rem; justify-content: center; color:gray; }\n        #results-view .analysis-icon { flex-shrink: 0; width: 2.5rem; height: 2.5rem; background-color: #F0F1FF; border-radius: 0.5rem; display: flex; align-items: center; justify-content: center; }\n        #results-view .analysis-content h3 { font-weight: 600; margin: 0; font-size: 1.2rem; }\n        #results-view .analysis-content p { font-size: 0.875rem; color: #4A5568; margin: 0.25rem 0 1rem 0; }\n        #results-view .primary-button { width: 100%; padding: 0.6rem 1.2rem; background-color: #4353FF; border-radius: 0.5rem; font-size: 0.875rem; font-weight: 600; color: #ffffff; border: none; cursor: pointer; transition: background-color 0.2s; }\n        #results-view .primary-button:hover { background-color: #2539cc; }\n        #results-view .learning-journey-card h2 { font-size: 1.5rem; font-weight: 700; margin-top: 0; }\n        #results-view .learning-journey-card > p { color: #4A5568; margin: 0.25rem 0 2rem 0; }\n        #results-view .course-list { display: flex; flex-direction: column; gap: 1rem; }\n        #results-view .course-card { padding: 1.25rem; border: 1px solid #E2E8F0; border-radius: 0.75rem; transition: box-shadow 0.2s, border-color 0.2s; }\n        #results-view .course-card:hover { border-color: #4353FF; box-shadow: 0 4px 6px -1px rgb(0 0 0 \/ 0.1), 0 2px 4px -2px rgb(0 0 0 \/ 0.1); }\n        #results-view .course-card-content { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 3px; }\n        #results-view .course-details h3 { font-weight: 700; margin: 0; font-size: 1rem; }\n        #results-view .course-details p { font-size: 0.875rem; color: #4A5568; margin-top: 0.25rem; max-width: 36rem; }\n        #results-view .course-button { margin-top: 1rem; flex-shrink: 0; padding: 0.3rem 1rem; border-radius: 0.5rem; font-size: 0.875rem; font-weight: 600; cursor: pointer; border: 1px solid #4353FF; transition: background-color 0.2s; text-decoration: none; display: inline-block; }\n        #results-view .btn-primary { background-color: #4353FF; color: #ffffff; }\n        #results-view .btn-primary:hover { background-color: #2539cc; }\n        #results-view .page-footer { margin-top: 2rem; padding: 2rem; }\n        #results-view .footer-content { display: grid; grid-template-columns: 1fr; gap: 2rem; }\n        #results-view .footer-column h3 { font-size: 1.125rem; font-weight: 700; margin: 0; }\n        #results-view .footer-column p { font-size: 0.875rem; color: #4A5568; margin-top: 0.25rem; margin-bottom: 1rem; }\n        #results-view .resource-links { display: flex; flex-wrap: wrap; gap: 0.5rem; }\n        #results-view .resource-link { padding: 0.5rem 1rem; background-color: #f3f4f6; color: #4A5568; font-size: 0.875rem; font-weight: 500; border-radius: 9999px; text-decoration: none; transition: background-color 0.2s, color 0.2s; }\n        #results-view .resource-link:hover { background-color: #F0F1FF; color: #4353FF; }\n        #results-view .share-icons { display: flex; align-items: center; gap: 0.75rem; }\n        #results-view .share-icon { width: 2.5rem; height: 2.5rem; display: flex; align-items: center; justify-content: center; background-color: #f3f4f6; border-radius: 9999px; color: #4A5568; transition: background-color 0.2s; }\n        #results-view .share-icon:hover { background-color: #e5e7eb; }\n        #results-view .share-icon svg { width: 1.25rem; height: 1.25rem; }\n        \/* --- END: New Results View Styles --- *\/\n\n        \/* --- Media Queries (Responsiveness) --- *\/\n        @media (max-width: 768px) {\n            #main-menu-view, #quiz-body, #user-details-view, #analysis-view, #results-view .container { padding: 1.5rem; }\n            #tableau-quiz-app-wrapper .quiz-header h1 { font-size: 2rem; }\n            #tableau-quiz-app-wrapper .difficulty-grid { grid-template-columns: 1fr; }\n            #progress-stepper { display: none; }\n            #quiz-header h1 { font-size: 1rem; }\n            #quiz-footer { flex-direction: column-reverse; gap: 5rem; margin-bottom: -20px; }\n            #quiz-footer>div { display: flex; justify-content: flex-end; width: 100%; gap: 0.5rem; }\n        }\n        @media (min-width: 640px) {\n            #results-view .page-header { flex-wrap: nowrap; }\n            #results-view .restart-quiz-btn { margin-top: 0; }\n            #results-view .course-button { margin-top: 0; width: auto; }\n            #results-view .course-card-content { flex-wrap: nowrap; }\n        }\n        @media (min-width: 768px) {\n            #results-view .footer-content { grid-template-columns: 2fr 1fr; }\n        }\n        @media (min-width: 1024px) {\n            #results-view .main-content { grid-template-columns: 1fr 2fr; }\n        }\n    <\/style>\n    <div id=\"quiz-app-container\">\n        <div id=\"main-menu-view\" class=\"quiz-screen active\">\n            <div class=\"quiz-header\"><h1 id=\"tableau-quiz-challenge\">Tableau Quiz Challenge<\/h1><p>Test your Tableau knowledge with our comprehensive MCQs. Choose your difficulty and share your score with friends!<\/p><\/div>\n            <div class=\"difficulty-grid\">\n                <div class=\"difficulty-card beginner\" onclick=\"showUserDetailsView('beginner')\">\n                    <div class=\"icon\">\u2b50<\/div><h2 id=\"beginner\">Beginner<\/h2><p>Perfect for Tableau newcomers<\/p>\n                    <div class=\"features\"><p>\u2022 Dimensions & Measures<\/p><p>\u2022 Tableau UI & Shelves<\/p><p>\u2022 Basic Chart Types<\/p><p>\u2022 10 Questions<\/p><\/div>\n                    <button class=\"quiz-btn primary start-btn\">Start Beginner Quiz<\/button>\n                <\/div>\n                <div class=\"difficulty-card intermediate\" onclick=\"showUserDetailsView('intermediate')\">\n                    <div class=\"icon\">\ud83c\udfc6<\/div><h2 id=\"intermediate\">Intermediate<\/h2><p>For those with some experience<\/p>\n                    <div class=\"features\"><p>\u2022 Calculated Fields<\/p><p>\u2022 Dashboards & Actions<\/p><p>\u2022 Joins & Blends<\/p><p>\u2022 15 Questions<\/p><\/div>\n                    <button class=\"quiz-btn primary start-btn\">Start Intermediate Quiz<\/button>\n                <\/div>\n                <div class=\"difficulty-card advanced\" onclick=\"showUserDetailsView('advanced')\">\n                    <div class=\"icon\">\ud83e\udd47<\/div><h2 id=\"advanced\">Advanced<\/h2><p>A challenge for Tableau experts<\/p>\n                    <div class=\"features\"><p>\u2022 LOD Expressions<\/p><p>\u2022 Table Calculations<\/p><p>\u2022 Performance Tuning<\/p><p>\u2022 15 Questions<\/p><\/div>\n                    <button class=\"quiz-btn primary start-btn\">Start Advanced Quiz<\/button>\n                <\/div>\n            <\/div>\n            <div class=\"quiz-features-section\">\n                <h2 id=\"quiz-features\">Quiz Features<\/h2>\n                <div class=\"features-grid\">\n                    <div class=\"feature-item\"><div class=\"icon\">\ud83e\udde0<\/div><p>Detailed Feedback<\/p><\/div>\n                    <div class=\"feature-item\"><div class=\"icon\">\ud83d\udcca<\/div><p>Performance Analysis<\/p><\/div>\n                    <div class=\"feature-item\"><div class=\"icon\">\ud83d\udca1<\/div><p>Helpful Hints<\/p><\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div id=\"user-details-view\" class=\"quiz-screen\">\n            <div class=\"quiz-header\">\n                <h1 id=\"almost-there\">Almost There!<\/h1>\n                <p>Just a few details before you start the quiz.<\/p>\n            <\/div>\n            <div id=\"user-details-form-container\">\n               <form id=\"user-details-form\">\n                    <div class=\"form-group\"><label for=\"user-name\">Your Name<\/label><input type=\"text\" id=\"user-name\" name=\"user-name\" required><\/div>\n                    <div class=\"form-group\"><label for=\"user-email\">Your Email<\/label><input type=\"email\" id=\"user-email\" name=\"user-email\" required><\/div>\n                    <small>You will also get free access to exclusive content through email.<\/small>\n                    <div class=\"form-actions\">\n                        <button type=\"button\" id=\"back-to-menu-btn\" class=\"quiz-btn\">Back to Menu<\/button>\n                        <button type=\"submit\" class=\"quiz-btn primary\">Let's Go!<\/button>\n                    <\/div>\n                <\/form>\n            <\/div>\n        <\/div>\n        <div id=\"quiz-view\" class=\"quiz-screen\">\n            <header id=\"quiz-header\">\n                <h1 id=\"tableau-quiz\">Tableau Quiz<\/h1>\n                <div id=\"progress-stepper\"><\/div>\n                <div class=\"header-actions\"><div id=\"timer\">00:00<\/div><div id=\"question-count\">1\/10<\/div><\/div>\n            <\/header>\n            <main id=\"quiz-body\">\n                <h2 class=\"tableau-quiz-question-text\" style=\"font-size: 22px;\" class=\"tableau-quiz-question-text\" style=\"font-size: 22px;\" id=\"question-will-appear-here\">Question will appear here.<\/h2>\n                <div id=\"options-container\"><\/div>\n                <div id=\"hint-container\">\n                    <button id=\"hint-toggle\">Show hint <svg viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z\"><\/path><\/svg><\/button>\n                    <div id=\"hint-text\" class=\"hidden\">Hint text goes here.<\/div>\n                <\/div>\n            <\/main>\n            <footer id=\"quiz-footer\">\n                <button class=\"quiz-btn\" onclick=\"showMainMenu(true)\">Back to Menu<\/button>\n                <div><button id=\"back-btn\" class=\"quiz-btn\">Back<\/button><button id=\"next-btn\" class=\"quiz-btn primary\">Next<\/button><\/div>\n            <\/footer>\n        <\/div>\n        \n        <div id=\"results-view\" class=\"quiz-screen\">\n            <div class=\"container\">\n                <header class=\"page-header\">\n                    <div class=\"header-title\">\n                        <h1 id=\"quiz-completed\">Quiz Completed!<\/h1>\n                        <p>Great effort! Here's a summary of your performance.<\/p>\n                    <\/div>\n                    <button class=\"restart-quiz-btn\" onclick=\"showMainMenu(false)\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\"\/><path d=\"M3 3v5h5\"\/><\/svg>\n                        <span>Restart Quiz \/ Main Menu<\/span>\n                    <\/button>\n                <\/header>\n        \n                <main class=\"main-content\">\n                    <aside class=\"left-column\">\n                        <div class=\"card score-card\">\n                            <h2 id=\"your-score\">Your Score<\/h2>\n                            <div class=\"score-visual\">\n                                 <svg viewBox=\"0 0 100 100\">\n                                    <circle stroke=\"#e5e7eb\" stroke-width=\"10\" fill=\"transparent\" r=\"45\" cx=\"50\" cy=\"50\" \/>\n                                    <circle class=\"progress-ring-circle\" stroke=\"#4353FF\" stroke-width=\"10\" stroke-dasharray=\"282.6\" stroke-dashoffset=\"282.6\" stroke-linecap=\"round\" fill=\"transparent\" r=\"45\" cx=\"50\" cy=\"50\" id=\"score-circle\" \/>\n                                <\/svg>\n                                <div class=\"score-text\">\n                                    <span class=\"score-value\" id=\"new-score-value\">0<span>\/10<\/span><\/span>\n                                    <span class=\"score-label\" id=\"new-accuracy-label\">0% Accuracy<\/span>\n                                <\/div>\n                            <\/div>\n                            <div class=\"score-breakdown\">\n                                <div><span class=\"text-correct\" id=\"new-right-value\">0<\/span><p>Correct<\/p><\/div>\n                                <div><span class=\"text-incorrect\" id=\"new-wrong-value\">0<\/span><p>Incorrect<\/p><\/div>\n                                <div><span class=\"text-skipped\" id=\"new-skipped-value\">10<\/span><p>Skipped<\/p><\/div>\n                            <\/div>\n                        <\/div>\n        \n                        <div class=\"card analysis-card\" style=\"margin-top: 2rem;\">\n                            <div class=\"analysis-icon\">\n                               <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#4353FF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"><\/path><\/svg>\n                            <\/div>\n                            <div class=\"analysis-content\">\n                                <h3 id=\"strengths-and-growth-areas\">Strengths and growth areas<\/h3>\n                                <p>Get a summary of your key strengths and discover areas where you can focus your studies.<\/p>\n                                <button class=\"primary-button\" id=\"analyse-btn\">Analyze my performance<\/button>\n                            <\/div>\n                        <\/div>\n                    <\/aside>\n        \n                    <section class=\"right-column\">\n                        <div class=\"card learning-journey-card\">\n                            <h2 id=\"continue-your-learning-journey\">Continue Your Learning Journey<\/h2>\n                            <p>Here are some courses that can help you level up your Tableau skills.<\/p>\n                            <div class=\"course-list\">\n                                <div class=\"course-card\">\n                                    <div class=\"course-card-content\">\n                                        <div class=\"course-details\">\n                                            <h3 id=\"data-visualization-using-tableau-for-beginners\">Data Visualization using Tableau for Beginners<\/h3>\n                                            <p>Master data visualization with Tableau in this free beginner course. Learn to create dashboards, explore data, and turn insights into clear visuals using Tableau\u2019s powerful tools.<\/p>\n                                        <\/div>\n                                        <a href=\"https:\/\/www.mygreatlearning.com\/academy\/learn-for-free\/courses\/data-visualization-using-tableau?utm_source=blog\" target=\"_blank\" class=\"course-button btn-primary\" rel=\"noopener\">Enroll for Free<\/a>\n                                    <\/div>\n                                <\/div>\n                                <div class=\"course-card\">\n                                    <div class=\"course-card-content\">\n                                        <div class=\"course-details\">\n                                            <h3 id=\"tableau-data-visualization-essentials\">Tableau Data Visualization Essentials<\/h3>\n                                            <p>Advance your Tableau skills by building interactive dashboards and visual stories with guided projects. Learn visual analytics, parameters, and storytelling essentials to stand out in business intelligence roles.<\/p>\n                                        <\/div>\n                                        <a href=\"https:\/\/www.mygreatlearning.com\/academy\/premium\/tableau-data-visualization-essentials?utm_source=blog\" target=\"_blank\" class=\"course-button btn-primary\" rel=\"noopener\">Enroll Now<\/a>\n                                    <\/div>\n                                <\/div>\n                                 <div class=\"course-card\">\n                                    <div class=\"course-card-content\">\n                                        <div class=\"course-details\">\n                                            <h3 id=\"data-visualization-with-power-bi\">Data Visualization with Power BI<\/h3>\n                                            <p>Learn to turn data into powerful, interactive visuals using Power BI. Build dashboards, explore BI fundamentals, and make data-driven decisions with real-world visualization skills.<\/p>\n                                        <\/div>\n                                        <a href=\"https:\/\/www.mygreatlearning.com\/academy\/learn-for-free\/courses\/data-visualization-with-power-bi?utm_source=blog\" target=\"_blank\" class=\"course-button btn-primary\" rel=\"noopener\">Enroll for Free<\/a>\n                                    <\/div>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/section>\n                <\/main>\n                \n                <footer class=\"card page-footer\">\n                    <div class=\"footer-content\">\n                        <div class=\"footer-column\">\n                            <h3 id=\"explore-more-resources\">Explore More Resources<\/h3>\n                            <p class=\"text-sm text-brand-text-secondary mt-1 mb-4\">Dive deeper into topics that interest you.<\/p>\n                            <div class=\"resource-links\">\n                                <a href=\"https:\/\/www.mygreatlearning.com\/blog\/quizzes\/\" class=\"resource-link\">Quizzes and MCQs<\/a>\n                                <a href=\"https:\/\/www.mygreatlearning.com\/blog\/tools-and-compilers\/\" class=\"resource-link\">Online Compilers<\/a>\n                                <a href=\"https:\/\/www.mygreatlearning.com\/blog\/exercises\/\" class=\"resource-link\">Coding Practice<\/a>\n                                <a href=\"https:\/\/www.mygreatlearning.com\/blog\/interview-questions\/\" class=\"resource-link\">Interview Questions<\/a>\n                                <a href=\"https:\/\/www.mygreatlearning.com\/blog\/careers-and-roadmap\/\" class=\"resource-link\">Careers and Roadmaps<\/a>\n                                <a href=\"https:\/\/www.mygreatlearning.com\/blog\/project-ideas\/\" class=\"resource-link\">Project Ideas<\/a>\n                            <\/div>\n                        <\/div>\n        \n                        <div class=\"footer-column\">\n                             <h3 id=\"share-your-achievement\">Share Your Achievement<\/h3>\n                             <p>Let your network know about your progress.<\/p>\n                             <div class=\"share-icons\">\n                                 <a href=\"#\" id=\"new-share-whatsapp\" class=\"share-icon\" aria-label=\"WhatsApp\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" width=\"128\" height=\"128\" aria-labelledby=\"whTitle\" role=\"img\">\n                                    <title id=\"whTitle\">WhatsApp-style icon (custom color #4a5568)<\/title>\n                                    <defs>\n                                        <filter id=\"shadow\" x=\"-50%\" y=\"-50%\" width=\"200%\" height=\"200%\"><feDropShadow dx=\"0\" dy=\"1.5\" stdDeviation=\"1.2\" flood-color=\"#000\" flood-opacity=\"0.18\"\/><\/filter>\n                                        <linearGradient id=\"baseGrad\" x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\"><stop offset=\"0%\" stop-color=\"#6b7280\"\/><stop offset=\"100%\" stop-color=\"#4a5568\"\/><\/linearGradient>\n                                    <\/defs>\n                                    <path d=\"M12 2C6.486 2 2 6.486 2 12c0 1.653.403 3.213 1.107 4.595L2 22l5.467-1.446A9.963 9.963 0 0 0 12 22c5.514 0 10-4.486 10-10S17.514 2 12 2z\" fill=\"#000\" opacity=\"0\" filter=\"url(#shadow)\"\/>\n                                    <path d=\"M12 2C6.486 2 2 6.486 2 12c0 1.653.403 3.213 1.107 4.595L2 22l5.467-1.446A9.963 9.963 0 0 0 12 22c5.514 0 10-4.486 10-10S17.514 2 12 2z\" fill=\"url(#baseGrad)\" stroke=\"#ffffff\" stroke-width=\"0.9\" stroke-linejoin=\"round\"\/>\n                                    <path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.472-.149-.672.15-.199.297-.768.967-.941 1.165-.173.199-.347.223-.644.074-.297-.149-1.255-.462-2.39-1.475-.884-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.52.151-.173.201-.298.301-.497.1-.199.05-.373-.025-.522-.075-.148-.672-1.612-.922-2.206-.242-.579-.487-.5-.672-.51l-.576-.01c-.199 0-.523.074-.798.373-.273.297-1.04 1.017-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.095 3.2 5.076 4.487 2.981 1.289 2.981.86 3.517.807.536-.05 1.758-.718 2.006-1.41.248-.692.248-1.285.173-1.41-.074-.124-.273-.198-.57-.347z\" fill=\"#ffffff\"\/>\n                                <\/svg><\/a>\n                                <a href=\"#\" id=\"new-share-linkedin\" class=\"share-icon\" aria-label=\"LinkedIn\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5A2,2 0 0,1 5,3H19M18.5,18.5V13.2A3.26,3.26 0 0,0 15.24,9.94C14.39,9.94 13.4,10.43 12.92,11.24V10.13H10.13V18.5H12.92V13.57C12.92,12.8 13.54,12.17 14.31,12.17A1.4,1.4 0 0,1 15.71,13.57V18.5H18.5M6.88,8.56A1.68,1.68 0 0,0 8.56,6.88C8.56,6 7.81,5.25 6.88,5.25A1.69,1.69 0 0,0 5.2,6.88C5.2,7.81 5.95,8.56 6.88,8.56M8.27,18.5V10.13H5.5V18.5H8.27Z\" \/><\/svg><\/a>\n                                <a href=\"#\" id=\"new-share-telegram\" class=\"share-icon\" aria-label=\"Telegram\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M2.01 21L23 12L2.01 3L2 10L17 12L2 14L2.01 21Z\" \/><\/svg><\/a>\n                                <a href=\"#\" id=\"new-share-twitter\" class=\"share-icon\" aria-label=\"Twitter\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M22.46,6C21.69,6.35 20.86,6.58 20,6.69C20.88,6.16 21.56,5.32 21.88,4.31C21.05,4.81 20.13,5.16 19.16,5.36C18.37,4.5 17.26,4 16,4C13.65,4 11.73,5.92 11.73,8.29C11.73,8.63 11.77,8.96 11.84,9.27C8.28,9.09 5.11,7.38 2.9,4.79C2.53,5.42 2.33,6.15 2.33,6.94C2.33,8.43 3.11,9.75 4.19,10.55C3.47,10.53 2.8,10.33 2.2,10.03C2.2,10.05 2.2,10.07 2.2,10.08C2.2,12.24 3.73,14.04 5.7,14.44C5.31,14.55 4.91,14.61 4.5,14.61C4.22,14.61 3.95,14.58 3.69,14.53C4.24,16.33 5.95,17.55 7.95,17.59C6.46,18.8 4.57,19.56 2.5,19.56C2.17,19.56 1.85,19.54 1.53,19.5C3.55,20.84 5.9,21.6 8.41,21.6C16,21.6 20.34,15.22 20.34,9.73C20.34,9.56 20.33,9.4 20.32,9.23C21.16,8.63 21.88,7.87 22.46,7.01C21.74,7.33 20.97,7.55 20.18,7.65C20.99,7.16 21.64,6.38 21.96,5.43L22.46,6Z\" \/><\/svg><\/a>\n                             <\/div>\n                        <\/div>\n                    <\/div>\n                <\/footer>\n            <\/div>\n        <\/div>\n\n        <div id=\"analysis-view\" class=\"quiz-screen\">\n            <header id=\"analysis-header\"><h1 id=\"performance-analysis\">Performance Analysis<\/h1><\/header>\n            <main id=\"analysis-body\"><\/main>\n            <footer id=\"analysis-footer\">\n                <button id=\"back-to-results-btn\" class=\"quiz-btn primary\">Back to Results<\/button>\n            <\/footer>\n        <\/div>\n    <\/div>\n    <script>\n    document.addEventListener('DOMContentLoaded', function() {\n        \/\/ --- DATA ---\n        const quizData = {\n            beginner: [\n                { category: \"Fundamentals\", question: \"In Tableau, what is a 'Dimension'?\", options: { A: \"A field of quantitative, numerical data\", B: \"A field of qualitative, categorical data\", C: \"A calculated field\", D: \"A type of chart\" }, answer: \"B\", hint: \"Dimensions affect the level of detail and are often used for labels and headers.\", feedback: { B: \"Correct! Dimensions are fields that categorize your data, such as 'Category', 'Region', or 'Customer Name'.\" } },\n                { category: \"Fundamentals\", question: \"What does the blue color of a pill in a Tableau view signify?\", options: { A: \"It is a measure\", B: \"It is continuous\", C: \"It is discrete\", D: \"It is a calculated field\" }, answer: \"C\", hint: \"Blue pills create headers, while green pills create axes.\", feedback: { C: \"Correct! Blue pills signify discrete fields, which have a finite number of distinct values and create labels or headers in the view.\" } },\n                { category: \"Fundamentals\", question: \"What is the primary difference between a live connection and an extract?\", options: { A: \"Live connections are faster\", B: \"Extracts are snapshots of the data stored in memory\", C: \"Live connections cannot be refreshed\", D: \"Extracts are always real-time\" }, answer: \"B\", hint: \"One queries the database directly, the other queries a saved copy of the data.\", feedback: { B: \"Correct! An extract is a saved subset of a data source that can improve performance by reducing query load on the original database.\" } },\n                { category: \"UI\", question: \"What is the primary purpose of the 'Show Me' panel in Tableau?\", options: { A: \"To connect to data\", B: \"To write complex calculations\", C: \"To quickly create different chart types\", D: \"To format the dashboard\" }, answer: \"C\", hint: \"It provides a gallery of recommended visualizations based on the fields you've selected.\", feedback: { C: \"Correct! 'Show Me' is a feature that helps users select appropriate chart types for the data they have selected.\" } },\n                { category: \"Components\", question: \"Which component in Tableau is used to combine multiple worksheets into a single, interactive view?\", options: { A: \"A Story\", B: \"A Data Source\", C: \"A Worksheet\", D: \"A Dashboard\" }, answer: \"D\", hint: \"This is where you bring multiple views together to create a comprehensive analysis.\", feedback: { D: \"Correct! A dashboard is a collection of several worksheets and supporting information shown in a single place so you can compare and monitor a variety of data simultaneously.\" } },\n                { category: \"File Types\", question: \"Which Tableau file type includes both the workbook and a copy of the data source?\", options: { A: \".twb\", B: \".tde\", C: \".twbx\", D: \".tds\" }, answer: \"C\", hint: \"The 'x' stands for 'packaged,' meaning everything is included in one file.\", feedback: { C: \"Correct! A .twbx (Tableau Packaged Workbook) bundles the original .twb workbook with the data, making it easy to share with others who don't have access to the original data source.\" } },\n                { category: \"Shelves\", question: \"What is the purpose of the 'Pages' shelf?\", options: { A: \"To filter the data\", B: \"To color the marks\", C: \"To create an animation or sequence of views\", D: \"To determine the size of marks\" }, answer: \"C\", hint: \"It allows you to break a view into a series of pages, which you can cycle through.\", feedback: { C: \"Correct! Placing a dimension on the Pages shelf creates a set of pages, with a different view on each page, allowing you to see how a measure changes over time or by category.\" } },\n                { category: \"Fundamentals\", question: \"In Tableau, what is a 'Measure'?\", options: { A: \"A field of qualitative, categorical data\", B: \"A field that contains textual information\", C: \"A field of quantitative, numerical data that can be aggregated\", D: \"A filter applied to the view\" }, answer: \"C\", hint: \"Measures are the numbers you want to analyze, like Sales, Profit, or Quantity.\", feedback: { C: \"Correct! Measures are numeric fields that you can perform mathematical operations on, such as summing them up or finding the average.\" } },\n                { category: \"UI\", question: \"Which part of the Tableau interface is used to control the visual properties of your data, like color, size, and shape?\", options: { A: \"The Data pane\", B: \"The Filters shelf\", C: \"The Marks card\", D: \"The Analytics pane\" }, answer: \"C\", hint: \"This card has several properties that you can drag fields onto.\", feedback: { C: \"Correct! The Marks card is where you drag fields to control mark properties such as type, color, size, label, detail, and tooltip.\" } },\n                { category: \"Data Connections\", question: \"When you combine data from two tables based on a common field, what is this process called?\", options: { A: \"Blending\", B: \"Joining\", C: \"Creating a Set\", D: \"Building a Hierarchy\" }, answer: \"B\", hint: \"This is a standard database operation for combining tables at the row level.\", feedback: { B: \"Correct! Joining is the method for combining related data from different tables based on a shared field or key.\" } }\n            ],\n            intermediate: [\n                { category: \"Calculations\", question: \"What is a calculated field?\", options: { A: \"A field that is automatically generated by Tableau\", B: \"A new field that you create by using a formula on existing fields\", C: \"A type of filter\", D: \"A connection to a database\" }, answer: \"B\", hint: \"This allows you to create new data from your existing data, like calculating Profit Ratio from Profit and Sales.\", feedback: { B: \"Correct! Calculated fields allow you to create new dimensions or measures that are not in your original data source.\" } },\n                { category: \"Filters\", question: \"What is a 'Context Filter' in Tableau?\", options: { A: \"A filter that applies to all worksheets\", B: \"A filter that is applied before any other filter in the view\", C: \"A filter that depends on user input\", D: \"A filter that formats the text\" }, answer: \"B\", hint: \"Adding a filter to 'context' creates a temporary table that other filters will query against, improving performance.\", feedback: { B: \"Correct! A context filter is an independent filter that creates a separate, smaller dataset from the original, which all other filters then apply to.\" } },\n                { category: \"Charts\", question: \"A 'Dual Axis' chart is useful for...?\", options: { A: \"Showing two different chart types on the same axis\", B: \"Showing two measures with different scales on the same chart\", C: \"Filtering a chart based on another chart\", D: \"Animating a chart over time\" }, answer: \"B\", hint: \"This is ideal when you want to compare two measures, like Sales (in dollars) and Quantity (in counts), on the same graph.\", feedback: { B: \"Correct! A dual-axis chart allows you to display two measures with different scales on two separate axes (one on the left, one on the right).\" } },\n                { category: \"Interactivity\", question: \"What is a 'Parameter' in Tableau?\", options: { A: \"A container for a single value that can be used in calculations and filters\", B: \"A connection to a live data source\", C: \"A group of related data fields\", D: \"A formatting setting for a dashboard\" }, answer: \"A\", hint: \"Parameters allow the end-user to input a value that can dynamically change the view.\", feedback: { A: \"Correct! Parameters are dynamic values that can replace constant values in calculations, filters, and reference lines, enabling interactivity.\" } },\n                { category: \"Data Organization\", question: \"What is a key difference between a 'Group' and a 'Set'?\", options: { A: \"Groups can be used in calculations, but Sets cannot\", B: \"Sets are dynamic and can be based on conditions, while Groups are static\", C: \"Groups combine multiple dimensions, while Sets combine measures\", D: \"There is no difference\" }, answer: \"B\", hint: \"Sets divide your data into two categories: 'In' or 'Out'. Groups are simpler combinations of members within a single dimension.\", feedback: { B: \"Correct! Sets can be computed based on conditions or user interaction (making them dynamic), whereas Groups are manually created, static combinations of dimension members.\" } },\n                { category: \"Data Connections\", question: \"What is the main difference between 'Data Blending' and 'Joining'?\", options: { A: \"Joining works on data from the same source, while Blending works on data from different sources\", B: \"Blending is faster than joining\", C: \"Joining is performed at the row level, while Blending is performed at the aggregate level after worksheets are created\", D: \"They are the same thing\" }, answer: \"C\", hint: \"Blending happens 'post-query' within a worksheet, while joining happens 'pre-query' at the data source level.\", feedback: { C: \"Correct! Joins combine data at the row level in the data source tab. Blending queries each data source independently and then aggregates the results together in the view.\" } },\n                { category: \"Interactivity\", question: \"Which type of Dashboard Action allows you to navigate to a web page?\", options: { A: \"Filter Action\", B: \"Highlight Action\", C: \"Set Action\", D: \"URL Action\" }, answer: \"D\", hint: \"The name of the action directly describes its function.\", feedback: { D: \"Correct! A URL Action is a hyperlink that points to a web page, file, or other web-based resource outside of Tableau.\" } },\n                { category: \"UI\", question: \"What is the purpose of the 'Analytics' pane?\", options: { A: \"To connect to different data sources\", B: \"To write custom SQL queries\", C: \"To drag and drop analytical objects like trend lines, forecasts, and reference lines into the view\", D: \"To manage user permissions\" }, answer: \"C\", hint: \"It provides quick access to common analytical tools without writing complex formulas.\", feedback: { C: \"Correct! The Analytics pane provides a simple way to add reference lines, box plots, trend lines, forecasts, and other analytical objects to your visualization.\" } },\n                { category: \"Data Organization\", question: \"What is a 'Hierarchy' in Tableau?\", options: { A: \"A method for filtering data\", B: \"A way to organize related dimensions for easy drill-down\", C: \"A type of table calculation\", D: \"A connection to a server\" }, answer: \"B\", hint: \"For example, you could create a Location hierarchy like Country -> State -> City.\", feedback: { B: \"Correct! A hierarchy allows you to group related fields so you can quickly drill down (or up) to different levels of detail in your viz.\" } },\n                { category: \"Calculations\", question: \"If you want to create categories for a measure, such as 'Small', 'Medium', and 'Large' sales, what would you create?\", options: { A: \"A Set\", B: \"A Hierarchy\", C: \"A Group\", D: \"Bins\" }, answer: \"D\", hint: \"This feature is specifically designed for converting continuous measures into discrete groups.\", feedback: { D: \"Correct! Bins are used to convert a continuous measure into a set of equal-sized intervals, or discrete categories.\" } },\n                { category: \"Charts\", question: \"A Gantt chart is most commonly used for visualizing what?\", options: { A: \"Geographical data\", B: \"Proportions of a whole\", C: \"Project schedules and task durations\", D: \"The distribution of a single variable\" }, answer: \"C\", hint: \"Think of project management timelines.\", feedback: { C: \"Correct! Gantt charts are excellent for displaying the start and end times of tasks or activities over a period of time.\" } },\n                { category: \"Calculations\", question: \"The ATTR() function is used to...\", options: { A: \"Calculate the average of a field\", B: \"Return the value of an expression if it has a single value for all rows in the group, otherwise display an asterisk (*)\", C: \"Convert a string to a date\", D: \"Count the number of distinct items\" }, answer: \"B\", hint: \"It's useful for checking if a field has a consistent value at a certain level of detail.\", feedback: { B: \"Correct! ATTR() is an aggregation that checks for a single value. It's often used when a dimension needs to be an aggregate in a calculation.\" } },\n                { category: \"Filters\", question: \"What is a cascading filter?\", options: { A: \"A filter that applies to multiple worksheets at once\", B: \"A filter where the selection in the first filter limits the options in the second filter\", C: \"A filter that is applied after all calculations\", D: \"A filter based on a date range\" }, answer: \"B\", hint: \"For example, selecting 'USA' in a Country filter would then only show states within the USA in the State filter.\", feedback: { B: \"Correct! Cascading filters create a dependency where one filter's choices dynamically update the available choices in another filter, guiding the user's analysis.\" } },\n                { category: \"Data Organization\", question: \"What is a Combined Field in Tableau?\", options: { A: \"A field that combines two measures using multiplication\", B: \"A single dimension created by combining the members of two or more other dimensions\", C: \"A field used for data blending\", D: \"Another name for a calculated field\" }, answer: \"B\", hint: \"This is often used to create a more detailed level of granularity by linking dimensions together, like 'Category' and 'Sub-Category'.\", feedback: { B: \"Correct! A combined field creates a new dimension by concatenating the members of existing dimensions, separated by a comma.\" } },\n                { category: \"LOD Expressions\", question: \"What does the {FIXED [Region] : SUM([Sales])} expression calculate?\", options: { A: \"The sum of sales for the region selected in the filter\", B: \"The sum of sales for each region, regardless of other dimensions or filters in the view (unless they are context filters)\", C: \"The total sum of sales for all regions\", D: \"The percentage of total sales for each region\" }, answer: \"B\", hint: \"'FIXED' computes a value using the specified dimensions, ignoring other dimensions in the view.\", feedback: { B: \"Correct! This is a FIXED Level of Detail (LOD) expression that calculates the total sales for each region and returns that value at the row level, ignoring most filters.\" } }\n            ],\n            advanced: [\n                { category: \"LOD Expressions\", question: \"Which LOD expression's dimensionality is determined by both the dimensions in the view and the dimensions in the code?\", options: { A: \"FIXED\", B: \"INCLUDE\", C: \"EXCLUDE\", D: \"TABLE\" }, answer: \"B\", hint: \"'INCLUDE' adds a dimension to the view's level of detail for its calculation.\", feedback: { B: \"Correct! INCLUDE calculates an aggregation at a finer level of detail than the view by including dimensions specified in the expression.\" } },\n                { category: \"Table Calculations\", question: \"What is a key characteristic of a Table Calculation?\", options: { A: \"They are performed in the database before data is brought into Tableau\", B: \"They operate only on the data currently in the visualization\", C: \"They are always faster than LOD expressions\", D: \"They can be used to join data sources\" }, answer: \"B\", hint: \"These calculations are performed 'last' in Tableau's order of operations.\", feedback: { B: \"Correct! Table calculations are post-aggregate calculations that work on the aggregated table of data that forms the current view.\" } },\n                { category: \"Table Calculations\", question: \"What is the difference between `LOOKUP()` and `PREVIOUS_VALUE()`?\", options: { A: \"`LOOKUP()` can only go forward, `PREVIOUS_VALUE()` can only go back\", B: \"`PREVIOUS_VALUE()` is a self-referencing function, while `LOOKUP()` can access any offset\", C: \"They are identical\", D: \"`LOOKUP()` is for numbers, `PREVIOUS_VALUE()` is for strings\" }, answer: \"B\", hint: \"`PREVIOUS_VALUE()` is often used for creating running totals or recursive calculations.\", feedback: { B: \"Correct! `LOOKUP(expression, offset)` can retrieve a value from a different row specified by the offset. `PREVIOUS_VALUE(expression)` gets the value of its own calculation from the previous row.\" } },\n                { category: \"Performance\", question: \"Which of the following is a common strategy to improve Tableau dashboard performance?\", options: { A: \"Using as many high-resolution images as possible\", B: \"Using live connections to large, slow databases\", C: \"Reducing the number of marks in the view and using extracts\", D: \"Using many detailed worksheets on a single dashboard\" }, answer: \"C\", hint: \"Performance is often about doing less work. Fewer marks and faster data connections help.\", feedback: { C: \"Correct! Optimizing performance often involves simplifying views, reducing the number of marks Tableau has to draw, and using extracts to speed up query times.\" } },\n                { category: \"Order of Operations\", question: \"In Tableau's order of operations, which of these is applied first?\", options: { A: \"Dimension Filters\", B: \"INCLUDE Level of Detail Expressions\", C: \"Table Calculation Filters\", D: \"Extract Filters\" }, answer: \"D\", hint: \"These filters are applied at the very beginning, when the extract itself is created.\", feedback: { D: \"Correct! Extract filters are applied first, as they determine what data is even brought into the Tableau workbook.\" } },\n                { category: \"Calculations\", question: \"What is 'Data Densification' in Tableau?\", options: { A: \"A method to make dashboards load faster\", B: \"The process where Tableau adds missing marks to the view to complete a domain\", C: \"A way to join multiple tables\", D: \"A type of LOD expression\" }, answer: \"B\", hint: \"This often happens when using certain table calculations or showing missing values, and can be used for advanced charting.\", feedback: { B: \"Correct! Data densification is when Tableau generates 'marks' where no data exists, which is necessary for certain visualizations like drawing curves from just a few data points.\" } },\n                { category: \"LOD Expressions\", question: \"Which LOD expression subtracts a dimension from the view level of detail for its calculation?\", options: { A: \"FIXED\", B: \"INCLUDE\", C: \"EXCLUDE\", D: \"ALL\" }, answer: \"C\", hint: \"This is useful when you want to calculate a total or subtotal that ignores a dimension currently in the view.\", feedback: { C: \"Correct! EXCLUDE calculates an aggregation at a coarser level of detail than the view by removing dimensions specified in the expression.\" } },\n                { category: \"Interactivity\", question: \"What is a primary use case for a 'Set Action'?\", options: { A: \"To navigate to a URL\", B: \"To dynamically change the members of a set based on user interaction\", C: \"To change the value of a parameter\", D: \"To export data to a CSV\" }, answer: \"B\", hint: \"This powerful feature allows for complex proportional brushing and other advanced interactions.\", feedback: { B: \"Correct! Set Actions allow users to interact with a viz (like selecting marks) to dynamically update which values are 'In' or 'Out' of a set.\" } },\n                { category: \"Table Calculations\", question: \"What does the `WINDOW_SUM(SUM([Sales]), -2, 0)` calculation do?\", options: { A: \"It calculates the sum of sales for the last 2 quarters\", B: \"It calculates a 3-period moving average of sales\", C: \"It calculates the sum of sales for the current row and the two preceding rows\", D: \"It calculates the total sum of sales in the entire window\" }, answer: \"C\", hint: \"The final two arguments define the start and end of the window relative to the current row.\", feedback: { C: \"Correct! This is a moving calculation. It sums the `SUM([Sales])` for a window that includes the current row (0) and the two rows before it (-2).\" } },\n                { category: \"Data Connections\", question: \"What is a limitation of Data Blending compared to Joining?\", options: { A: \"It can only be used with two data sources\", B: \"The secondary data source is always aggregated and cannot be used for row-level detail\", C: \"It does not support calculated fields\", D: \"It only works with live connections\" }, answer: \"B\", hint: \"You can't bring in all columns from a secondary source; you can only use aggregated values.\", feedback: { B: \"Correct! In data blending, data from the secondary source must be aggregated. This means you can't access individual row-level data from the secondary source in your view.\" } },\n                { category: \"Calculations\", question: \"What is the primary purpose of the `RAWSQL` functions?\", options: { A: \"To create charts using SQL code\", B: \"To connect to any SQL database\", C: \"To pass SQL expressions directly to the underlying database for calculations\", D: \"To replace all other Tableau functions\" }, answer: \"C\", hint: \"This is an advanced feature used when a required calculation cannot be performed within Tableau's standard functions.\", feedback: { C: \"Correct! RAWSQL functions are table calculations that allow you to send specific SQL queries to the source database, leveraging database-specific functions.\" } },\n                { category: \"Data Extracts\", question: \"What is an 'incremental refresh' of a Tableau extract?\", options: { A: \"A full recreation of the extract from the source data\", B: \"A refresh that only adds new rows based on a specified column\", C: \"A refresh that happens every minute\", D: \"A refresh that only updates calculated fields\" }, answer: \"B\", hint: \"This is much faster than a full refresh for large, transaction-based datasets.\", feedback: { B: \"Correct! An incremental refresh updates an extract by only adding data for new rows, which is determined by a column like a date or an ID.\" } },\n                { category: \"LOD Expressions\", question: \"A nested LOD expression like `{FIXED [Customer Name] : SUM({FIXED [Order ID] : SUM([Sales])})}` would most likely be used to calculate what?\", options: { A: \"The total sales for each customer\", B: \"The average sales per order\", C: \"The total sales of each order, then summing those unique order totals for each customer\", D: \"The total sales across all customers\" }, answer: \"C\", hint: \"The inner LOD calculates the total for each order first. The outer LOD then operates on those results.\", feedback: { C: \"Correct! This is used to avoid double-counting. The inner LOD finds the total sales for each unique Order ID. The outer LOD then sums these distinct order totals for each customer.\" } },\n                { category: \"Performance\", question: \"In Tableau's order of operations, where do Table Calculations operate?\", options: { A: \"Before data source filters\", B: \"Before dimension filters\", C: \"After LOD calculations\", D: \"After most other operations, including dimension and measure filters\" }, answer: \"D\", hint: \"This is why filters based on table calculations are sometimes called 'late' filters.\", feedback: { D: \"Correct! Table calculations are performed very late in the pipeline, operating only on the aggregated data that is present in the final visualization.\" } },\n                { category: \"Data Modeling\", question: \"What is the key difference between using 'Relationships' (the noodle) and 'Joins' in the data source pane?\", options: { A: \"Relationships are the old way, Joins are the new way\", B: \"Joins create a single, potentially large table; Relationships keep tables separate and join them contextually at query time\", C: \"Relationships only work for live connections\", D: \"There is no difference in how they work\" }, answer: \"B\", hint: \"Relationships are more flexible and often more performant than traditional joins.\", feedback: { B: \"Correct! Relationships are Tableau's newer, more flexible method. They query tables at the appropriate level of detail based on the fields in the viz, avoiding issues like data duplication that can occur with traditional joins.\" } }\n            ]\n        };\n        \/\/ --- STATE ---\n        let quizState = {\n            difficulty: null,\n            questions: [],\n            currentIndex: 0,\n            userAnswers: [],\n            timerInterval: null,\n            totalSeconds: 0,\n        };\n        let selectedDifficulty = null;\n        \/\/ --- CORE FUNCTIONS ---\n        function showScreen(screenId) {\n            document.querySelectorAll('#tableau-quiz-app-wrapper .quiz-screen').forEach(screen => {\n                screen.classList.remove('active');\n            });\n            const targetScreen = document.getElementById(screenId);\n            if (targetScreen) {\n                targetScreen.classList.add('active');\n            }\n        }\n        function startTimer() {\n            if (quizState.timerInterval) clearInterval(quizState.timerInterval);\n            quizState.timerInterval = setInterval(() => {\n                quizState.totalSeconds++;\n                const mins = Math.floor(quizState.totalSeconds \/ 60).toString().padStart(2, '0');\n                const secs = (quizState.totalSeconds % 60).toString().padStart(2, '0');\n                const timerEl = document.querySelector('#quiz-view #timer');\n                if(timerEl) timerEl.textContent = `${mins}:${secs}`;\n            }, 1000);\n        }\n        function stopTimer() {\n            clearInterval(quizState.timerInterval);\n        }\n        function resetQuizState() {\n            stopTimer();\n            quizState = {\n                difficulty: null, questions: [], currentIndex: 0, userAnswers: [], timerInterval: null, totalSeconds: 0,\n            };\n        }\n        window.showMainMenu = function(confirmFirst = false) {\n            if (confirmFirst) {\n                if (confirm('Are you sure you want to exit? Your progress will be lost.')) {\n                    resetQuizState();\n                    sessionStorage.removeItem('tableauQuizResultState'); \/\/ Clear saved state\n                    showScreen('main-menu-view');\n                }\n            } else {\n                resetQuizState();\n                sessionStorage.removeItem('tableauQuizResultState'); \/\/ Clear saved state\n                showScreen('main-menu-view');\n            }\n        }\n        window.showUserDetailsView = function(difficulty) {\n            const userInfoJSON = localStorage.getItem('quizUserInfo');\n            if (userInfoJSON) {\n                try {\n                    const userInfo = JSON.parse(userInfoJSON);\n                    if (new Date().getTime() < userInfo.expires) {\n                        startQuiz(difficulty);\n                        return;\n                    }\n                } catch(e) { \/* Invalid JSON *\/ }\n            }\n            selectedDifficulty = difficulty;\n            showScreen('user-details-view');\n            document.getElementById('user-name').focus();\n        }\n        function startQuiz(difficulty) {\n            quizState = {\n                difficulty,\n                questions: quizData[difficulty] || [],\n                currentIndex: 0,\n                userAnswers: new Array((quizData[difficulty] || []).length).fill(null),\n                timerInterval: null,\n                totalSeconds: 0,\n            };\n            showScreen('quiz-view');\n            setupQuizUI();\n            loadQuestion();\n            startTimer();\n        }\n        function setupQuizUI() {\n            const quizScreenEl = document.getElementById('quiz-view');\n            if (!quizScreenEl) return;\n            const quizTitle = quizScreenEl.querySelector('#quiz-title');\n            const questionCount = quizScreenEl.querySelector('#question-count');\n            const stepper = quizScreenEl.querySelector('#progress-stepper');\n            const timer = quizScreenEl.querySelector('#timer');\n            if (quizTitle) quizTitle.textContent = `${quizState.difficulty.charAt(0).toUpperCase() + quizState.difficulty.slice(1)} Tableau Quiz`;\n            if (questionCount) questionCount.textContent = `${quizState.currentIndex + 1}\/${quizState.questions.length}`;\n            if (timer) timer.textContent = '00:00';\n            if (stepper) stepper.innerHTML = quizState.questions.map(() => `<div class=\"step\"><\/div>`).join('');\n        }\n        function loadQuestion() {\n            const quizScreenEl = document.getElementById('quiz-view');\n            if (!quizScreenEl) return;\n            const question = quizState.questions[quizState.currentIndex];\n            if (!question) return;\n            const questionText = quizScreenEl.querySelector('.tableau-quiz-question-text');\n            const optionsContainer = quizScreenEl.querySelector('#options-container');\n            const hintText = quizScreenEl.querySelector('#hint-text');\n            const hintToggle = quizScreenEl.querySelector('#hint-toggle');\n            const questionCountEl = quizScreenEl.querySelector('#question-count');\n            if (questionCountEl) questionCountEl.textContent = `${quizState.currentIndex + 1}\/${quizState.questions.length}`;\n            if (questionText) questionText.innerHTML = `${quizState.currentIndex + 1}. ${question.question}`;\n            if (optionsContainer) {\n                optionsContainer.innerHTML = '';\n                Object.entries(question.options).forEach(([key, value]) => {\n                    const optionDiv = document.createElement('div');\n                    optionDiv.className = 'option';\n                    optionDiv.dataset.key = key;\n                    optionDiv.innerHTML = `<label class=\"option-label\"><span class=\"option-letter\">${key}.<\/span> ${value}<\/label>`;\n                    optionDiv.addEventListener('click', () => handleOptionClick(key));\n                    optionsContainer.appendChild(optionDiv);\n                });\n            }\n            if (hintText) {\n                hintText.textContent = question.hint;\n                hintText.classList.add('hidden');\n            }\n            if (hintToggle) {\n                hintToggle.classList.remove('open');\n                hintToggle.disabled = false;\n            }\n            updateProgress();\n            restoreAnswerState();\n        }\n        function handleOptionClick(selectedKey) {\n            if (quizState.userAnswers[quizState.currentIndex] !== null) return;\n            const question = quizState.questions[quizState.currentIndex];\n            const isCorrect = selectedKey === question.answer;\n            quizState.userAnswers[quizState.currentIndex] = { selected: selectedKey, isCorrect };\n            const quizScreenEl = document.getElementById('quiz-view');\n            if (!quizScreenEl) return;\n            quizScreenEl.querySelectorAll('.option').forEach(opt => {\n                opt.classList.add('disabled');\n                if (opt.dataset.key === question.answer) {\n                    opt.classList.add('correct');\n                    addFeedback(opt, true);\n                } else if (opt.dataset.key === selectedKey) {\n                    opt.classList.add('incorrect');\n                    addFeedback(opt, false);\n                }\n            });\n            const hintToggle = quizScreenEl.querySelector('#hint-toggle');\n            if (hintToggle) hintToggle.disabled = true;\n            updateProgress();\n        }\n        function addFeedback(optionDiv, isCorrect) {\n            const question = quizState.questions[quizState.currentIndex];\n            const selectedKey = optionDiv.dataset.key;\n            const feedbackText = question.feedback[selectedKey] || (isCorrect ? question.feedback[question.answer] : \"That's not the correct choice.\");\n            if (!optionDiv.querySelector('.feedback')) {\n                optionDiv.querySelector('.option-label').insertAdjacentHTML('afterend', `\n                <div class=\"feedback\">\n                    <div class=\"feedback-title ${isCorrect ? 'correct' : 'incorrect'}\">${isCorrect ? '\u2713 Correct' : '\u2717 Incorrect'}<\/div>\n                    <div class=\"feedback-text\">${feedbackText}<\/div>\n                <\/div>`);\n            }\n        }\n        function restoreAnswerState() {\n            const answer = quizState.userAnswers[quizState.currentIndex];\n            const quizScreenEl = document.getElementById('quiz-view');\n            if (!quizScreenEl) return;\n            if (answer) {\n                quizScreenEl.querySelectorAll('.option').forEach(opt => {\n                    opt.classList.add('disabled');\n                    if (opt.dataset.key === quizState.questions[quizState.currentIndex].answer) {\n                        opt.classList.add('correct');\n                        if (opt.dataset.key === answer.selected) addFeedback(opt, true);\n                    } else if (opt.dataset.key === answer.selected) {\n                        opt.classList.add('incorrect');\n                        addFeedback(opt, false);\n                    }\n                });\n            }\n        }\n        function updateProgress() {\n            const quizScreenEl = document.getElementById('quiz-view');\n            if (!quizScreenEl) return;\n            const backBtn = quizScreenEl.querySelector('#back-btn');\n            const nextBtn = quizScreenEl.querySelector('#next-btn');\n            const stepper = quizScreenEl.querySelector('#progress-stepper');\n            if (backBtn) backBtn.disabled = quizState.currentIndex === 0;\n            if (nextBtn) nextBtn.textContent = (quizState.currentIndex === quizState.questions.length - 1) ? 'Finish' : 'Next';\n            if(stepper) {\n                [...stepper.children].forEach((step, i) => {\n                    step.className = 'step';\n                    if (i === quizState.currentIndex) step.classList.add('active');\n                    const answer = quizState.userAnswers[i];\n                    if (answer) step.classList.add(answer.isCorrect ? 'correct' : 'incorrect');\n                });\n            }\n        }\n        function showResults() {\n            stopTimer();\n            const correctCount = quizState.userAnswers.filter(a => a?.isCorrect).length;\n            const totalQuestions = quizState.questions.length;\n            const answeredCount = quizState.userAnswers.filter(a => a !== null).length;\n            const wrongCount = answeredCount - correctCount;\n            const skippedCount = totalQuestions - answeredCount;\n            const accuracy = answeredCount > 0 ? Math.round((correctCount \/ answeredCount) * 100) : 0;\n            const scorePercentage = totalQuestions > 0 ? Math.round((correctCount \/ totalQuestions) * 100) : 0;\n            \n            \/\/ Save quiz state to sessionStorage to persist results\n            sessionStorage.setItem('tableauQuizResultState', JSON.stringify(quizState));\n\n            \/\/ Populate new results view elements\n            document.querySelector('#new-score-value').innerHTML = `${correctCount}<span>\/${totalQuestions}<\/span>`;\n            document.querySelector('#new-accuracy-label').textContent = `${accuracy}% Accuracy`;\n            document.querySelector('#new-right-value').textContent = correctCount;\n            document.querySelector('#new-wrong-value').textContent = wrongCount;\n            document.querySelector('#new-skipped-value').textContent = skippedCount;\n            \n            \/\/ Animate progress circle\n            const circle = document.getElementById('score-circle');\n            const radius = circle.r.baseVal.value;\n            const circumference = radius * 2 * Math.PI;\n            circle.style.strokeDasharray = `${circumference} ${circumference}`;\n            setTimeout(() => {\n                const offset = circumference - scorePercentage \/ 100 * circumference;\n                circle.style.strokeDashoffset = offset;\n            }, 100);\n            \n            setupShareLinks(correctCount, accuracy);\n            showScreen('results-view');\n        }\n        function setupShareLinks(score, accuracy) {\n            const url = window.location.href;\n            const text = `I scored ${score}\/${quizState.questions.length} on the ${quizState.difficulty} Tableau Quiz! Can you beat my score?`;\n            const title = 'Tableau Quiz Challenge';\n            \n            \/\/ Update to new share link IDs\n            document.getElementById('new-share-whatsapp').onclick = (e) => { e.preventDefault(); window.open(`https:\/\/api.whatsapp.com\/send?text=${encodeURIComponent(text + '\\n\\n' + url)}`, '_blank'); };\n            document.getElementById('new-share-twitter').onclick = (e) => { e.preventDefault(); window.open(`https:\/\/twitter.com\/intent\/tweet?url=${encodeURIComponent(url)}&text=${encodeURIComponent(text)}`, '_blank'); };\n            document.getElementById('new-share-linkedin').onclick = (e) => { e.preventDefault(); window.open(`https:\/\/www.linkedin.com\/shareArticle?mini=true&url=${encodeURIComponent(url)}&title=${encodeURIComponent(title)}&summary=${encodeURIComponent(text)}`, '_blank'); };\n            document.getElementById('new-share-telegram').onclick = (e) => { e.preventDefault(); window.open(`https:\/\/t.me\/share\/url?url=${encodeURIComponent(url)}&text=${encodeURIComponent(text)}`, '_blank'); };\n        }\n        function handleUserDetailsSubmit(event) {\n            event.preventDefault();\n            const form = document.getElementById('user-details-form');\n            const name = form.querySelector('#user-name').value.trim();\n            const email = form.querySelector('#user-email').value.trim();\n            if (!name || !email) { alert('Please fill in both your name and email.'); return; }\n            const expirationTime = new Date().getTime() + (60 * 24 * 60 * 60 * 1000); \/\/ 60 days\n            localStorage.setItem('quizUserInfo', JSON.stringify({ expires: expirationTime }));\n            \n            \/\/ Submit to Google Form\n            const formURL = \"https:\/\/docs.google.com\/forms\/d\/e\/1FAIpQLScAVF17oENbZXTwsTuQ7VzwLPeT6IG5iilch2LoEoYsbzik5A\/formResponse\";\n            const formData = new FormData();\n            formData.append(\"entry.1956958717\", name); \/\/ Name field\n            formData.append(\"entry.1149718564\", email); \/\/ Email field\nformData.append(\"entry.1658362758\", window.location.href);\n            fetch(formURL, { method: \"POST\", body: formData, mode: \"no-cors\" }).catch(console.error);\n            form.reset();\n            startQuiz(selectedDifficulty);\n        }\n        \/\/ --- EVENT LISTENERS ---\n        document.getElementById('user-details-form').addEventListener('submit', handleUserDetailsSubmit);\n        document.getElementById('back-to-menu-btn').addEventListener('click', () => showMainMenu(false));\n        document.getElementById('back-to-results-btn').addEventListener('click', () => showScreen('results-view'));\n        document.getElementById('next-btn').addEventListener('click', () => {\n             if (quizState.currentIndex < quizState.questions.length - 1) {\n                 quizState.currentIndex++;\n                 loadQuestion();\n             } else {\n                 showResults();\n             }\n         });\n        document.getElementById('back-btn').addEventListener('click', () => {\n             if (quizState.currentIndex > 0) {\n                 quizState.currentIndex--;\n                 loadQuestion();\n             }\n         });\n        document.getElementById('hint-toggle').addEventListener('click', () => {\n             document.getElementById('hint-text').classList.toggle('hidden');\n             document.getElementById('hint-toggle').classList.toggle('open');\n         });\n        document.getElementById('analyse-btn').addEventListener('click', () => {\n            const analysisByCat = quizState.questions.reduce((acc, { category }, i) => {\n                if (!acc[category]) acc[category] = { total: 0, correct: 0, correctQs: [], incorrectQs: [] };\n                acc[category].total++;\n                const answer = quizState.userAnswers[i];\n                if (answer?.isCorrect) {\n                    acc[category].correct++;\n                    acc[category].correctQs.push(i + 1);\n                } else if (answer) {\n                    acc[category].incorrectQs.push(i + 1);\n                }\n                return acc;\n            }, {});\n            const analysisModalBody = document.getElementById('analysis-body');\n            analysisModalBody.innerHTML = Object.entries(analysisByCat).map(([category, data]) => {\n                const percentage = data.total > 0 ? Math.round((data.correct \/ data.total) * 100) : 0;\n                return `<div class=\"category-analysis\"><div class=\"category-header\"><h3 id=\"category\">${category}<\/h3><div class=\"category-score\">${percentage}% Correct<\/div><\/div><div class=\"progress-bar-bg\"><div class=\"progress-bar-fg\" style=\"width: ${percentage}%;\"><\/div><\/div><div class=\"question-breakdown\">${data.correctQs.length > 0 ? `<p><strong>Correct:<\/strong> Q${data.correctQs.join(', Q')}<\/p>` : ''}${data.incorrectQs.length > 0 ? `<span>Incorrect:<\/span> Q${data.incorrectQs.join(', Q')}` : ''}<\/div><\/div>`;\n            }).join('');\n            showScreen('analysis-view');\n        });\n\n        \/\/ --- INITIALIZATION ---\n        \/\/ Check for saved results on page load\n        const savedStateJSON = sessionStorage.getItem('tableauQuizResultState');\n        if (savedStateJSON) {\n            try {\n                quizState = JSON.parse(savedStateJSON);\n                \/\/ Stop any lingering timers if the user refreshed mid-quiz\n                if (quizState.timerInterval) clearInterval(quizState.timerInterval);\n                showResults();\n            } catch (e) {\n                console.error(\"Failed to parse saved quiz state.\", e);\n                sessionStorage.removeItem('tableauQuizResultState');\n                showScreen('main-menu-view');\n            }\n        } else {\n            showScreen('main-menu-view');\n        }\n    });\n    <\/script>\n<\/div>\n\n\n\n<div class=\"wp-block-group is-layout-constrained wp-block-group-is-layout-constrained\">\n<p><strong>Also Check:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.mygreatlearning.com\/data-visualization\/free-courses\">Free Data Visualization Courses<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.mygreatlearning.com\/blog\/top-tableau-interview-questions\/\">Tableau Interview Question and Answers<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.mygreatlearning.com\/blog\/power-bi-vs-tableau\/\">Power BI vs Tableau: Which is better?<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.mygreatlearning.com\/blog\/data-visualisation-and-bi-tools-to-use\/\">Best Data Visualization Tools<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Take the Tableau Quiz to assess your skills. Beginner to advanced Tableau MCQs with real-time scoring and detailed performance feedback.<\/p>\n","protected":false},"author":41,"featured_media":109423,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[9],"tags":[36874,36849],"class_list":["post-109396","page","type-page","status-publish","has-post-thumbnail","hentry","category-data-science","tag-quiz","tag-tableau"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Tableau Quiz \u2013 Test Your Skills with MCQs Online<\/title>\n<meta name=\"description\" content=\"Take the Tableau Quiz to assess your skills. Beginner to advanced Tableau MCQs with real-time scoring and detailed performance feedback.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mygreatlearning.com\/blog\/tableau-quiz\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tableau Quiz\" \/>\n<meta property=\"og:description\" content=\"Take the Tableau Quiz to assess your skills. Beginner to advanced Tableau MCQs with real-time scoring and detailed performance feedback.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mygreatlearning.com\/blog\/tableau-quiz\/\" \/>\n<meta property=\"og:site_name\" content=\"Great Learning Blog: Free Resources what Matters to shape your Career!\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/GreatLearningOfficial\/\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/tableau-quiz.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1187\" \/>\n\t<meta property=\"og:image:height\" content=\"621\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@Great_Learning\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/tableau-quiz\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/tableau-quiz\\\/\"},\"author\":{\"name\":\"Great Learning Editorial Team\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#\\\/schema\\\/person\\\/6f993d1be4c584a335951e836f2656ad\"},\"headline\":\"Tableau Quiz\",\"datePublished\":\"2025-07-03T05:24:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/tableau-quiz\\\/\"},\"wordCount\":357,\"publisher\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/tableau-quiz\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/tableau-quiz.webp\",\"keywords\":[\"quiz\",\"tableau\"],\"articleSection\":[\"Data Science and Analytics\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/tableau-quiz\\\/\",\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/tableau-quiz\\\/\",\"name\":\"Tableau Quiz \u2013 Test Your Skills with MCQs Online\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/tableau-quiz\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/tableau-quiz\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/tableau-quiz.webp\",\"datePublished\":\"2025-07-03T05:24:03+00:00\",\"description\":\"Take the Tableau Quiz to assess your skills. Beginner to advanced Tableau MCQs with real-time scoring and detailed performance feedback.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/tableau-quiz\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/tableau-quiz\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/tableau-quiz\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/tableau-quiz.webp\",\"contentUrl\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/tableau-quiz.webp\",\"width\":1187,\"height\":621,\"caption\":\"Tableau Quiz\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/tableau-quiz\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tableau Quiz\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/\",\"name\":\"Great Learning Blog\",\"description\":\"Learn, Upskill &amp; Career Development Guide and Resources\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#organization\"},\"alternateName\":\"Great Learning\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#organization\",\"name\":\"Great Learning\",\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/GL-Logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/GL-Logo.jpg\",\"width\":900,\"height\":900,\"caption\":\"Great Learning\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/GreatLearningOfficial\\\/\",\"https:\\\/\\\/x.com\\\/Great_Learning\",\"https:\\\/\\\/www.instagram.com\\\/greatlearningofficial\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/school\\\/great-learning\\\/\",\"https:\\\/\\\/in.pinterest.com\\\/greatlearning12\\\/\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/beaconelearning\\\/\"],\"description\":\"Great Learning is a leading global ed-tech company for professional training and higher education. It offers comprehensive, industry-relevant, hands-on learning programs across various business, technology, and interdisciplinary domains driving the digital economy. These programs are developed and offered in collaboration with the world's foremost academic institutions.\",\"email\":\"info@mygreatlearning.com\",\"legalName\":\"Great Learning Education Services Pvt. Ltd\",\"foundingDate\":\"2013-11-29\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"1001\",\"maxValue\":\"5000\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/#\\\/schema\\\/person\\\/6f993d1be4c584a335951e836f2656ad\",\"name\":\"Great Learning Editorial Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/02\\\/unnamed.webp\",\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/02\\\/unnamed.webp\",\"contentUrl\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/02\\\/unnamed.webp\",\"caption\":\"Great Learning Editorial Team\"},\"description\":\"The Great Learning Editorial Staff includes a dynamic team of subject matter experts, instructors, and education professionals who combine their deep industry knowledge with innovative teaching methods. Their mission is to provide learners with the skills and insights needed to excel in their careers, whether through upskilling, reskilling, or transitioning into new fields.\",\"sameAs\":[\"https:\\\/\\\/www.mygreatlearning.com\\\/\",\"https:\\\/\\\/in.linkedin.com\\\/school\\\/great-learning\\\/\",\"https:\\\/\\\/x.com\\\/https:\\\/\\\/twitter.com\\\/Great_Learning\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCObs0kLIrDjX2LLSybqNaEA\"],\"award\":[\"Best EdTech Company of the Year 2024\",\"Education Economictimes Outstanding Education\\\/Edtech Solution Provider of the Year 2024\",\"Leading E-learning Platform 2024\"],\"url\":\"https:\\\/\\\/www.mygreatlearning.com\\\/blog\\\/author\\\/greatlearning\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Tableau Quiz \u2013 Test Your Skills with MCQs Online","description":"Take the Tableau Quiz to assess your skills. Beginner to advanced Tableau MCQs with real-time scoring and detailed performance feedback.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mygreatlearning.com\/blog\/tableau-quiz\/","og_locale":"en_US","og_type":"article","og_title":"Tableau Quiz","og_description":"Take the Tableau Quiz to assess your skills. Beginner to advanced Tableau MCQs with real-time scoring and detailed performance feedback.","og_url":"https:\/\/www.mygreatlearning.com\/blog\/tableau-quiz\/","og_site_name":"Great Learning Blog: Free Resources what Matters to shape your Career!","article_publisher":"https:\/\/www.facebook.com\/GreatLearningOfficial\/","og_image":[{"width":1187,"height":621,"url":"http:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/tableau-quiz.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","twitter_site":"@Great_Learning","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.mygreatlearning.com\/blog\/tableau-quiz\/#article","isPartOf":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/tableau-quiz\/"},"author":{"name":"Great Learning Editorial Team","@id":"https:\/\/www.mygreatlearning.com\/blog\/#\/schema\/person\/6f993d1be4c584a335951e836f2656ad"},"headline":"Tableau Quiz","datePublished":"2025-07-03T05:24:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/tableau-quiz\/"},"wordCount":357,"publisher":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/tableau-quiz\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/tableau-quiz.webp","keywords":["quiz","tableau"],"articleSection":["Data Science and Analytics"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.mygreatlearning.com\/blog\/tableau-quiz\/","url":"https:\/\/www.mygreatlearning.com\/blog\/tableau-quiz\/","name":"Tableau Quiz \u2013 Test Your Skills with MCQs Online","isPartOf":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/tableau-quiz\/#primaryimage"},"image":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/tableau-quiz\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/tableau-quiz.webp","datePublished":"2025-07-03T05:24:03+00:00","description":"Take the Tableau Quiz to assess your skills. Beginner to advanced Tableau MCQs with real-time scoring and detailed performance feedback.","breadcrumb":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/tableau-quiz\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mygreatlearning.com\/blog\/tableau-quiz\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mygreatlearning.com\/blog\/tableau-quiz\/#primaryimage","url":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/tableau-quiz.webp","contentUrl":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/tableau-quiz.webp","width":1187,"height":621,"caption":"Tableau Quiz"},{"@type":"BreadcrumbList","@id":"https:\/\/www.mygreatlearning.com\/blog\/tableau-quiz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/www.mygreatlearning.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tableau Quiz"}]},{"@type":"WebSite","@id":"https:\/\/www.mygreatlearning.com\/blog\/#website","url":"https:\/\/www.mygreatlearning.com\/blog\/","name":"Great Learning Blog","description":"Learn, Upskill &amp; Career Development Guide and Resources","publisher":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/#organization"},"alternateName":"Great Learning","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mygreatlearning.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.mygreatlearning.com\/blog\/#organization","name":"Great Learning","url":"https:\/\/www.mygreatlearning.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mygreatlearning.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2022\/06\/GL-Logo.jpg","contentUrl":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2022\/06\/GL-Logo.jpg","width":900,"height":900,"caption":"Great Learning"},"image":{"@id":"https:\/\/www.mygreatlearning.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/GreatLearningOfficial\/","https:\/\/x.com\/Great_Learning","https:\/\/www.instagram.com\/greatlearningofficial\/","https:\/\/www.linkedin.com\/school\/great-learning\/","https:\/\/in.pinterest.com\/greatlearning12\/","https:\/\/www.youtube.com\/user\/beaconelearning\/"],"description":"Great Learning is a leading global ed-tech company for professional training and higher education. It offers comprehensive, industry-relevant, hands-on learning programs across various business, technology, and interdisciplinary domains driving the digital economy. These programs are developed and offered in collaboration with the world's foremost academic institutions.","email":"info@mygreatlearning.com","legalName":"Great Learning Education Services Pvt. Ltd","foundingDate":"2013-11-29","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"1001","maxValue":"5000"}},{"@type":"Person","@id":"https:\/\/www.mygreatlearning.com\/blog\/#\/schema\/person\/6f993d1be4c584a335951e836f2656ad","name":"Great Learning Editorial Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2022\/02\/unnamed.webp","url":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2022\/02\/unnamed.webp","contentUrl":"https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2022\/02\/unnamed.webp","caption":"Great Learning Editorial Team"},"description":"The Great Learning Editorial Staff includes a dynamic team of subject matter experts, instructors, and education professionals who combine their deep industry knowledge with innovative teaching methods. Their mission is to provide learners with the skills and insights needed to excel in their careers, whether through upskilling, reskilling, or transitioning into new fields.","sameAs":["https:\/\/www.mygreatlearning.com\/","https:\/\/in.linkedin.com\/school\/great-learning\/","https:\/\/x.com\/https:\/\/twitter.com\/Great_Learning","https:\/\/www.youtube.com\/channel\/UCObs0kLIrDjX2LLSybqNaEA"],"award":["Best EdTech Company of the Year 2024","Education Economictimes Outstanding Education\/Edtech Solution Provider of the Year 2024","Leading E-learning Platform 2024"],"url":"https:\/\/www.mygreatlearning.com\/blog\/author\/greatlearning\/"}]}},"uagb_featured_image_src":{"full":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/tableau-quiz.webp",1187,621,false],"thumbnail":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/tableau-quiz-150x150.webp",150,150,true],"medium":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/tableau-quiz-300x157.webp",300,157,true],"medium_large":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/tableau-quiz-768x402.webp",768,402,true],"large":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/tableau-quiz-1024x536.webp",1024,536,true],"1536x1536":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/tableau-quiz.webp",1187,621,false],"2048x2048":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/tableau-quiz.webp",1187,621,false],"web-stories-poster-portrait":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/tableau-quiz-640x621.webp",640,621,true],"web-stories-publisher-logo":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/tableau-quiz-96x96.webp",96,96,true],"web-stories-thumbnail":["https:\/\/www.mygreatlearning.com\/blog\/wp-content\/uploads\/2025\/07\/tableau-quiz-150x78.webp",150,78,true]},"uagb_author_info":{"display_name":"Great Learning Editorial Team","author_link":"https:\/\/www.mygreatlearning.com\/blog\/author\/greatlearning\/"},"uagb_comment_info":0,"uagb_excerpt":"Take the Tableau Quiz to assess your skills. Beginner to advanced Tableau MCQs with real-time scoring and detailed performance feedback.","_links":{"self":[{"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/pages\/109396","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/comments?post=109396"}],"version-history":[{"count":15,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/pages\/109396\/revisions"}],"predecessor-version":[{"id":112649,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/pages\/109396\/revisions\/112649"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/media\/109423"}],"wp:attachment":[{"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/media?parent=109396"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/categories?post=109396"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mygreatlearning.com\/blog\/wp-json\/wp\/v2\/tags?post=109396"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}