Data Engineer
Erzählen Sie uns von Best Practices bei der Verwendung von Indizes – wann und wie oft sie eingesetzt werden.
Wie arbeitest du normalerweise mit Git im Team? Und was ist eine Merge Request?
Bericht für das Logistikunternehmen Sie sind Analyst bei einem Logistikunternehmen, das die Operationen in den Lagern erfasst. Sie müssen einen Bericht über die Effizienz jedes Lagers erstellen. Berechnen Sie für jedes Lager: • die Gesamtzahl der Operationen (count_operations); • die Gesamtzahl der im Lager verarbeiteten Waren (sum_quantity); • die durchschnittliche Bearbeitungszeit der Operation (avg_processing_time), nur für Operationen mit einer angegebenen Zeit (nicht NULL), auf die nächste ganze Zahl gerundet; • die maximale und minimale Anzahl der in einer Operation verarbeiteten Waren (max_quantity, min_quantity); • die Anzahl der Operationen jedes Typs («Lieferung», «Versand», «Transfer») in separaten Spalten: supply_operations, shipment_operations, transfer_operations. Filtern Sie die Lager, bei denen die Gesamtzahl der Operationen mehr als 2 beträgt und die durchschnittliche Bearbeitungszeit 60 Minuten nicht übersteigt. Sortieren Sie das Ergebnis nach Lager-ID aufsteigend. Eingabeformat Tabelle operations: • operation_id (int) — eindeutiger Bezeichner der Operation • warehouse_id (int) — Lager-ID • operation_type (text) — Operationstyp: «Lieferung», «Versand», «Transfer» • quantity (int) — Anzahl der Waren in der Operation • operation_date (timestamp) — Datum und Uhrzeit der Operation • processing_time (int) — Bearbeitungszeit der Operation Die Spalte processing_time kann NULL-Werte enthalten. Ausgabeformat Die Abfrage sollte eine Tabelle mit den Feldern in folgender Reihenfolge zurückgeben: • warehouse_id (int) — eindeutiger Lager-ID • count_operations (int) — Gesamtzahl der Operationen im Lager • sum_quantity (int) — Gesamtzahl der verarbeiteten Waren im Lager • avg_processing_time (numeric) — durchschnittliche Bearbeitungszeit der Operation (in Minuten), nur für Operationen mit nicht NULL Zeit, auf die nächste ganze Zahl gerundet • max_quantity (int) — maximale Anzahl der in einer Operation verarbeiteten Waren • min_quantity (int) — minimale Anzahl der in einer Operation verarbeiteten Waren • supply_operations (int) — Anzahl der Operationen vom Typ «Lieferung» • shipment_operations (int) — Anzahl der Operationen vom Typ «Versand» • transfer_operations (int) — Anzahl der Operationen vom Typ «Transfer»
Wann kannst du Feedback geben und hast du Angebote in der Hand?
Es wurde eine spezielle Sequenz namens even_sequence erstellt, die nur gerade Zahlen generiert. Was muss anstelle von [...] eingesetzt werden, damit im Falle, dass kein Wert für even_column bei der Einfügung angegeben wurde, der Wert aus even_sequence genommen wird? create table some_table( even_column [...] ); integer computed as nextval('even_sequence') integer generated always as identity (start with 2 increment by 2) integer default nextval('even_sequence') integer unique default nextval('even_sequence') integer generated by even_sequence’
Wie wurden Tabellen und Abfragen optimiert: Partitionen, Indizes, Auswahllogik?
Nach welchen Feldern hast du die Daten in Greenplum verteilt?
Welche Datenqualitätsprüfungen wurden im Data Vault durchgeführt?
Haben Sie Bridge und PIT-Tabellen im Data Vault verwendet? Geben Sie ein Beispiel und erklären Sie den Zweck.
Haben Sie Erfahrung mit Table Engine Join in ClickHouse?
Wie organisieren Sie normalerweise Ihre Arbeit an Aufgaben und wie verfolgen Sie den Fortschritt?
In welcher Reihenfolge werden die Hauptoperationen in SQL durchgeführt: SELECT, FROM usw.?
Wie überträgt man Daten zwischen Aufgaben in Airflow?
Gibt es Funktionen und Möglichkeiten in Greenplum, die in herkömmlichem MySQL und anderen Dialekten nicht vorhanden sind?
Geben Sie ein Beispiel, bei dem Sie Prozesse oder Werkzeuge für das Team verbessern konnten.
Es wurde die in der Abbildung angegebene Tabellenstruktur erstellt. Es ist notwendig, die in der Abbildung angegebene Abfrage auszuführen. Welchen Join-Typ muss man anstelle von [...] verwenden, damit in der Ergebnisliste für die Einträge mit type = 'table_aw' die Spalte 'naming' ausgefüllt ist, und für die Einträge mit type = 'table2' die Spalte 'serial_number'? create table multirelation( type varchar not null, entity_id integer not null ); create table table_aw( id integer primary key, naming varchar not null ); create table table2( id integer primary key, serial_number varchar not null ); -- Tabellenstruktur select m.type,m.entity_id, ta.naming, t2.serial_number from multirelation m [...] join table_aw ta on m.entity_id = ta.id and m.type='table_aw' [...] join table2 t2 on m.entity_id = t2.id and m.type='table2'; -- Abfrage Leer lassen inner cross right left
Wer waren die Datenverbraucher und wie wurden die Vitrinen aufgebaut?
Was ist passiert und wie kannst du die Arbeit zurückholen?
Unser Thema ist stark strukturiert, baumartig, die Daten sind roh — wie damit umgehen?
Was ist der Unterschied zwischen Greenplum und PostgreSQL?