Data Engineer
Πείτε μας για τον εαυτό σας: εμπειρία, καθήκοντα, χαρακτηριστικά ή επιτεύγματα που είστε περήφανοι.
Έχετε εμπειρία με το FastAPI;
Πόσο συνολικά εργάστηκες με το Spark και πόσο βαθιά εμβαθύνθηκες σε αυτό;
dict1 = { (1, 2), [3, 4, 5] : 0 } var = 1, 2
Μίλησε για μια ενδιαφέρουσα εργασία στην εταιρεία τα τελευταία 2,5 χρόνια, για παράδειγμα σχετική με το ClickHouse.
Σε ποια κατάσταση μπορεί η αναζήτηση σε ένα λεξικό να επιδεινωθεί μέχρι την χειρότερη περίπτωση;
Πώς αντιμετωπίσατε τα προβλήματα βελτιστοποίησης όταν το ερώτημα διαρκεί πολύ και πραγματοποιεί πλήρη σάρωση; Πώς θα προσεγγίζατε μια τέτοια νέα εργασία;
Πώς προσθέτετε ένα κινούμενο μέσο όρο του συνολικού αριθμού παραγγελιών για την τρέχουσα και τις δύο προηγούμενες ημέρες ανά χρήστη;
def extract_from_s3(**kwargs): df = pd.read_csv("s3://my-bucket/data/transactions_{}.csv".format(datetime.now().strftime("%Y-%m-%d"))) kwargs["ti"].xcom_push(key="df", value=df.to_dict()) def load_to_raw_table(**kwargs): df = pd.DataFrame(kwargs["ti"].xcom_pull(task_ids="extract", key="df")) rows = [tuple(r) for r in df[["transaction_id", "user_id", "amount", "created_at"]].to_numpy()] CLICKHOUSE_CLIENT.execute( "INSERT INTO raw.transactions (transaction_id, user_id, amount, created_at) VALUES", rows ) def build_aggregate_view(): query = """ INSERT INTO datamarts.daily_revenue_per_country SELECT toDate(r.created_at) as event_date, u.country, sum(r.amount) as total_revenue FROM raw.transactions r LEFT JOIN core.userMetadata u ON r.user_id = u.UserId WHERE toDate(r.created_at) = '{}' GROUP BY event_date, u.country """.format(datetime.now().strftime("%Y-%m-%d")) CLICKHOUSE_CLIENT.execute(query) transactions_sensor = S3KeySensor( task_id="transactions_sensor", bucket_key="data/transactions_{}.csv".format(datetime.now().strftime("%Y-%m-%d")), bucket_name="my-bucket", aws_conn_id="aws_default", timeout=600, poke_interval=30, mode="poke" ) extract = PythonOperator( task_id="extract", python_callable=extract_from_s3, provide_context=True ) load = PythonOperator( task_id="load", python_callable=load_to_raw_table, provide_context=True ) aggregate = PythonOperator( task_id="aggregate", python_callable=build_aggregate_view ) transactions_sensor >> extract >> load >> aggregate
Τι κάνει ο παράμετρος depends_on_past στο Airflow;
Για ποιο λόγο χρειαζόσασταν γενικά το Data Vault;
Αναφέρετε την εργασία ρύθμισης αναπαραγωγής που λύσατε.
Χρησιμοποιήθηκε η μέθοδος σύγκρισης hashes εγγραφών για τον υπολογισμό της διαφοράς μεταξύ πηγής και πίνακα προορισμού;
Τι συνέβαινε όταν ενεργοποιούνταν ο περιορισμός ποιότητας δεδομένων: ειδοποίηση, πτώση, επανεκκίνηση;
Συγκρίνετε τις προσεγγίσεις ETL και ELT: ποια είναι η διαφορά και πότε εφαρμόζεται η καθεμία;
Πώς δούλευαν με το 1C: έπαιρναν δεδομένα απευθείας από τη βάση δεδομένων, μέσω ενός διαύλου ή με άλλο τρόπο;
Με ποιες βάσεις δεδομένων έχετε εργαστεί; Πώς λειτουργεί το MongoDB και πώς κλιμακώνεται;
Πώς προσδιορίσατε ότι η εγγραφή υπάρχει ήδη και δεν χρειάζεται να καταχωρηθεί ξανά;
NULL συν 5 — πόσο θα είναι;
Μπορεί κανείς να διαβάσει δεδομένα παράλληλα από ένα μόνο αρχείο Parquet στο Spark, ή μόνο με ένα πυρήνα σε μια εργασία;