{"id":4326,"date":"2025-08-07T23:10:29","date_gmt":"2025-08-07T23:10:29","guid":{"rendered":"https:\/\/uplatz.com\/blog\/?p=4326"},"modified":"2025-08-08T00:13:59","modified_gmt":"2025-08-08T00:13:59","slug":"data-engineering-cheat-sheet","status":"publish","type":"post","link":"https:\/\/uplatz.com\/blog\/data-engineering-cheat-sheet\/","title":{"rendered":"Data Engineering Cheat Sheet"},"content":{"rendered":"<p><!-- Data Engineering Cheat Sheet --><\/p>\n<div style=\"margin: 30px 0; font-family: 'Segoe UI', -apple-system, BlinkMacSystemFont, sans-serif;\">\n<style>\n    .de-container {\n      max-width: 1200px;\n      margin: 0 auto;\n      line-height: 1.6;\n    }\n    .de-header {\n      text-align: center;\n      background: linear-gradient(135deg, #059669 0%, #047857 100%);\n      color: white;\n      padding: 40px 30px;\n      border-radius: 20px;\n      margin-bottom: 40px;\n      box-shadow: 0 10px 30px rgba(5, 150, 105, 0.3);\n    }\n    .de-header h1 {\n      font-size: 2.5rem;\n      margin: 0 0 15px 0;\n      font-weight: 700;\n    }\n    .de-header p {\n      font-size: 1.1rem;\n      margin: 0;\n      opacity: 0.9;\n    }\n    .section {\n      margin-bottom: 50px;\n    }\n    .section-title {\n      background: linear-gradient(135deg, #0d9488 0%, #0f766e 100%);\n      color: white;\n      padding: 20px 25px;\n      border-radius: 12px;\n      font-size: 1.6rem;\n      font-weight: 600;\n      text-align: center;\n      margin-bottom: 30px;\n      box-shadow: 0 6px 20px rgba(13, 148, 136, 0.3);\n    }\n    .cards-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n      gap: 25px;\n    }\n    .info-card {\n      background: #ffffff;\n      border: 2px solid #d1fae5;\n      border-radius: 12px;\n      padding: 25px;\n      box-shadow: 0 4px 15px rgba(0,0,0,0.08);\n      transition: all 0.3s ease;\n      position: relative;\n      overflow: hidden;\n    }\n    .info-card:hover {\n      transform: translateY(-5px);\n      box-shadow: 0 8px 30px rgba(0,0,0,0.15);\n      border-color: #0f766e;\n    }\n    .info-card::before {\n      content: '';\n      position: absolute;\n      top: 0;\n      left: 0;\n      right: 0;\n      height: 4px;\n      background: linear-gradient(135deg, #059669, #047857);\n    }\n    .card-header {\n      display: flex;\n      align-items: center;\n      gap: 12px;\n      margin-bottom: 15px;\n    }\n    .card-icon {\n      font-size: 1.8rem;\n      flex-shrink: 0;\n    }\n    .card-title {\n      font-size: 1.3rem;\n      font-weight: 600;\n      color: #1e293b;\n      margin: 0;\n    }\n    .card-content {\n      color: #475569;\n      font-size: 0.95rem;\n    }\n    .framework-card {\n      background: linear-gradient(135deg, #059669 0%, #047857 100%);\n      color: white;\n      border: none;\n    }\n    .framework-card .card-title {\n      color: white;\n    }\n    .framework-card .card-content {\n      color: rgba(255,255,255,0.9);\n    }\n    .highlight {\n      background: linear-gradient(120deg, #d1fae5 0%, #a7f3d0 100%);\n      padding: 2px 6px;\n      border-radius: 4px;\n      font-weight: 500;\n      color: #047857;\n    }\n    .process-list {\n      list-style: none;\n      padding: 0;\n      margin: 0;\n    }\n    .process-list li {\n      background: #f0fdf4;\n      margin: 10px 0;\n      padding: 15px;\n      border-radius: 8px;\n      border-left: 4px solid #059669;\n      font-size: 0.95rem;\n    }\n    .process-list li strong {\n      color: #047857;\n    }\n    .metric-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n      gap: 20px;\n    }\n    .metric-card {\n      background: #f8fafc;\n      padding: 20px;\n      border-radius: 8px;\n      border-left: 4px solid #0d9488;\n      text-align: center;\n    }\n    .metric-title {\n      font-weight: 600;\n      color: #047857;\n      font-size: 1.1rem;\n      margin-bottom: 8px;\n    }\n    .metric-desc {\n      font-size: 0.9rem;\n      color: #64748b;\n      margin: 0;\n    }\n    .template-card {\n      background: #1e293b;\n      color: #f8fafc;\n      padding: 20px;\n      border-radius: 8px;\n      margin: 15px 0;\n      font-family: 'Consolas', 'Monaco', 'Courier New', monospace;\n      font-size: 0.9rem;\n      border-left: 4px solid #059669;\n    }\n    .template-title {\n      color: #6ee7b7;\n      font-weight: 600;\n      margin-bottom: 10px;\n      font-family: 'Segoe UI', sans-serif;\n    }\n    .priority-high {\n      background: #fef2f2;\n      border-left-color: #ef4444;\n    }\n    .priority-medium {\n      background: #fffbeb;\n      border-left-color: #f59e0b;\n    }\n    .priority-low {\n      background: #f0fdf4;\n      border-left-color: #22c55e;\n    }\n    .tools-grid {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n      gap: 20px;\n    }\n    .tool-item {\n      background: #f0fdf4;\n      padding: 15px;\n      border-radius: 8px;\n      border-left: 4px solid #059669;\n    }\n    .tool-name {\n      font-weight: 600;\n      color: #047857;\n      margin-bottom: 5px;\n    }\n    .tool-desc {\n      font-size: 0.9rem;\n      color: #64748b;\n      margin: 0;\n    }\n    .architecture-phase {\n      background: #f8fafc;\n      border: 2px solid #e2e8f0;\n      border-radius: 8px;\n      padding: 20px;\n      margin: 15px 0;\n    }\n    .phase-title {\n      background: #059669;\n      color: white;\n      padding: 8px 16px;\n      border-radius: 6px;\n      display: inline-block;\n      font-weight: 600;\n      margin-bottom: 15px;\n    }\n    @media (max-width: 768px) {\n      .de-header h1 {\n        font-size: 2rem;\n      }\n      .de-header {\n        padding: 25px 20px;\n      }\n      .section-title {\n        font-size: 1.4rem;\n        padding: 15px 20px;\n      }\n      .cards-grid {\n        grid-template-columns: 1fr;\n      }\n      .tools-grid {\n        grid-template-columns: 1fr;\n      }\n    }\n  <\/style>\n<div class=\"de-container\">\n    <!-- Header --><\/p>\n<div class=\"de-header\">\n<h1>\ud83d\udd27 Data Engineering Cheat Sheet<\/h1>\n<p>Complete guide to data engineering tools, frameworks, architectures, and best practices<\/p>\n<\/p><\/div>\n<p>    <!-- Core Concepts --><\/p>\n<div class=\"section\">\n<div class=\"section-title\">\ud83c\udfaf Core DE Concepts<\/div>\n<div class=\"cards-grid\">\n<div class=\"info-card\">\n<div class=\"card-header\">\n            <span class=\"card-icon\">\ud83c\udfd7\ufe0f<\/span><\/p>\n<h3 class=\"card-title\">Data Pipeline Architecture<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n            <span class=\"highlight\">Extract, Transform, Load (ETL) vs Extract, Load, Transform (ELT)<\/span><\/p>\n<p>            <strong>ETL Pattern:<\/strong><br \/>\n            \u2022 Data transformed before loading<br \/>\n            \u2022 Better for structured data<br \/>\n            \u2022 Traditional on-premise approach<\/p>\n<p>            <strong>ELT Pattern:<\/strong><br \/>\n            \u2022 Raw data loaded first, transformed later<br \/>\n            \u2022 Leverages cloud compute power<br \/>\n            \u2022 Better for big data and unstructured data\n          <\/div>\n<\/p><\/div>\n<div class=\"info-card\">\n<div class=\"card-header\">\n            <span class=\"card-icon\">\ud83c\udfdb\ufe0f<\/span><\/p>\n<h3 class=\"card-title\">Data Lake vs Data Warehouse<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n            <strong>Data Lake:<\/strong><br \/>\n            \u2022 Stores raw, unstructured data<br \/>\n            \u2022 Schema-on-read approach<br \/>\n            \u2022 Cost-effective for big data<br \/>\n            \u2022 Examples: S3, HDFS, Azure Data Lake<\/p>\n<p>            <strong>Data Warehouse:<\/strong><br \/>\n            \u2022 Structured, processed data<br \/>\n            \u2022 Schema-on-write approach<br \/>\n            \u2022 Optimized for analytics queries<br \/>\n            \u2022 Examples: Snowflake, BigQuery, Redshift\n          <\/div>\n<\/p><\/div>\n<div class=\"info-card\">\n<div class=\"card-header\">\n            <span class=\"card-icon\">\ud83d\udc8e<\/span><\/p>\n<h3 class=\"card-title\">Data Quality Framework<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n            <strong>Six Dimensions of Data Quality:<\/strong><br \/>\n            \u2022 <strong>Accuracy:<\/strong> Data reflects real-world values<br \/>\n            \u2022 <strong>Completeness:<\/strong> No missing critical data<br \/>\n            \u2022 <strong>Consistency:<\/strong> Data uniform across systems<br \/>\n            \u2022 <strong>Timeliness:<\/strong> Data available when needed<br \/>\n            \u2022 <strong>Validity:<\/strong> Data conforms to defined formats<br \/>\n            \u2022 <strong>Uniqueness:<\/strong> No unwanted duplicates\n          <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>    <!-- Technology Stack --><\/p>\n<div class=\"section\">\n<div class=\"section-title\">\ud83d\udee0\ufe0f Data Engineering Technology Stack<\/div>\n<div class=\"cards-grid\">\n<div class=\"info-card framework-card\">\n<div class=\"card-header\">\n            <span class=\"card-icon\">\u26a1<\/span><\/p>\n<h3 class=\"card-title\">Data Processing Engines<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n            <strong>Apache Spark:<\/strong> Unified analytics engine<br \/>\n            <strong>Apache Kafka:<\/strong> Distributed streaming platform<br \/>\n            <strong>Apache Flink:<\/strong> Stream processing framework<br \/>\n            <strong>Apache Storm:<\/strong> Real-time computation system<br \/>\n            <strong>Dask:<\/strong> Parallel computing in Python<br \/>\n            <strong>Ray:<\/strong> Distributed computing framework\n          <\/div>\n<\/p><\/div>\n<div class=\"info-card framework-card\">\n<div class=\"card-header\">\n            <span class=\"card-icon\">\ud83d\uddc4\ufe0f<\/span><\/p>\n<h3 class=\"card-title\">Storage Solutions<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n            <strong>Object Storage:<\/strong> AWS S3, GCS, Azure Blob<br \/>\n            <strong>Distributed Files:<\/strong> HDFS, GlusterFS<br \/>\n            <strong>NoSQL:<\/strong> MongoDB, Cassandra, DynamoDB<br \/>\n            <strong>Time Series:<\/strong> InfluxDB, TimescaleDB<br \/>\n            <strong>Graph:<\/strong> Neo4j, Amazon Neptune<br \/>\n            <strong>Search:<\/strong> Elasticsearch, Solr\n          <\/div>\n<\/p><\/div>\n<div class=\"info-card framework-card\">\n<div class=\"card-header\">\n            <span class=\"card-icon\">\ud83c\udfbc<\/span><\/p>\n<h3 class=\"card-title\">Orchestration Tools<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n            <strong>Apache Airflow:<\/strong> Workflow management platform<br \/>\n            <strong>Prefect:<\/strong> Modern workflow orchestration<br \/>\n            <strong>Dagster:<\/strong> Data orchestrator for ML\/analytics<br \/>\n            <strong>Luigi:<\/strong> Python workflow engine<br \/>\n            <strong>Apache NiFi:<\/strong> Data flow automation<br \/>\n            <strong>Argo Workflows:<\/strong> Kubernetes-native workflows\n          <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>    <!-- Python Data Engineering --><\/p>\n<div class=\"section\">\n<div class=\"section-title\">\ud83d\udc0d Python for Data Engineering<\/div>\n<div class=\"cards-grid\">\n<div class=\"info-card\">\n<div class=\"card-header\">\n            <span class=\"card-icon\">\ud83d\udc3c<\/span><\/p>\n<h3 class=\"card-title\">Pandas Essentials<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n<div class=\"template-card\">\n<div class=\"template-title\">Data Loading &#038; Basic Operations:<\/div>\n<p># Load data from various sources<br \/>\ndf = pd.read_csv(&#8216;data.csv&#8217;)<br \/>\ndf = pd.read_json(&#8216;data.json&#8217;)<br \/>\ndf = pd.read_parquet(&#8216;data.parquet&#8217;)<br \/>\ndf = pd.read_sql(&#8216;SELECT * FROM table&#8217;, connection)<\/p>\n<p># Basic data exploration<br \/>\ndf.head(10)                 # First 10 rows<br \/>\ndf.info()                   # Data types and memory usage<br \/>\ndf.describe()               # Statistical summary<br \/>\ndf.shape                    # Dimensions (rows, columns)<br \/>\ndf.columns.tolist()         # Column names<br \/>\ndf.dtypes                   # Data types per column<\/p>\n<p># Data cleaning<br \/>\ndf.dropna()                 # Remove null values<br \/>\ndf.fillna(method=&#8217;ffill&#8217;)   # Forward fill nulls<br \/>\ndf.drop_duplicates()        # Remove duplicates<br \/>\ndf[df[&#8216;column&#8217;].notna()]    # Filter non-null values\n            <\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"info-card\">\n<div class=\"card-header\">\n            <span class=\"card-icon\">\ud83d\udd17<\/span><\/p>\n<h3 class=\"card-title\">Database Connections<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n<div class=\"template-card\">\n<div class=\"template-title\">SQLAlchemy Examples:<\/div>\n<p>from sqlalchemy import create_engine<br \/>\nimport pandas as pd<\/p>\n<p># PostgreSQL connection<br \/>\nengine = create_engine(<br \/>\n    &#8216;postgresql:\/\/user:password@host:port\/database&#8217;<br \/>\n)<\/p>\n<p># MySQL connection<br \/>\nengine = create_engine(<br \/>\n    &#8216;mysql+pymysql:\/\/user:password@host:port\/database&#8217;<br \/>\n)<\/p>\n<p># Read data<br \/>\ndf = pd.read_sql_query(&#8220;&#8221;&#8221;<br \/>\n    SELECT customer_id, order_date, total_amount<br \/>\n    FROM orders<br \/>\n    WHERE order_date >= &#8216;2024-01-01&#8217;<br \/>\n&#8220;&#8221;&#8221;, engine)<\/p>\n<p># Write data<br \/>\ndf.to_sql(&#8216;processed_orders&#8217;, engine,<br \/>\n          if_exists=&#8217;replace&#8217;, index=False,<br \/>\n          chunksize=10000)\n            <\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"info-card\">\n<div class=\"card-header\">\n            <span class=\"card-icon\">\ud83d\udcca<\/span><\/p>\n<h3 class=\"card-title\">Data Transformation<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n<div class=\"template-card\">\n<div class=\"template-title\">Advanced Pandas Operations:<\/div>\n<p># Group by operations<br \/>\nresult = df.groupby(&#8216;category&#8217;).agg({<br \/>\n    &#8216;sales&#8217;: [&#8216;sum&#8217;, &#8216;mean&#8217;, &#8216;count&#8217;],<br \/>\n    &#8216;profit&#8217;: &#8216;sum&#8217;<br \/>\n}).round(2)<\/p>\n<p># Window functions<br \/>\ndf[&#8216;running_total&#8217;] = df.groupby(&#8216;customer_id&#8217;)[&#8216;amount&#8217;].cumsum()<br \/>\ndf[&#8216;row_number&#8217;] = df.groupby(&#8216;category&#8217;).cumcount() + 1<\/p>\n<p># Date operations<br \/>\ndf[&#8216;order_date&#8217;] = pd.to_datetime(df[&#8216;order_date&#8217;])<br \/>\ndf[&#8216;year&#8217;] = df[&#8216;order_date&#8217;].dt.year<br \/>\ndf[&#8216;month&#8217;] = df[&#8216;order_date&#8217;].dt.month<br \/>\ndf[&#8216;weekday&#8217;] = df[&#8216;order_date&#8217;].dt.day_name()<\/p>\n<p># Pivot operations<br \/>\npivot_df = df.pivot_table(<br \/>\n    values=&#8217;sales&#8217;,<br \/>\n    index=&#8217;product&#8217;,<br \/>\n    columns=&#8217;month&#8217;,<br \/>\n    aggfunc=&#8217;sum&#8217;<br \/>\n)\n            <\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>    <!-- Apache Spark --><\/p>\n<div class=\"section\">\n<div class=\"section-title\">\u26a1 Apache Spark &#038; PySpark<\/div>\n<div class=\"cards-grid\">\n<div class=\"info-card\">\n<div class=\"card-header\">\n            <span class=\"card-icon\">\ud83d\ude80<\/span><\/p>\n<h3 class=\"card-title\">Spark Session &#038; DataFrames<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n<div class=\"template-card\">\n<div class=\"template-title\">PySpark Basics:<\/div>\n<p>from pyspark.sql import SparkSession<br \/>\nfrom pyspark.sql.functions import col, sum, avg, count<\/p>\n<p># Create Spark session<br \/>\nspark = SparkSession.builder \\<br \/>\n    .appName(&#8220;DataEngineering&#8221;) \\<br \/>\n    .config(&#8220;spark.sql.adaptive.enabled&#8221;, &#8220;true&#8221;) \\<br \/>\n    .getOrCreate()<\/p>\n<p># Read data<br \/>\ndf = spark.read.csv(&#8220;file.csv&#8221;, header=True, inferSchema=True)<br \/>\ndf = spark.read.json(&#8220;file.json&#8221;)<br \/>\ndf = spark.read.parquet(&#8220;file.parquet&#8221;)<\/p>\n<p># Basic operations<br \/>\ndf.show(20)                 # Display first 20 rows<br \/>\ndf.count()                  # Count rows<br \/>\ndf.columns                  # Column names<br \/>\ndf.printSchema()            # Schema information<br \/>\ndf.describe().show()        # Statistical summary\n            <\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"info-card\">\n<div class=\"card-header\">\n            <span class=\"card-icon\">\ud83d\udd04<\/span><\/p>\n<h3 class=\"card-title\">Transformations &#038; Actions<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n<div class=\"template-card\">\n<div class=\"template-title\">Common PySpark Operations:<\/div>\n<p># Transformations (lazy evaluation)<br \/>\ndf_filtered = df.filter(col(&#8220;age&#8221;) > 25)<br \/>\ndf_selected = df.select(&#8220;name&#8221;, &#8220;age&#8221;, &#8220;salary&#8221;)<br \/>\ndf_grouped = df.groupBy(&#8220;department&#8221;).agg(<br \/>\n    avg(&#8220;salary&#8221;).alias(&#8220;avg_salary&#8221;),<br \/>\n    count(&#8220;*&#8221;).alias(&#8220;employee_count&#8221;)<br \/>\n)<\/p>\n<p># Joins<br \/>\nresult = df1.join(df2, df1.id == df2.user_id, &#8220;inner&#8221;)<\/p>\n<p># Window functions<br \/>\nfrom pyspark.sql.window import Window<br \/>\nwindow = Window.partitionBy(&#8220;department&#8221;).orderBy(&#8220;salary&#8221;)<br \/>\ndf_ranked = df.withColumn(&#8220;rank&#8221;,<br \/>\n    row_number().over(window))<\/p>\n<p># Actions (trigger computation)<br \/>\ndf.collect()                # Collect all rows to driver<br \/>\ndf.take(10)                 # Take first 10 rows<br \/>\ndf.write.parquet(&#8220;output\/&#8221;)  # Write to storage\n            <\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"info-card\">\n<div class=\"card-header\">\n            <span class=\"card-icon\">\u2699\ufe0f<\/span><\/p>\n<h3 class=\"card-title\">Performance Optimization<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n            <strong>Partitioning Strategies:<\/strong><br \/>\n            \u2022 Partition by frequently filtered columns<br \/>\n            \u2022 Use date\/time for time-series data<br \/>\n            \u2022 Avoid small files (< 128MB)\n\n\n            <strong>Caching:<\/strong><br \/>\n            \u2022 Cache frequently accessed DataFrames<br \/>\n            \u2022 Use appropriate storage levels<br \/>\n            \u2022 Unpersist when no longer needed<\/p>\n<p>            <strong>Join Optimization:<\/strong><br \/>\n            \u2022 Broadcast small tables (< 10MB)<br \/>\n            \u2022 Use bucketing for large joins<br \/>\n            \u2022 Prefer sort-merge joins for large datasets\n          <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>    <!-- SQL for Data Engineering --><\/p>\n<div class=\"section\">\n<div class=\"section-title\">\ud83d\uddc4\ufe0f SQL for Data Engineering<\/div>\n<div class=\"cards-grid\">\n<div class=\"info-card\">\n<div class=\"card-header\">\n            <span class=\"card-icon\">\ud83d\udd0d<\/span><\/p>\n<h3 class=\"card-title\">Advanced Query Patterns<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n<div class=\"template-card\">\n<div class=\"template-title\">Complex SQL Examples:<\/div>\n<p>&#8212; CTEs for complex logic<br \/>\nWITH monthly_sales AS (<br \/>\n  SELECT<br \/>\n    DATE_TRUNC(&#8216;month&#8217;, order_date) as month,<br \/>\n    SUM(amount) as total_sales,<br \/>\n    COUNT(*) as order_count<br \/>\n  FROM orders<br \/>\n  WHERE order_date >= &#8216;2024-01-01&#8217;<br \/>\n  GROUP BY 1<br \/>\n),<br \/>\ngrowth_calc AS (<br \/>\n  SELECT *,<br \/>\n    LAG(total_sales) OVER (ORDER BY month) as prev_month_sales,<br \/>\n    (total_sales &#8211; LAG(total_sales) OVER (ORDER BY month)) \/<br \/>\n    LAG(total_sales) OVER (ORDER BY month) * 100 as growth_rate<br \/>\n  FROM monthly_sales<br \/>\n)<br \/>\nSELECT * FROM growth_calc WHERE growth_rate IS NOT NULL;<\/p>\n<p>&#8212; Recursive CTE for hierarchies<br \/>\nWITH RECURSIVE employee_hierarchy AS (<br \/>\n  SELECT id, name, manager_id, 1 as level<br \/>\n  FROM employees WHERE manager_id IS NULL<br \/>\n  UNION ALL<br \/>\n  SELECT e.id, e.name, e.manager_id, eh.level + 1<br \/>\n  FROM employees e<br \/>\n  JOIN employee_hierarchy eh ON e.manager_id = eh.id<br \/>\n)<br \/>\nSELECT * FROM employee_hierarchy ORDER BY level, name;\n            <\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"info-card\">\n<div class=\"card-header\">\n            <span class=\"card-icon\">\ud83d\udcca<\/span><\/p>\n<h3 class=\"card-title\">Window Functions<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n<div class=\"template-card\">\n<div class=\"template-title\">Window Function Examples:<\/div>\n<p>&#8212; Ranking functions<br \/>\nSELECT<br \/>\n  employee_name,<br \/>\n  department,<br \/>\n  salary,<br \/>\n  RANK() OVER (PARTITION BY department ORDER BY salary DESC) as salary_rank,<br \/>\n  DENSE_RANK() OVER (ORDER BY salary DESC) as overall_rank,<br \/>\n  ROW_NUMBER() OVER (PARTITION BY department ORDER BY hire_date) as hire_order<br \/>\nFROM employees;<\/p>\n<p>&#8212; Aggregate window functions<br \/>\nSELECT<br \/>\n  order_date,<br \/>\n  daily_sales,<br \/>\n  SUM(daily_sales) OVER (ORDER BY order_date<br \/>\n    ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) as rolling_7_day,<br \/>\n  AVG(daily_sales) OVER (ORDER BY order_date<br \/>\n    ROWS BETWEEN 29 PRECEDING AND CURRENT ROW) as rolling_30_day_avg,<br \/>\n  daily_sales &#8211; LAG(daily_sales) OVER (ORDER BY order_date) as day_over_day<br \/>\nFROM daily_sales_summary;<\/p>\n<p>&#8212; Percentiles and distribution<br \/>\nSELECT<br \/>\n  product_id,<br \/>\n  revenue,<br \/>\n  NTILE(4) OVER (ORDER BY revenue) as quartile,<br \/>\n  PERCENT_RANK() OVER (ORDER BY revenue) as percentile_rank<br \/>\nFROM product_revenue;\n            <\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"info-card\">\n<div class=\"card-header\">\n            <span class=\"card-icon\">\ud83d\udd27<\/span><\/p>\n<h3 class=\"card-title\">Data Quality Checks<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n<div class=\"template-card\">\n<div class=\"template-title\">SQL Data Quality Queries:<\/div>\n<p>&#8212; Null value analysis<br \/>\nSELECT<br \/>\n  &#8216;customer_id&#8217; as column_name,<br \/>\n  COUNT(*) as total_rows,<br \/>\n  COUNT(customer_id) as non_null_count,<br \/>\n  COUNT(*) &#8211; COUNT(customer_id) as null_count,<br \/>\n  ROUND(100.0 * (COUNT(*) &#8211; COUNT(customer_id)) \/ COUNT(*), 2) as null_percentage<br \/>\nFROM orders<br \/>\nUNION ALL<br \/>\nSELECT<br \/>\n  &#8217;email&#8217;,<br \/>\n  COUNT(*),<br \/>\n  COUNT(email),<br \/>\n  COUNT(*) &#8211; COUNT(email),<br \/>\n  ROUND(100.0 * (COUNT(*) &#8211; COUNT(email)) \/ COUNT(*), 2)<br \/>\nFROM orders;<\/p>\n<p>&#8212; Duplicate detection<br \/>\nSELECT email, COUNT(*) as duplicate_count<br \/>\nFROM customers<br \/>\nGROUP BY email<br \/>\nHAVING COUNT(*) > 1;<\/p>\n<p>&#8212; Data freshness check<br \/>\nSELECT<br \/>\n  MAX(created_at) as latest_record,<br \/>\n  CURRENT_TIMESTAMP &#8211; MAX(created_at) as data_age<br \/>\nFROM transactions;\n            <\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>    <!-- Cloud Platforms --><\/p>\n<div class=\"section\">\n<div class=\"section-title\">\u2601\ufe0f Cloud Data Engineering<\/div>\n<div class=\"cards-grid\">\n<div class=\"info-card\">\n<div class=\"card-header\">\n            <span class=\"card-icon\">\ud83d\udfe1<\/span><\/p>\n<h3 class=\"card-title\">AWS Data Services<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n<div class=\"template-card\">\n<div class=\"template-title\">AWS CLI Commands:<\/div>\n<p># S3 operations<br \/>\naws s3 cp data.csv s3:\/\/my-bucket\/raw-data\/<br \/>\naws s3 sync .\/local-folder s3:\/\/my-bucket\/batch-data\/<br \/>\naws s3 ls s3:\/\/my-bucket\/processed\/ &#8211;recursive<\/p>\n<p># Glue job execution<br \/>\naws glue start-job-run &#8211;job-name my-etl-job \\<br \/>\n  &#8211;arguments=&#8217;&#8211;input_path=s3:\/\/input\/,&#8211;output_path=s3:\/\/output\/&#8217;<\/p>\n<p># EMR cluster management<br \/>\naws emr create-cluster \\<br \/>\n  &#8211;name &#8220;Data-Processing-Cluster&#8221; \\<br \/>\n  &#8211;applications Name=Spark Name=Hadoop Name=Hive \\<br \/>\n  &#8211;instance-type m5.xlarge \\<br \/>\n  &#8211;instance-count 3 \\<br \/>\n  &#8211;bootstrap-actions Path=s3:\/\/my-bucket\/bootstrap.sh<\/p>\n<p># Redshift data loading<br \/>\naws redshift-data execute-statement \\<br \/>\n  &#8211;cluster-identifier my-cluster \\<br \/>\n  &#8211;database dev \\<br \/>\n  &#8211;sql &#8220;COPY table_name FROM &#8216;s3:\/\/bucket\/data\/&#8217;<br \/>\n         IAM_ROLE &#8216;arn:aws:iam::account:role\/RedshiftRole&#8217;<br \/>\n         CSV IGNOREHEADER 1;&#8221;\n            <\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"info-card\">\n<div class=\"card-header\">\n            <span class=\"card-icon\">\ud83d\udd35<\/span><\/p>\n<h3 class=\"card-title\">Google Cloud Platform<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n<div class=\"template-card\">\n<div class=\"template-title\">GCP CLI Commands:<\/div>\n<p># BigQuery operations<br \/>\nbq query &#8211;use_legacy_sql=false \\<br \/>\n  &#8220;SELECT COUNT(*) FROM \\`project.dataset.table\\`<br \/>\n   WHERE DATE(created_at) = CURRENT_DATE()&#8221;<\/p>\n<p>bq load &#8211;source_format=CSV \\<br \/>\n  &#8211;skip_leading_rows=1 \\<br \/>\n  dataset.table gs:\/\/bucket\/data.csv<\/p>\n<p># Dataflow pipeline<br \/>\ngcloud dataflow jobs run my-pipeline \\<br \/>\n  &#8211;gcs-location gs:\/\/bucket\/templates\/pipeline \\<br \/>\n  &#8211;region us-central1 \\<br \/>\n  &#8211;parameters inputTopic=projects\/proj\/topics\/input,\\<br \/>\noutputTable=proj:dataset.table<\/p>\n<p># Cloud Storage operations<br \/>\ngsutil cp gs:\/\/source-bucket\/* gs:\/\/dest-bucket\/<br \/>\ngsutil -m rsync -r .\/local-dir gs:\/\/bucket\/folder\/<\/p>\n<p># Dataproc cluster<br \/>\ngcloud dataproc clusters create my-cluster \\<br \/>\n  &#8211;zone us-central1-b \\<br \/>\n  &#8211;num-masters 1 \\<br \/>\n  &#8211;num-workers 3 \\<br \/>\n  &#8211;worker-machine-type n1-standard-4\n            <\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"info-card\">\n<div class=\"card-header\">\n            <span class=\"card-icon\">\ud83d\udd37<\/span><\/p>\n<h3 class=\"card-title\">Azure Data Platform<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n            <strong>Core Services:<\/strong><br \/>\n            \u2022 <strong>Azure Data Factory:<\/strong> ETL\/ELT orchestration<br \/>\n            \u2022 <strong>Azure Synapse:<\/strong> Analytics service (DW + Spark)<br \/>\n            \u2022 <strong>Azure Data Lake:<\/strong> Scalable data storage<br \/>\n            \u2022 <strong>Azure Databricks:<\/strong> Apache Spark platform<br \/>\n            \u2022 <strong>Azure Stream Analytics:<\/strong> Real-time processing<\/p>\n<p>            <strong>Integration Pattern:<\/strong><br \/>\n            Data Lake \u2192 Data Factory \u2192 Synapse \u2192 Power BI\n          <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>    <!-- Data Pipeline Architecture --><\/p>\n<div class=\"section\">\n<div class=\"section-title\">\ud83c\udfd7\ufe0f Data Pipeline Architecture Patterns<\/div>\n<div class=\"info-card\">\n<div class=\"card-header\">\n          <span class=\"card-icon\">\ud83d\udcca<\/span><\/p>\n<h3 class=\"card-title\">Modern Data Architecture<\/h3>\n<\/p><\/div>\n<div class=\"card-content\">\n<div class=\"architecture-phase\">\n<div class=\"phase-title\">Bronze Layer (Raw)<\/div>\n<p>            \u2022 Ingest data in original format<br \/>\n            \u2022 Minimal transformation<br \/>\n            \u2022 Data lake storage (Parquet, JSON)<br \/>\n            \u2022 Preserve data lineage and audit trail<br \/>\n            \u2022 Examples: Raw logs, API responses, file uploads\n          <\/div>\n<div class=\"architecture-phase\">\n<div class=\"phase-title\">Silver Layer (Refined)<\/div>\n<p>            \u2022 Cleaned and validated data<br \/>\n            \u2022 Standardized schemas<br \/>\n            \u2022 Data quality checks applied<br \/>\n            \u2022 Deduplication and error handling<br \/>\n            \u2022 Examples: Cleaned customer data, validated transactions\n          <\/div>\n<div class=\"architecture-phase\">\n<div class=\"phase-title\">Gold Layer (Curated)<\/div>\n<p>            \u2022 Business-ready datasets<br \/>\n            \u2022 Aggregated and enriched data<br \/>\n            \u2022 Optimized for analytics<br \/>\n            \u2022 Data mart and dimensional modeling<br \/>\n            \u2022<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udd27 Data Engineering Cheat Sheet Complete guide to data engineering tools, frameworks, architectures, and best practices \ud83c\udfaf Core DE Concepts \ud83c\udfd7\ufe0f Data Pipeline Architecture Extract, Transform, Load (ETL) vs Extract, <span class=\"readmore\"><a href=\"https:\/\/uplatz.com\/blog\/data-engineering-cheat-sheet\/\">Read More &#8230;<\/a><\/span><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2452,839],"tags":[],"class_list":["post-4326","post","type-post","status-publish","format-standard","hentry","category-cheat-sheet","category-data-engineering"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Data Engineering Cheat Sheet | Uplatz Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/uplatz.com\/blog\/data-engineering-cheat-sheet\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Data Engineering Cheat Sheet | Uplatz Blog\" \/>\n<meta property=\"og:description\" content=\"\ud83d\udd27 Data Engineering Cheat Sheet Complete guide to data engineering tools, frameworks, architectures, and best practices \ud83c\udfaf Core DE Concepts \ud83c\udfd7\ufe0f Data Pipeline Architecture Extract, Transform, Load (ETL) vs Extract, Read More ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/uplatz.com\/blog\/data-engineering-cheat-sheet\/\" \/>\n<meta property=\"og:site_name\" content=\"Uplatz Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Uplatz-1077816825610769\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-07T23:10:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-08T00:13:59+00:00\" \/>\n<meta name=\"author\" content=\"uplatzblog\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@uplatz_global\" \/>\n<meta name=\"twitter:site\" content=\"@uplatz_global\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"uplatzblog\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/data-engineering-cheat-sheet\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/data-engineering-cheat-sheet\\\/\"},\"author\":{\"name\":\"uplatzblog\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/person\\\/8ecae69a21d0757bdb2f776e67d2645e\"},\"headline\":\"Data Engineering Cheat Sheet\",\"datePublished\":\"2025-08-07T23:10:29+00:00\",\"dateModified\":\"2025-08-08T00:13:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/data-engineering-cheat-sheet\\\/\"},\"wordCount\":1434,\"publisher\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#organization\"},\"articleSection\":[\"Cheat Sheet\",\"Data Engineering\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/data-engineering-cheat-sheet\\\/\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/data-engineering-cheat-sheet\\\/\",\"name\":\"Data Engineering Cheat Sheet | Uplatz Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#website\"},\"datePublished\":\"2025-08-07T23:10:29+00:00\",\"dateModified\":\"2025-08-08T00:13:59+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/data-engineering-cheat-sheet\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/uplatz.com\\\/blog\\\/data-engineering-cheat-sheet\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/data-engineering-cheat-sheet\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Data Engineering Cheat Sheet\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/\",\"name\":\"Uplatz Blog\",\"description\":\"Uplatz is a global IT Training &amp; Consulting company\",\"publisher\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#organization\",\"name\":\"uplatz.com\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/11\\\/Uplatz-Logo-Copy-2.png\",\"contentUrl\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/11\\\/Uplatz-Logo-Copy-2.png\",\"width\":1280,\"height\":800,\"caption\":\"uplatz.com\"},\"image\":{\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Uplatz-1077816825610769\\\/\",\"https:\\\/\\\/x.com\\\/uplatz_global\",\"https:\\\/\\\/www.instagram.com\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/7956715?trk=tyah&amp;amp;amp;amp;trkInfo=clickedVertical:company,clickedEntityId:7956715,idx:1-1-1,tarId:1464353969447,tas:uplatz\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/uplatz.com\\\/blog\\\/#\\\/schema\\\/person\\\/8ecae69a21d0757bdb2f776e67d2645e\",\"name\":\"uplatzblog\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g\",\"caption\":\"uplatzblog\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Data Engineering Cheat Sheet | Uplatz Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/uplatz.com\/blog\/data-engineering-cheat-sheet\/","og_locale":"en_US","og_type":"article","og_title":"Data Engineering Cheat Sheet | Uplatz Blog","og_description":"\ud83d\udd27 Data Engineering Cheat Sheet Complete guide to data engineering tools, frameworks, architectures, and best practices \ud83c\udfaf Core DE Concepts \ud83c\udfd7\ufe0f Data Pipeline Architecture Extract, Transform, Load (ETL) vs Extract, Read More ...","og_url":"https:\/\/uplatz.com\/blog\/data-engineering-cheat-sheet\/","og_site_name":"Uplatz Blog","article_publisher":"https:\/\/www.facebook.com\/Uplatz-1077816825610769\/","article_published_time":"2025-08-07T23:10:29+00:00","article_modified_time":"2025-08-08T00:13:59+00:00","author":"uplatzblog","twitter_card":"summary_large_image","twitter_creator":"@uplatz_global","twitter_site":"@uplatz_global","twitter_misc":{"Written by":"uplatzblog","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/uplatz.com\/blog\/data-engineering-cheat-sheet\/#article","isPartOf":{"@id":"https:\/\/uplatz.com\/blog\/data-engineering-cheat-sheet\/"},"author":{"name":"uplatzblog","@id":"https:\/\/uplatz.com\/blog\/#\/schema\/person\/8ecae69a21d0757bdb2f776e67d2645e"},"headline":"Data Engineering Cheat Sheet","datePublished":"2025-08-07T23:10:29+00:00","dateModified":"2025-08-08T00:13:59+00:00","mainEntityOfPage":{"@id":"https:\/\/uplatz.com\/blog\/data-engineering-cheat-sheet\/"},"wordCount":1434,"publisher":{"@id":"https:\/\/uplatz.com\/blog\/#organization"},"articleSection":["Cheat Sheet","Data Engineering"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/uplatz.com\/blog\/data-engineering-cheat-sheet\/","url":"https:\/\/uplatz.com\/blog\/data-engineering-cheat-sheet\/","name":"Data Engineering Cheat Sheet | Uplatz Blog","isPartOf":{"@id":"https:\/\/uplatz.com\/blog\/#website"},"datePublished":"2025-08-07T23:10:29+00:00","dateModified":"2025-08-08T00:13:59+00:00","breadcrumb":{"@id":"https:\/\/uplatz.com\/blog\/data-engineering-cheat-sheet\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/uplatz.com\/blog\/data-engineering-cheat-sheet\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/uplatz.com\/blog\/data-engineering-cheat-sheet\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/uplatz.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Data Engineering Cheat Sheet"}]},{"@type":"WebSite","@id":"https:\/\/uplatz.com\/blog\/#website","url":"https:\/\/uplatz.com\/blog\/","name":"Uplatz Blog","description":"Uplatz is a global IT Training &amp; Consulting company","publisher":{"@id":"https:\/\/uplatz.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/uplatz.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/uplatz.com\/blog\/#organization","name":"uplatz.com","url":"https:\/\/uplatz.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/uplatz.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2016\/11\/Uplatz-Logo-Copy-2.png","contentUrl":"https:\/\/uplatz.com\/blog\/wp-content\/uploads\/2016\/11\/Uplatz-Logo-Copy-2.png","width":1280,"height":800,"caption":"uplatz.com"},"image":{"@id":"https:\/\/uplatz.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Uplatz-1077816825610769\/","https:\/\/x.com\/uplatz_global","https:\/\/www.instagram.com\/","https:\/\/www.linkedin.com\/company\/7956715?trk=tyah&amp;amp;amp;amp;trkInfo=clickedVertical:company,clickedEntityId:7956715,idx:1-1-1,tarId:1464353969447,tas:uplatz"]},{"@type":"Person","@id":"https:\/\/uplatz.com\/blog\/#\/schema\/person\/8ecae69a21d0757bdb2f776e67d2645e","name":"uplatzblog","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7f814c72279199f59ded4418a8653ad15f5f8904ac75e025a4e2abe24d58fa5d?s=96&d=mm&r=g","caption":"uplatzblog"}}]}},"_links":{"self":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts\/4326","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/comments?post=4326"}],"version-history":[{"count":2,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts\/4326\/revisions"}],"predecessor-version":[{"id":4328,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/posts\/4326\/revisions\/4328"}],"wp:attachment":[{"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/media?parent=4326"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/categories?post=4326"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/uplatz.com\/blog\/wp-json\/wp\/v2\/tags?post=4326"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}