एक medallion architecture (Bronze, Silver, Gold) को लागू करना और भौतिक डेटा दोहराव के बिना परतों में डेटा तक पहुंचने की आवश्यकता है।
→अन्य lakehouses या परतों में डेटा को संदर्भित करने के लिए OneLake shortcuts का उपयोग करें।
क्यों: Shortcuts OneLake में symbolic links हैं। वे एक एकीकृत namespace प्रदान करते हैं और डेटा को कॉपी किए बिना एक्सेस की अनुमति देते हैं, जो एक logical data mesh या medallion architecture के लिए आदर्श है।
संदर्भ↗
Azure Synapse से Fabric में मौजूदा T-SQL-heavy analytics workload को Migrate करना।
→एक Fabric Data Warehouse का उपयोग करें।
क्यों: Fabric Warehouse पूर्ण T-SQL अनुकूलता प्रदान करता है, जिससे यह मौजूदा SQL scripts, stored procedures और analyst queries को न्यूनतम परिवर्तनों के साथ Migrate करने के लिए आदर्श लक्ष्य बन जाता है। Lakehouse SQL endpoint में read-only T-SQL एक्सेस है और writes के लिए Spark SQL का उपयोग करता है।
sub-second latency के साथ उच्च-मात्रा, उच्च-वेग streaming data (उदाहरण के लिए, IoT telemetry) को ingesting और querying करना।
→ingestion के लिए Fabric Eventstream और storage और analysis के लिए KQL Database का उपयोग करें।
क्यों: यह Fabric में उद्देश्य-निर्मित streaming analytics stack है। KQL (Kusto Query Language) streaming data पर time-series analysis के लिए अनुकूलित है, जो batch-oriented lakehouses या warehouses की तुलना में बहुत कम latency प्रदान करता है।
एक lakehouse में dimension परिवर्तनों का पूरा इतिहास बनाए रखने के लिए Slowly Changing Dimension (SCD) Type 2 को लागू करना।
→एक Spark notebook या pipeline में `MERGE INTO` statement का उपयोग करें। business key पर Match करें; `WHEN MATCHED` पुराने रिकॉर्ड को अपडेट करता है (`IsCurrent` को false, `EndDate` को अब पर सेट करता है); `WHEN NOT MATCHED` नए रिकॉर्ड को सम्मिलित करता है।
क्यों: Delta Lake का `MERGE` operation atomic upsert capabilities प्रदान करता है, जिससे यह Fabric lakehouse में SCD logic को लागू करने का मानक और सबसे कुशल तरीका बन जाता है।
एक operational database (उदाहरण के लिए, Azure SQL DB) से Fabric lakehouse में analytics के लिए लगभग वास्तविक समय में डेटा को replicate करना।
→Fabric Mirroring का उपयोग करें।
क्यों: Mirroring Fabric में निर्मित एक low-latency, low-impact change data capture (CDC) समाधान है। यह स्वचालित रूप से डेटा और schema परिवर्तनों को OneLake में Delta tables के रूप में replicate करता है, जिससे जटिल ETL pipelines की आवश्यकता समाप्त हो जाती है।
एक API से जटिल, nested JSON डेटा को एक flattened, structured Delta table में ingesting और transforming करना।
→एक PySpark notebook का उपयोग करें। schema को parse करने के लिए `from_json` जैसे functions का उपयोग करें, और arrays को rows में flatten करने के लिए `explode` का उपयोग करें।
क्यों: PySpark complex और evolving JSON structures को programmatically संभालने के लिए सबसे शक्तिशाली और लचीले tools प्रदान करता है, जो एक standard copy activity की क्षमताओं से कहीं अधिक है।
एक corporate firewall के पीछे एक on-premises SQL Server database से Fabric में डेटा ingesting करना।
→local network के भीतर एक server पर एक on-premises data gateway को स्थापित और कॉन्फ़िगर करें। Fabric में gateway को डेटा स्रोत के रूप में जोड़ें।
क्यों: gateway एक secure bridge के रूप में कार्य करता है, Fabric cloud services और on-premises डेटा स्रोतों के बीच queries और डेटा को relay करता है, बिना inbound firewall ports को खोलने की आवश्यकता के।
एक बड़े, अक्सर अपडेट होने वाले Delta table पर Query performance कई छोटे डेटा फाइलों के संचय के कारण खराब हो गई है।
→छोटे फाइलों को बड़े में compact करने के लिए `OPTIMIZE` कमांड चलाएं। संबंधित डेटा को सह-locate करने के लिए अक्सर filtered columns पर वैकल्पिक रूप से `ZORDER BY` का उपयोग करें।
क्यों: कम, बड़ी फाइलें Spark के लिए पढ़ने के लिए काफी अधिक कुशल हैं। Z-ordering डेटा skipping में सुधार करता है, जिससे queries को और भी कम डेटा पढ़ने की अनुमति मिलती है। यह Delta tables के लिए एक महत्वपूर्ण रखरखाव कार्य है।
streaming time-series डेटा को निश्चित, गैर-अतिव्यापी समय अंतरालों में एकत्रित करना (उदाहरण के लिए, प्रति sensor औसत तापमान हर 5 मिनट में)।
→`summarize` operator और `bin()` function के साथ एक KQL query का उपयोग करें। उदाहरण: `SensorData | summarize avg(temperature) by sensor_id, bin(timestamp, 5m)`।
क्यों: `bin()` function KQL में events को aggregation के लिए निश्चित time buckets (tumbling windows) में समूहित करने का मानक, अत्यधिक अनुकूलित तरीका है।
एक Dataflow Gen2 refresh धीमा है। डेटा स्रोत Azure SQL जैसे relational database है।
→Power Query editor में transformation steps की समीक्षा करें ताकि यह सुनिश्चित हो सके कि query folding सक्रिय है। folding को अधिकतम करने के लिए steps को पुनर्व्यवस्थित या संशोधित करें।
क्यों: Query folding transformation logic को स्रोत database में वापस धकेलता है ताकि इसे एक एकल native query के रूप में निष्पादित किया जा सके। यह सभी raw डेटा को dataflow engine में खींचने और इसे memory में बदलने की तुलना में कहीं अधिक कुशल है।
एक Spark notebook एक बहुत बड़ी fact table (अरबों पंक्तियों) और एक छोटी dimension table (हजारों पंक्तियों) के बीच एक धीमी join कर रहा है।
→एक broadcast join का उपयोग करें `spark.sql.functions.broadcast` के माध्यम से एक hint प्रदान करके या optimizer को statistics के आधार पर चुनने की अनुमति देकर।
क्यों: Broadcasting पूरी छोटी table को प्रत्येक executor node पर भेजता है। यह एक costly "shuffle" operation से बचाता है जहां बड़ी table के डेटा को repartitioned किया जाना चाहिए और network पर भेजा जाना चाहिए, जिससे प्रदर्शन में नाटकीय रूप से सुधार होता है।
एक data pipeline कई activities को orchestrate करती है। एक activity विफल हो सकती है, लेकिन बाद की, स्वतंत्र activities अभी भी चलनी चाहिए, और समग्र विफलता को log किया जाना चाहिए।
→activity dependencies को कॉन्फ़िगर करें। वे activities जो परिणाम की परवाह किए बिना चलनी चाहिए, पिछली activity पर "Completion" condition के साथ निर्भर होनी चाहिए।
क्यों: यह robust, parallel execution paths बनाने की अनुमति देता है। आप custom logging या notification logic को लागू करने के लिए "Succeeded" और "Failed" conditions के लिए अलग-अलग branches बना सकते हैं।
एक `last_modified` timestamp के साथ एक स्रोत से डेटा को incrementally load करने के लिए एक pipeline।
→एक watermark pattern को लागू करें। पिछली सफल run से `max(last_modified)` को store करें। अगली run में, उन records के लिए स्रोत को query करें जहां `last_modified` stored watermark से अधिक है।
क्यों: यह उन स्रोतों से incremental loads के लिए सबसे कुशल पैटर्न है जो एक modification timestamp प्रदान करते हैं, यह सुनिश्चित करते हुए कि केवल नया या अद्यतन डेटा संसाधित होता है, डेटा transfer और compute को कम करता है।
sensor readings में असामान्य spikes या dips का पता लगाने के लिए IoT डेटा की एक real-time stream का विश्लेषण करें।
→एक Eventhouse/KQL Database के भीतर एक KQL query में `series_decompose_anomalies()` function का उपयोग करें।
क्यों: यह built-in KQL function विशेष रूप से time-series anomaly detection के लिए डिज़ाइन किया गया है। यह सांख्यिकीय रूप से महत्वपूर्ण outliers की पहचान करने के लिए series को स्वचालित रूप से seasonal, trend और residual components में decompose करता है, जिसमें न्यूनतम मैन्युअल कॉन्फ़िगरेशन की आवश्यकता होती है।
डेटा को स्थानांतरित किए बिना एक एकल T-SQL query में एक Warehouse, एक Lakehouse और एक mirrored Azure SQL Database से डेटा को join करने की आवश्यकता है।
→Warehouse या Lakehouse SQL endpoint से चलाई गई query में three-part naming conventions (`database.schema.table`) का उपयोग करें। mirrored database को संदर्भित करने के लिए shortcuts का उपयोग करें।
क्यों: Fabric एक unified query engine प्रदान करता है जो एक ही SQL statement का उपयोग करके एक ही workspace के भीतर विभिन्न Fabric items में डेटा तक पहुंच सकता है, जिससे data virtualization सक्षम होती है।
एक dataflow को एक फ़ाइल को संसाधित करने की आवश्यकता है जहां कुछ पंक्तियाँ अमान्य हो सकती हैं। पूरा flow विफल नहीं होना चाहिए; वैध पंक्तियों को load किया जाना चाहिए, और अमान्य पंक्तियों को log किया जाना चाहिए।
→Power Query में, पंक्तियों को validate करने और एक "IsValid" column बनाने के लिए एक step जोड़ें। फिर, उस बिंदु से दो reference queries बनाएं: एक जो गंतव्य पर load करने के लिए `IsValid = true` के लिए फ़िल्टर करता है, और दूसरा जो error log पर load करने के लिए `IsValid = false` के लिए फ़िल्टर करता है।
क्यों: यह पैटर्न डेटा stream को विभाजित करके robust error handling प्रदान करता है। यह कुछ खराब पंक्तियों को पूरी प्रक्रिया को रोकने से रोकता है और डेटा quality issues की auditing के लिए एक स्पष्ट तंत्र प्रदान करता है।