отфильтровать вид по дате - PullRequest
0 голосов
/ 07 июня 2019

Я сделал вид, чтобы проанализировать конкретный предмет с помощью PowerBI (я не могу использовать другую программу). В моем случае база данных соответствует следующему ERD: ERD

Я создал следующий вид:

CREATE VIEW sales_based_foodstyless AS 
            ( 
                     SELECT   food_style, 
                              total_quantities=Sum(quantity), 
                              average_dish_price=Avg(d.price), 
                              total _revenue=sum(quantity*price), 
                              orders_amount=count(DISTINCT o.orderid), 
                              total_vendors_operating=count( v.vendorid) 
                     FROM     vendors  AS v 
                     JOIN     food_style AS fs 
                     ON       fs.vendorid=v.vendorid 
                     JOIN     dishes AS d 
                     ON       v.vendorid=d.vendorid 
                     JOIN     dish_quantities AS dq 
                     ON       d.vendorid=dq.vendorid 
                     JOIN     orders AS o 
                     ON       dq.orderid=o.orderid 
                     GROUP BY food_style 
            )

Я хочу в PowerBI фильтровать данные по дате, которая должна быть найдена как Order_Date объединенной таблицы в операторе выбора представления. однако мне не удалось это сделать. Помогите пожалуйста

Ответы [ 2 ]

0 голосов
/ 08 июня 2019

Вы можете сделать это с помощью табличной функции:

CREATE FUNCTION fSelectSalesBasedFoodstyles (
    @StartDate DATE
    , @EndDate DATE
    )
RETURNS TABLE
AS 
RETURN

    SELECT   food_style, 
            total_quantities=Sum(quantity), 
            average_dish_price=Avg(d.price), 
            total _revenue=sum(quantity*price), 
            orders_amount=count(DISTINCT o.orderid), 
            total_vendors_operating=count( v.vendorid) ,
            order_date
    FROM     vendors  AS v 
    JOIN     food_style AS fs 
    ON       fs.vendorid=v.vendorid 
    JOIN     dishes AS d 
    ON       v.vendorid=d.vendorid 
    JOIN     dish_quantities AS dq 
    ON       d.vendorid=dq.vendorid 
    JOIN     orders AS o 
    ON       dq.orderid=o.orderid 
        -- CAST only necessary if OrderDate is a DATETIME:
    WHERE CAST(o.order_date AS DATE) >= @StartDate 
        AND CAST(o.order_date AS DATE) <= @EndDate
    GROUP BY food_style 

GO
0 голосов
/ 08 июня 2019

Вы можете добавить фильтр, например

  CREATE VIEW sales_based_foodstyless AS 
  ( 
    SELECT  
      food_style, 
      total_quantities=Sum(quantity), 
      average_dish_price=Avg(d.price), 
      total _revenue=sum(quantity*price), 
      orders_amount=count(DISTINCT o.orderid), 
      total_vendors_operating=count( v.vendorid) 
    FROM vendors  AS v 
    JOIN food_style AS fs      ON fs.vendorid=v.vendorid 
    JOIN dishes AS d           ON v.vendorid=d.vendorid 
    JOIN dish_quantities AS dq ON d.vendorid=dq.vendorid 
    JOIN orders AS o           ON dq.orderid=o.orderid 
    WHERE YEAR(order_date) = 2018
    GROUP BY food_style 
  )

Однако, если вы хотите сделать это динамически, вам придется использовать хранимую процедуру или параметризованное представление.

...