# 4.3 Advanced options आणि native SQL

Source: https://ravindrabagale.com/mr/powerbi/ch04-connecting-to-databases-sql-server-mysql/4-3-advanced-options-and-native-sql-queries.html
Language: mr (Marathi with English technical terms)

SQL Server dialog मधले Advanced options उघडल्यावर हे पर्याय दिसतात:

 | पर्याय | उपयोग

 | Command timeout in minutes | Slow query fail ठरवण्याआधी किती वेळ थांबायचं.

 | SQL statement | Navigator मधून table निवडण्याऐवजी स्वतःची SQL query.

 | Include relationship columns | Related tables कडे जाण्यासाठी navigation columns; साधी table हवी असेल तर बंद करता येतात.

 | Navigate using full hierarchy | Navigator मध्ये schemas folders सारखे दाखवतो.

 | Enable SQL Server Failover support | High-availability server setup साठी.

पहिलं उदाहरण सहा महाराष्ट्र शहरांच्या order lines JOIN आणि WHERE वापरून आणतं. दुसरं GROUP BY वापरून city व platform नुसार daily summary बनवतं.

SELECT  o.OrderID, o.OrderDateTime, o.ProductID, o.Quantity, o.Amount,
        o.DeliveryTimeMins, o.OrderStatus, o.Platform,
        s.StoreID, s.StoreName, s.Area, s.City
FROM    dbo.Orders    AS o
INNER JOIN dbo.DarkStore AS s ON s.StoreID = o.StoreID
WHERE   s.City IN ('Pune', 'Solapur', 'Nashik', 'Sambhaji Nagar', 'Kolhapur', 'Nagpur')
  AND   o.OrderDateTime >= '2025-01-01';

SELECT  CAST(o.OrderDateTime AS date)   AS OrderDate,
        s.City, o.Platform,
        COUNT(DISTINCT o.OrderID)       AS Orders,
        SUM(o.Amount)                   AS Sales,
        AVG(CAST(o.DeliveryTimeMins AS decimal(10,2))) AS AvgDeliveryMins
FROM    dbo.Orders o
JOIN    dbo.DarkStore s ON s.StoreID = o.StoreID
WHERE   o.OrderStatus = 'Delivered'
GROUP BY CAST(o.OrderDateTime AS date), s.City, o.Platform;

Data grain लक्षात घ्या: दुसऱ्या query मधला AVG हा order lines चा average आहे. एका order ला अनेक product rows असतील तर जास्त products असलेल्या orders चं weight वाढतं. Order-level average हवा असेल तर आधी प्रत्येक OrderID साठी एकच delivery-time value घ्या.

चालवायचं कसं?

Get data › SQL Server मध्ये server व database द्या आणि Advanced options उघडा.

SQL statement मध्ये query paste करा आणि OK करा.

Native Database Query चा prompt आल्यास query तपासून Run करा.

Preview पाहा आणि Transform Data निवडा.

Native query आणि folding

SQL statement नंतर जोडलेल्या steps source कडे fold होतीलच असं नाही. Connector आणि query पद्धतीवर ते अवलंबून असतं. म्हणून शक्यतो Navigator किंवा database view वापरा. Native SQL वापरत असाल तर गरजेचे filters query मध्येच द्या आणि पुढच्या steps चं folding तपासा.

Practice

Nagpur आणि Kolhapur मधल्या cancelled Amazon Now orders सोबत Store Name व Area आणणारी query लिहा. मग Navigator आणि Power Query filters वापरून तेच करा. View Native Query ची तुलना करा.

रवींद्र बागले यांची tip

SELECT * ऐवजी स्पष्ट column list लिहा. Model row order जपेल असं समजू नका; अनावश्यक ORDER BY टाळा. खूप मोठी query असेल तर DBA ला reusable view बनवायला सांगा.
