---
# System prepended metadata

title: DA - Power BI

---

1. **INTRODUCTION**:

    - Overview of BI process
    - Overview of different Power BI products:
        + Thường xuyên tiếp xúc:
            * Power BI desktop ->> report creators
            * Power BI service
            * Power BI gateway
            * Power BI datasets
            * Power BI dataflow
        + Ít tiếp xúc hơn:
            * Power BI embeded
            * Power BI mobile app        




---

2. **POWER QUERY - ADVANCED DATA TRANSFORMATION**

    - ***Data source:***
        + File: csv, excel, json,...
        + Database: MySQL, PostgreSQL, Oracle, Bigquery,...
        + Online service: Salesforce, Sharepoint, Google Ads,...
        + Other: Webpage...
    - ***Pivot and unpivot:***
        + Pivot data: to create a summrized table with a new layout, aggregateing values based on column categories.
        + Unpivot data: to transform a pivoted table back to flat list format, making it easier to analyze.
    
    - ***Splitting and combining columns:***
        + Split a single column into multiple columns by delimiters or character count.
            ![image](https://hackmd.io/_uploads/BykcWDfFT.png)

        + Combine two or more columns into one using custom separators.
        Click chọn 2 cột cần gộp chung sau đó nhấn chuột phải chọn "Merge columns"
        
        ![image](https://hackmd.io/_uploads/Hk1rMDfKa.png)
            
            
        ![image](https://hackmd.io/_uploads/Sy_sfvMKp.png)

         **Kết quả:**

        ![image](https://hackmd.io/_uploads/HJG1mvGF6.png)


    - ***Filtering and sorting data:***
        + Filer data by applying criteria to columns, such as text, numeric, or date filters.
        + Sort data in ascending or descending order based on one or more columns
    - ***Removing duplicates:***  Eliminate duplicate rows in your dataa to ensure accuracy and consistency
    - **Promote and demote column headers:**
        + Promote header: chọn "Use first row as header" 
        --> chọn dòng đầu tiên làm tiêu đề
        + Demote header: chọn "Use head.er as first row" 
        --> chọn tiêu đề làm dòng đầu tiên.
        
        ![image](https://hackmd.io/_uploads/BJOb7UzYT.png)
    
    - ***Filter by row position:***
    
        ![image](https://hackmd.io/_uploads/rkDPN8fFT.png)

    - ***Choose and remove columns:***
    
        + Choose columns: Chọn các cột cần giữ lại cho báo cáo
        
            ![image](https://hackmd.io/_uploads/BJXUHLGKp.png)
    
        + Remove columns: Xóa các cột không cần thiết cho báo cáo
        
            ![image](https://hackmd.io/_uploads/ry-sHLMta.png)

    - ***Formatting columns:***
        - Cách 1:
            ![image](https://hackmd.io/_uploads/B1dsLLGYa.png)
        - Cách 2: Click chuột phải vào cột cần formating.

            ![image](https://hackmd.io/_uploads/HyFbwLfFp.png)
            
    - ***Transpose table:*** Sẽ sử dụng nhiều khi xử lý các file json.
    
        ![image](https://hackmd.io/_uploads/S18-KIMtT.png)
        

        
---
    
3. **POWER QUERY - CREATE COLUMN**
    - ***Create Date columns***
    
        ![image](https://hackmd.io/_uploads/rkl4rPfK6.png)
        
        ![image](https://hackmd.io/_uploads/SkhvHvzKa.png)


    - ***Create Index columns:***
    
        ![image](https://hackmd.io/_uploads/rJMG9LfY6.png)

    - ***Create conditional columns:***
        
        
        ![image](https://hackmd.io/_uploads/BJsg28GYT.png)
        
        ![image](https://hackmd.io/_uploads/r1Uz38Gt6.png)
        
        ![image](https://hackmd.io/_uploads/BJWj2IGFa.png)
        
        ![image](https://hackmd.io/_uploads/Skinn8GY6.png)
        
        ![Untitled](https://hackmd.io/_uploads/BywVALGKp.png)







    - ***Create custom columns***
        
        ![image](https://hackmd.io/_uploads/BkA_EDMtT.png)
        
        ![image](https://hackmd.io/_uploads/BkSqNvzYa.png)
        
        ![image](https://hackmd.io/_uploads/S1t34PzYT.png)



-----------

4. **POWER QUERY - COMBINE DATA**

    - ***Merging queries:***

        ![image](https://hackmd.io/_uploads/S12o2DGtp.png)


        ![image](https://hackmd.io/_uploads/HkIFhwfYT.png)

        
        ![image](https://hackmd.io/_uploads/HJWSnPzKT.png)

    - ***Append queries:***
        ![image](https://hackmd.io/_uploads/HJBcjvft6.png)
        
        ![image](https://hackmd.io/_uploads/HyflnvMKT.png)
        
    - ***Combine files:***
     Các phòng ban như Đào tạo, Nhân sự thường sẽ có nhiều file cùng 1 format lưu trữ từ nhiều tháng --> khi làm báo cáo cần tổng hợp các file này thành 1 bảng khi đó ta sẽ sử dụng "combine files".
     
         ![image](https://hackmd.io/_uploads/S1syldfFa.png)


    - ***Duplicate a query:***
    
     **Cách 1:** Click chuột phải vào bảng cần duplicate --> chọn "Duplicate" như hình dưới
     
    ![image](https://hackmd.io/_uploads/H1DcxOMt6.png)
    
    
    **Cách 2:** Chọn advanced editor -> copy all -> blank query -> paste code vào và enter
    
    ![image](https://hackmd.io/_uploads/BJ8x-dMFa.png)




---
5. **DATA PROFILING**
    - Column distribution
    - Column quality
    - Column profile

---

6. **DATA MODELING**
    - **Data model:** là tập hợp của:
        - Các bảng dữ liệu đã tải về
        - Mỗi quan hệ giữa các bảng này
        - Các measures tính toán đã thiết lập
    - **Fact table:** 
        + Chứa các dữ liệu của các quan sát hoặc các sự kiện           như bảng tổng hợp các hóa đơn bán hàng - bao gồm: mặt         hàng, số lượng mua, giá mua, tổng bill....
        + Fact table có thể chứa các dữ liệu trùng lặp nhau.
    - **Dim table (Dimension/Lookup table):** 
        + Là bảng lưu trữ các thông tin chi tiết về dữ liệu có         trong bảng fact như: thông tin sản phẩm, thông tin           nhà cung cấp, ngày ....
        + Dim table chứa các dữ liệu không trùng lặp.
    - **Star schema:**
        Là một kiến trúc data warehouse mà tại đó 1 bảng fact         được giải thích chi tiết bởi các bảng dimension.
        
        ![image](https://hackmd.io/_uploads/SySTVuQYp.png)


    - **Snowflake schema:**
        + Là bảng nâng cấp của Star schema, Snowflake schema chuẩn hóa các bảng dimension thành nhiều bảng dimension phụ trợ cho các bảng dimension trong Star schema
        + Hình ảnh:
            ![image](https://hackmd.io/_uploads/SJq2vOXFa.png)

    
    - **Relationship (Mối quan hệ):**
        + Relationship tạo ra mối liên kết giữa 2 bảng nhằm xác định mối liên quan giữa các trường dữ liệu của 2 bảng.
        + **Ví dụ:** Muốn biết khách hàng A01 trong bảng Customer mua những mặt hàng gì và ngày nào trong bảng Transaction thì phải tạo mối quan hệ giữa 2 bảng này.
        + Các loại relationship:
             * ***Quan hệ 1-1:*** Trong quan hệ này mỗi bảng chỉ có 1 bảng ghi tương ứng.
              
             ![image](https://hackmd.io/_uploads/BJ-7cuXYa.png)

             * ***Quan hệ 1-n:***  Là quan hệ phổ biến và thường gặp nhất trong cơ sở dữ liệu, trong quan hệ này 1 bảng ghi ở bảng này có nhiều bảng ghi tương ứng với bảng kia.
             
             ![image](https://hackmd.io/_uploads/HJ4m3dQFp.png)

             
             * ***Quan hệ n-n:*** Trong quan hệ này 1 bảng ghi trong bảng này tương ứng với nhiều bảng ghi trong bảng kia và ngược lại.
             
                 **Chú ý:** Không khuyến khích thiết lập mối quan hệ n-n trong model vì có thể dẫn đến dữ liệu trả về không đầy đủ.
             
             ![image](https://hackmd.io/_uploads/rySds_7Kp.png)

    - **Active and inactive relationships:**
        
        ![image](https://hackmd.io/_uploads/SJ4v3uQKp.png)



7. **DAX - INTRODUCTION AND CORE CONCEPT**
    - **Khái niệm:**
        DAX là 1 tập hợp các hàm, toán tử và hằng số có thể được           dùng trong 1 công thức hoặc biểu thức, để tính toán và trả         về 1 hoặc nhiều giá trị. Hay đơn giản, DAX giúp bạn tạo ra         thông tin mới từ dữ liệu có sẵn trong mô hình của bạn.
        
    - **Row context:**
        + Tính toán dựa trên hàng hiện tại, ví dụ:
        ![image](https://hackmd.io/_uploads/SkT_CdXtp.png)

        
    - **Filter context:**
        + Áp dụng một hoặc nhiều bộ lọc trong 1 phép tính nhằm xác định kết quả hoặc giá trị mong muốn.
        + **Ví dụ:** với bảng dữ liệu trên -> ta muốn xem thêm tổng TotalSales của các Category thuộc Region A
        ***--> Công thức:***
        Doanh số Region A = 
        CALCULATE(SUM(TotalSales), FILTER(Tên bảng, Region = "A"))
    
    - **Calculated column:** (Row context)
        + Là công thức DAX để thêm các cột dữ liệu mới vào bảng đã có trong model.
        + Vì tạo thêm cột mới và lưu trữ cột này trong model nên làm cho size file tăng lên.
        + Calculated columns "live" in tables
        + Primarily used for "filtering" data in reports.
        
        ![image](https://hackmd.io/_uploads/ry20BK7tp.png)

    - **Measures:** (Filter context)
        + Measures tạo ra các giải pháp để phân tích và báo cáo dữ liệu, thực hiện các tính toán thời gian thực dựa trên tương tác của bạn với báo cáo.
        + Không tạo ra data mới trong các bảng -> không làm tăng size file.
        + Measures "live" in visuals.
        + Primarily used for "aggregating values" in report visuals.
        
        ![image](https://hackmd.io/_uploads/SkrIcK7Fp.png)
        
        + Implicit measures
        + Explicit measures

    - **Calculated tables:**
    
        + Sử dụng DAX để tạo bảng tính mới từ các bảng có sẵn trong model.
        
        ![image](https://hackmd.io/_uploads/r1mk2Y7F6.png)
        
        
        
**TIPS:**
    1. Tạo 1 bảng riêng để lưu trữ measures

8. **DAX - NHỮNG HÀM DAX THÔNG DỤNG**
    
    - **Aggregation functions:**   
        SUM/SUMX, AVERAGE/AVERAGEX, COUNT, COUNTROWS,         DISTINTCOUNT,MAX, MIN,..
    - **Filter functions:** 
        CALCULATE, CALCULATETABLE, FILTER, LOOKUPVALUE, EARLIER,...
    - **Date time functions:**
        DATE, DAY, MONTH, YEAR, DATEDIFF, EOMONTH, CALENDAR, CALENDARAUTO,..
    - **Time Intelligence functions:**
        + DATESMTD,DATESQTD, DATESYTD
        + PREVIOUSDAY, PREVIOUSMONTH, PREVIOUSYEAR, SAMEPERIODLASTYEAR,
        + TOTALMTD, TOTALQTD, TOTALYTD...
    - **Text functions:** CONCATENATE, LEN, TRIM, UPPER, FIND, SEARCH, LEFT, RIGHT, MID...
    - **Other common functions:** SWITCH, TRUE, AND, OR, HASONEFILTER, SELECTEDMEASURE
    - **Use VAR/RETURN (Variables)**
    
**9. DAX - QUICK MEASURE**
    - Year to date
    - Filter
    - Rolling Average
    - Percentage Diff
    
**10. REPORT VISUALIZATION**
    - Create KPI Score card
    - Slicer synchronization across multiple pages
    - Working with Selection and Book Marks pane
    - Edit interaction - chỉnh sửa tương tác
11. **REPORT VISUALIZATION - CONDITIONAL FORMATTING**
        
    ![image](https://hackmd.io/_uploads/B1kOLn7YT.png)
    
    
    
    ![image](https://hackmd.io/_uploads/S1ZTUn7tp.png)


    - **Background color:**
        
        ![image](https://hackmd.io/_uploads/BJY9wnmKp.png)

        ![image](https://hackmd.io/_uploads/SkUHvhQta.png)
        
        ![image](https://hackmd.io/_uploads/Bk5pP2Qt6.png)


    - **Data bars:**
        
        ![image](https://hackmd.io/_uploads/rJh5unQKa.png)
        
        ![image](https://hackmd.io/_uploads/H1Veth7Fa.png)



    - **Icons:**

        ![image](https://hackmd.io/_uploads/r1I2K2mKp.png)
        
        ![image](https://hackmd.io/_uploads/Sy-l5nQFp.png)


    - **Font color:**

        ![image](https://hackmd.io/_uploads/SJ4r9h7Fa.png)
        
        ![image](https://hackmd.io/_uploads/HyIOchXYa.png)



    - **Dynamic chart title:**
        ***(1) Tạo measure:***
        
        ![image](https://hackmd.io/_uploads/r15IkAQFT.png)
        
        (2) Điều chỉnh tiêu đề:
        
        ![image](https://hackmd.io/_uploads/ryh0yCQtp.png)
        
        ![image](https://hackmd.io/_uploads/SJCMlRXK6.png)
        
        **Kết quả:**
        
        ![image](https://hackmd.io/_uploads/ry9ugRQtT.png)
        
        ![image](https://hackmd.io/_uploads/SkeneAXY6.png)



15. AI enhanced visualization
    - What are AI visual?
    - Key influencer visual
    - Clustering using Scatter chart
16. Performance Analyzer
    - What is Performance Analyzer?
    - Start recording
    - Understanding the results
    - Drilling down into the visual
    - Rename the visual using Selection Pane
    - Analyze results to modify slicer
    - Analyze results to refresh a particular visual
14. **WORKING WITH ROLE LEVEL SECURITY (RLS)**
    - **Định nghĩa:**
        + Là chức năng quản trị và kiểm soát dữ liệu trong PBI dựa theo chính sách tiếp cận dữ liệu của người dùng trong công ty.
        + **Ví dụ:** 
            Báo cáo doanh số các cửa hàng trên toàn quốc -> mỗi cửa hàng chỉ xem được dữ liệu của cửa hàng đó.
    - Cơ chế:
        
    - Writing table filter with single field
    - Writing table filter with multiple fields
    - Viewing as roles
    - Create dynamic RLS
    - Create dynamic RLS according to
    - Report line
    - Assigning memeber to roles
    - URL filtering
    - Dynamic URL filtering
15. **POWER BI SERVICE - WORKSPACE APP**
    - **Create a workspace:**
    
        ![image](https://hackmd.io/_uploads/H1JivR7YT.png)
        
        ![image](https://hackmd.io/_uploads/r1XrdAmF6.png)

    - **Assign permissions in workspace:**
    
        ![image](https://hackmd.io/_uploads/BJlc_A7ta.png)



    - **Collaborating on shared report:**
    
    
        ![image](https://hackmd.io/_uploads/BJP-73NKa.png)
        
        
        ***Roles in workspace:***
        
        ![image](https://hackmd.io/_uploads/ByoKQhNFa.png)


    - **Share and manage report:**
        + Share only report:
        
        ![image](https://hackmd.io/_uploads/S1vPE3NYp.png)
        
        A. **Share report:**
            + Share app
            + Share report only
        B. **Manage access:**
            + Chỉ cấp quyền để xem báo cáo chỉ định
            + Cấp quyền cho user xem báo cáo và model
            + Cấp quyền cho user xem tất các báo cáo trong 1 workspace: tương tự các bước ở phần "Roles in workspace" -> add user và cấp roles là viewer.


**Visualizing data with reports:**

**3 Key quesions:**
    ***1. What "type of data" are you working with?***
    (Time-series , financial, textual, categorical, survey, hierarchical, geospatial...)
    ***2. What do you want to "communicate"?***
        + Comparision: Column/bar chart, clustered column/bar, table/heatmap, line chart, area chart...
        + Composition: Stacked bar/column chart, pie/donut chart, stacked area, waterfall chart, funnel chart, tree map...
        + Distribution: histogram, density plot, scatter plot, box & whisker,...
        + Relationship: scatter plot, bubble chart, correlation matrix...
    ***3. Who is the "end user" and what do they need?***
        **+ The analyst:**
            * Requires:Likes to see details and understand exactly what's happening at a granular level
            * Refers: Tables or combo chart ->> granular deyail to support root-cause analysis
        **+ The manager:**
            * Requires: Wants summarized data with clear, actionale insights to help operate the business.
            * Refers: Common charts & graphs ->> Some detals, but only when it supports a specific insight.
        **+ The executive:**
            * Requires: Needs high-level, crystal clear KPIs to track business health and topline performace.
            * Refers: KPI cards or simple charts ->> Minimal detal, unless it adds critical context to KPIs.
            
**DASHBOARD DESIGN FRAMEWORK:**
    1. Define the purpose
    2. Choose the right metrics
    3. Present the data effectively
    4. Eliminate clutter & noise
    5. Use layout to focus attention
    6. Tell as clear story
    
    
    
---------------------
**DATA CAREER OVERVIEW:**

![image](https://hackmd.io/_uploads/ByWd2LlnT.png)


