Skip to main content

DAX to SQL

Несколько примеров реальных мер DAX и их аналогов на SQL:

  1. Общая сумма продаж
  • DAX: Total Sales = SUM(Sales[SalesAmount])
  • SQL: SELECT SUM(SalesAmount) AS TotalSales FROM Sales
  1. Количество уникальных клиентов
  • DAX: Unique Customers = DISTINCTCOUNT(Sales[CustomerID])
  • SQL: SELECT COUNT(DISTINCT CustomerID) AS UniqueCustomers FROM Sales
  1. Средняя сумма заказа
  • DAX: Average Order Amount = AVERAGE(Sales[OrderAmount])
  • SQL: SELECT AVG(OrderAmount) AS AverageOrderAmount FROM Sales
  1. Максимальная цена продукта
  • DAX: Max Product Price = MAX(Products[Price])
  • SQL: SELECT MAX(Price) AS MaxProductPrice FROM Products
  1. Общее количество продуктов в категории
  • DAX: Products in Category = COUNTROWS(FILTER(Products, Products[Category] = "Category Name"))
  • SQL: SELECT COUNT(*) AS ProductsInCategory FROM Products WHERE Category = 'Category Name'
  1. Сумма продаж за предыдущий год
  • DAX: Previous Year Sales = CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSYEAR(Calendar[Date]))
  • SQL: SELECT SUM(SalesAmount) AS PreviousYearSales FROM Sales WHERE YEAR(SalesDate) = YEAR(GETDATE()) - 1
  1. Доля продаж продукта в общей сумме продаж
  • DAX: Product Sales Share = DIVIDE(SUM(Sales[SalesAmount]), CALCULATE(SUM(Sales[SalesAmount]), ALL(Products)))
  • SQL: SELECT SUM(SalesAmount) / (SELECT SUM(SalesAmount) FROM Sales) AS ProductSalesShare FROM Sales WHERE ProductID = 'Product ID'
  1. Совокупный доход по месяцам
  • DAX: Cumulative Revenue = CALCULATE(SUM(Sales[Revenue]), FILTER(ALL(Calendar), Calendar[Date] <= MAX(Calendar[Date])))
  • SQL: SELECT SUM(Revenue) AS CumulativeRevenue FROM Sales WHERE YEAR(SalesDate) = YEAR(GETDATE()) AND MONTH(SalesDate) <= MONTH(GETDATE())
  1. Рейтинг продуктов по количеству продаж
  • DAX: Product Sales Rank = RANKX(ALL(Products), SUM(Sales[SalesQuantity]))
  • SQL: SELECT ProductID, RANK() OVER (ORDER BY SUM(SalesQuantity) DESC) AS ProductSalesRank FROM Sales GROUP BY ProductID
  1. Скользящее среднее продаж за 3 месяца
    • DAX: 3-Month Moving Average = AVERAGEX(DATESBETWEEN(Calendar[Date], LASTDATE(Calendar[Date]), -2), SUM(Sales[SalesAmount]))
    • SQL: SELECT AVG(SalesAmount) AS 3MonthMovingAverage FROM Sales WHERE SalesDate BETWEEN DATEADD(MONTH, -2, GETDATE()) AND GETDATE()

Эти примеры демонстрируют различные сценарии использования мер DAX и их аналогов на SQL. Они охватывают агрегацию данных, фильтрацию, вычисления с использованием временных периодов, ранжирование и скользящие средние значения. Конечно, это лишь некоторые примеры, и возможности мер DAX и SQL гораздо шире и могут быть адаптированы к конкретным потребностям и структуре данных вашего проекта.