Data Engineer
-- Daná tabulka numbers s jednou sloupcem num (celá čísla, mohou se opakovat). -- Napište SQL dotaz, který rozdělí čísla do dvou sloupců: -- even – sudá čísla (seřazená vzestupně) -- odd – lichá čísla (seřazená vzestupně) -- Čísla by měla být řádek po řádku: v prvním řádku – první sudé a první liché, -- ve druhém řádku – druhé sudé a druhé liché, atd. -- Pokud je v jedné skupině více čísel než v jiné, na chybějících místech by měly být NULL. -- původní tabulka -- num -- --------- -- [phone] -- výsledek dotazu -- even | odd -- -----|----- -- 2 | 1 -- 4 | 3 -- 6 | 5 -- 8 | 7 -- 10 | 9 -- NULL | 11 -- NULL | 11
Které magické metody Pythonu by měly být zohledněny?
Jak odpovídá vaše zkušenost pozici: doprovod a analýza procesů načítání, sledování a odhalování anomálií, testování a nasazení vylepšení do produkce, podpora druhé linie, kontrola technické dokumentace?
Na co jsou okénkové funkce?
Jaké omezení existuje při použití DISTINCT ON v PostgreSQL s ORDER BY?
Dostal jsi úkol s číslem ABC. Jaký je tvůj pořadí akcí v Git při začátku práce?
Pracoval jste někdy s dekorátory v Pythonu? Co jsou a kde se používají?
Jaké je nebezpečí shuffle v Spark?
Jak jste řešili problémy s optimalizací, když dotaz trvá dlouho a provádí úplný sken? Jak byste přistoupili k takové nové úloze?
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
Co můžeš říct o SOAP API?
Měl jsi zkušenosti s Docker obrazy, nastavováním prostředí na virtuálním stroji?
Kdy lze použít rodinu formátů CSV?
Jak aplikovat funkci na všechny řádky nebo prvky v pandas?
Na co je třeba dbát při parsování velkých XML z hlediska paměti, rychlosti a správnosti?
Jak přesně jste četli Parquet?
Znáte UDF (uživatelsky definované funkce) v ClickHouse, pracovali jste s nimi?
Musel jste přímo pracovat se Sparkem? Jaká je jeho nevýhoda?
Na jakých projektech v Scala jste dříve pracoval? Podělte se o konkrétní úkoly a úspěchy v této technologii.
Jak jsi psal DAG a úlohy v Airflow: ručně nebo šablonami?