"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जादू और मांसपेशियां: मेरे पावरलिफ्टिंग प्रशिक्षण के डेटा के साथ जादू और डकडीबी के साथ ईटीएल

जादू और मांसपेशियां: मेरे पावरलिफ्टिंग प्रशिक्षण के डेटा के साथ जादू और डकडीबी के साथ ईटीएल

2024-08-01 को प्रकाशित
ब्राउज़ करें:756

आप यहां पूरी पाइपलाइन तक पहुंच सकते हैं

जादूगर

अपनी आखिरी पोस्ट में, मैंने अपने पावरलिफ्टिंग प्रशिक्षण डेटा को देखने के लिए पायथन और लुकर स्टूडियो का उपयोग करके बनाए गए डैशबोर्ड के बारे में लिखा था। इस पोस्ट में मैं आपको उसी डेटासेट का उपयोग करके ईटीएल (एक्सट्रैक्ट, ट्रांसफॉर्म, लोड) पाइपलाइन के चरण दर चरण बताऊंगा।

पाइपलाइन बनाने के लिए हम पाइपलाइन को व्यवस्थित करने के लिए Mage का उपयोग करेंगे और डेटा को बदलने और लोड करने के लिए Python का उपयोग करेंगे, अंतिम चरण के रूप में हम रूपांतरित डेटा को DuckDB डेटाबेस में निर्यात करेंगे।

मैज को निष्पादित करने के लिए, हम आधिकारिक डॉकर छवि का उपयोग करने जा रहे हैं:

docker pull mageai/mageai:latest

पाइपलाइन इस तरह दिखेगी:

Image description

निकालना

निष्कर्षण सरल होगा, हमें बस एक सीएसवी फ़ाइल को पढ़ना होगा और उसके साथ एक पांडा डेटाफ्रेम बनाना होगा, ताकि हम अगले चरण पर आगे बढ़ सकें। डेटा लोडर ब्लॉक का उपयोग करते हुए, हमारे पास काम करने के लिए पहले से ही एक टेम्पलेट है, बस read_csv() फ़ंक्शन में "sep" पैरामीटर सेट करना याद रखें, ताकि डेटा सही तरीके से लोड हो।

from mage_ai.io.file import FileIO
import pandas as pd

if 'data_loader' not in globals():

    from mage_ai.data_preparation.decorators import data_loader

if 'test' not in globals():

    from mage_ai.data_preparation.decorators import test

@data_loader
def load_data_from_file(*args, **kwargs):

    filepath = 'default_repo/data_strong.csv'
    df = pd.read_csv(filepath, sep=';')  

    return df

@test
def test_output(output, *args) -> None:
    assert output is not None, 'The output is undefined'`

परिवर्तन

इस चरण में, ट्रांसफार्मर ब्लॉक का उपयोग करके, जिसमें चुनने के लिए बहुत सारे टेम्पलेट हैं, हम एक कस्टम टेम्पलेट का चयन करेंगे।

हमें जो परिवर्तन करना है वह मूल रूप से व्यायाम नाम कॉलम का मानचित्रण है, ताकि हम पहचान सकें कि शरीर का कौन सा अंग विशिष्ट व्यायाम से मेल खाता है।

import pandas as pd

if 'transformer' not in globals():

    from mage_ai.data_preparation.decorators import transformer

if 'test' not in globals():

    from mage_ai.data_preparation.decorators import test

body_part = {'Squat (Barbell)': 'Pernas',

    'Bench Press (Barbell)': 'Peitoral',

    'Deadlift (Barbell)': 'Costas',

    'Triceps Pushdown (Cable - Straight Bar)': 'Bracos',

    'Bent Over Row (Barbell)': 'Costas',

    'Leg Press': 'Pernas',

    'Overhead Press (Barbell)': 'Ombros',

    'Romanian Deadlift (Barbell)': 'Costas',

    'Lat Pulldown (Machine)': 'Costas',

    'Bench Press (Dumbbell)': 'Peitoral',

    'Skullcrusher (Dumbbell)': 'Bracos',

    'Lying Leg Curl (Machine)': 'Pernas',

    'Hammer Curl (Dumbbell)': 'Bracos',

    'Overhead Press (Dumbbell)': 'Ombros',

    'Lateral Raise (Dumbbell)': 'Ombros',

    'Chest Press (Machine)': 'Peitoral',

    'Incline Bench Press (Barbell)': 'Peitoral',

    'Hip Thrust (Barbell)': 'Pernas',

    'Agachamento Pausado ': 'Pernas',

    'Larsen Press': 'Peitoral',

    'Triceps Dip': 'Bracos',

    'Farmers March ': 'Abdomen',

    'Lat Pulldown (Cable)': 'Costas',

    'Face Pull (Cable)': 'Ombros',

    'Stiff Leg Deadlift (Barbell)': 'Pernas',

    'Bulgarian Split Squat': 'Pernas',

    'Front Squat (Barbell)': 'Pernas',

    'Incline Bench Press (Dumbbell)': 'Peitoral',

    'Reverse Fly (Dumbbell)': 'Ombros',

    'Push Press': 'Ombros',

    'Good Morning (Barbell)': 'Costas',

    'Leg Extension (Machine)': 'Pernas',

    'Standing Calf Raise (Smith Machine)': 'Pernas',

    'Skullcrusher (Barbell)': 'Bracos',

    'Strict Military Press (Barbell)': 'Ombros',

    'Seated Leg Curl (Machine)': 'Pernas',

    'Bench Press - Close Grip (Barbell)': 'Peitoral',

    'Hip Adductor (Machine)': 'Pernas',

    'Deficit Deadlift (Barbell)': 'Pernas',

    'Sumo Deadlift (Barbell)': 'Costas',

    'Box Squat (Barbell)': 'Pernas',

    'Seated Row (Cable)': 'Costas',

    'Bicep Curl (Dumbbell)': 'Bracos',

    'Spotto Press': 'Peitoral',

    'Incline Chest Fly (Dumbbell)': 'Peitoral',

    'Incline Row (Dumbbell)': 'Costas'}


@transformer
def transform(data, *args, **kwargs):
    strong_data = data[['Date', 'Workout Name', 'Exercise Name', 'Weight', 'Reps',    'Workout Duration']]
    strong_data['Body part'] = strong_data['Exercise Name'].map(body_part)

    return strong_data

@test
def test_output(output, *args) -> None:
    assert output is not None, 'The output is undefined'

मैज की एक दिलचस्प विशेषता यह है कि हम ट्रांसफॉर्मर ब्लॉक के अंदर किए जा रहे परिवर्तनों की कल्पना कर सकते हैं, ऐड चार्ट विकल्प का उपयोग करके कॉलम बॉडी पार्ट का उपयोग करके पाई ग्राफ उत्पन्न करना संभव है।

Image description

भार

अब डेटा को DuckDB पर लोड करने का समय आ गया है। डॉकर छवि में हमारे पास पहले से ही DuckDB है, इसलिए हमें बस अपनी पाइपलाइन में एक और ब्लॉक शामिल करना होगा। आइए डेटा एक्सपोर्टर ब्लॉक को SQL टेम्पलेट के साथ शामिल करें ताकि हम एक तालिका बना सकें और डेटा डाल सकें।

CREATE OR REPLACE TABLE powerlifting 
(
    _date DATE,
    workout_name STRING,
    exercise_name STRING,
    weight STRING,
    reps STRING,
    workout_duration STRING,
    body_part STRING
);

INSERT INTO powerlifting SELECT * FROM {{ df_1 }};

निष्कर्ष

मैज पाइपलाइनों को व्यवस्थित करने, ईटीएल से जुड़े विशिष्ट कार्यों को विकसित करने के लिए टेम्पलेट्स का एक पूरा सेट प्रदान करने वाला एक शक्तिशाली उपकरण है। इस पोस्ट में हमारे पास डेटा की पाइपलाइन बनाने के लिए Mage का उपयोग शुरू करने के तरीके के बारे में विस्तृत विवरण था। भविष्य की पोस्ट में हम इस अद्भुत ढांचे के बारे में और अधिक जानने जा रहे हैं।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/deadpunnk/magic-and-muscles-etl-with-magic-and-duckdb-with-data-from-my-powerlifting-training-2ocj?1यदि कोई है उल्लंघन, हटाने के लिए कृपया [email protected] से संपर्क करें
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3