Proses ETL (Extract, Transform, Load) adalah asas untuk mengurus data dengan cekap, terutamanya dalam aplikasi yang memerlukan pembuatan keputusan pantas berdasarkan data masa nyata. Dalam artikel ini, kami akan meneroka proses ETL menggunakan contoh praktikal yang melibatkan dagangan mata wang kripto masa nyata daripada API Binance. Kod Python yang disediakan menggambarkan cara untuk mengekstrak data perdagangan, mengubahnya menjadi format yang boleh digunakan, memuatkannya ke dalam pangkalan data SQLite dan memvisualisasikan data dengan plot masa nyata.
Contoh Projek ETL : https://github.com/vcse59/FeatureEngineering/tree/main/Real-Time-CryptoCurrency-Price-Tracker
1. Ekstrak
Langkah pertama proses ETL ialah Pengekstrakan, yang melibatkan pengumpulan data daripada pelbagai sumber. Dalam kes ini, data diekstrak melalui sambungan WebSocket ke API Binance Testnet. Sambungan ini membolehkan penstriman masa nyata bagi dagangan BTC/USDT.
Begini cara pengekstrakan dilaksanakan dalam kod:
with websockets.connect(url) as ws: response = await ws.recv() trade_data = json.loads(response)
Setiap mesej yang diterima mengandungi data perdagangan penting, termasuk harga, kuantiti dan cap masa, yang diformatkan sebagai JSON.
2. Ubah
Setelah data diekstrak, ia menjalani proses Transformasi. Langkah ini membersihkan dan menyusun data untuk menjadikannya lebih berguna. Dalam contoh kami, transformasi termasuk menukar cap masa daripada milisaat kepada format yang boleh dibaca dan menyusun data ke dalam jenis yang sesuai untuk pemprosesan selanjutnya.
price = float(trade_data['p']) quantity = float(trade_data['q']) timestamp = int(trade_data['T']) trade_time = datetime.fromtimestamp(timestamp / 1000.0)
Ini memastikan harga dan kuantiti disimpan sebagai terapung, dan cap masa ditukar kepada objek datetime untuk manipulasi dan analisis yang lebih mudah.
3. Muatkan
Langkah terakhir ialah Memuatkan, di mana data yang diubah disimpan dalam pangkalan data sasaran. Dalam kod kami, pangkalan data SQLite berfungsi sebagai medium storan untuk data perdagangan.
Proses pemuatan diuruskan oleh fungsi berikut:
def save_trade_to_db(price, quantity, timestamp): conn = sqlite3.connect('trades.db') cursor = conn.cursor() # Create a table if it doesn't exist cursor.execute(''' CREATE TABLE IF NOT EXISTS trades ( id INTEGER PRIMARY KEY AUTOINCREMENT, price REAL, quantity REAL, timestamp TEXT ) ''') # Insert the trade data cursor.execute(''' INSERT INTO trades (price, quantity, timestamp) VALUES (?, ?, ?) ''', (price, quantity, trade_time)) conn.commit() conn.close()
Fungsi ini menyambung kepada pangkalan data SQLite, mencipta jadual jika ia tidak wujud dan memasukkan data perdagangan.
4. Visualisasikan
Selain menyimpan data, adalah penting untuk menggambarkannya untuk pemahaman yang lebih baik dan membuat keputusan. Kod yang disediakan termasuk fungsi untuk merancang dagangan dalam masa nyata:
def plot_trades(): if len(trades) > 0: timestamps, prices, quantities = zip(*trades) plt.subplot(2, 1, 1) plt.cla() # Clear the previous plot for real-time updates plt.plot(timestamps, prices, label='Price', color='blue') plt.ylabel('Price (USDT)') plt.legend() plt.title('Real-Time BTC/USDT Prices') plt.xticks(rotation=45) plt.subplot(2, 1, 2) plt.cla() # Clear the previous plot for real-time updates plt.plot(timestamps, quantities, label='Quantity', color='orange') plt.ylabel('Quantity') plt.xlabel('Time') plt.legend() plt.xticks(rotation=45) plt.tight_layout() # Adjust layout for better spacing plt.pause(0.1) # Pause to update the plot
Fungsi ini menjana dua subplot: satu untuk harga dan satu lagi untuk kuantiti. Ia menggunakan perpustakaan matplotlib untuk menggambarkan data secara dinamik, membolehkan pengguna memerhati arah aliran pasaran dalam masa nyata.
Kesimpulan
Contoh ini menyerlahkan proses ETL, menunjukkan cara data boleh diekstrak daripada API WebSocket, diubah untuk analisis, dimuatkan ke dalam pangkalan data dan divisualisasikan untuk maklum balas segera. Rangka kerja ini penting untuk membina aplikasi yang perlu membuat keputusan termaklum berdasarkan data masa nyata, seperti platform dagangan dan alat analisis pasaran.
Atas ialah kandungan terperinci Memahami Proses ETL dengan Data Masa Nyata: Pengekstrakan, Transformasi, Pemuatan dan Visualisasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!