Data Engineer
Vai tev ir bijušas ad-hoc uzdevumi, neskatoties uz skaidru tehnisko uzdevumu, un kā tu raugies uz ad-hoc pieprasījumiem un prioritāšu maiņām?
no interview.utils importēt get_clickhouse_client no airflow importēt DAG no airflow.operators.python importēt PythonOperator no airflow.sensors.external_task importēt ExternalTaskSensor no datetime importēt datetime importēt pandas kā pd importēt clickhouse_driver importēt os CLICKHOUSE_CLIENT = get_clickhouse_client() default_args = { "start_date": datetime(2024, 1, 1) } ar DAG( dag_id="datamarts.daily_revenue_per_country", default_args=default_args, schedule_interval="@daily", catchup=False ) kā dag: 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" ) 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( ... )
Kā optimizēja tabulas un vaicājumus: daļas, indeksi, izvēles loģika?
Kas ir Catalyst optimizators Spark un kādus konkrētus optimizācijas piemērus tas veic (piemēram, predicate pushdown)?
Kā salīdzināt sākotnējo („dzīvo”) un mērķa tabulu, ja avots pastāvīgi mainās?
Detalizēti algoritmu, kā no avota iegūt inkrementu, lai nekas netiktu zaudēts, mainot ielādes frekvenci.
Kā ir saistītas Spark sadalījumi un sadalījumi tabulās (piemēram, Iceberg)?
Kad var izmantot CSV formātu ģimeni?
Kā pandas piemēro funkciju visiem rindiņām vai elementiem?
Kas ir mainīgais var, kāda veida tas ir?
PostgreSQL ir nepieciešams optimizēt transakciju veiktspēju, izmantojot minimālo izolācijas līmeni, kurā: • paralēlās transakcijas var redzēt neizpildītas izmaiņas citām; • ir iespējami "netīri lasījumi" (dirty read). Kādu izolācijas līmeni jānorāda transakcijai, lai sasniegtu šo mērķi? netīrs lasījums nav iespējams PostgreSQL repeatable read read uncommitted read committed serializable
Vai jūs izmantojāt Bridge un PIT tabulas Data Vault? Sniedziet piemēru un paskaidrojiet to mērķi.
Vai esat strādājis ar FTP, lai saņemtu failus vai datus caur portālu?
Vai tev patīk vairāk strādāt kā eksperts individuāli vai izstrādātāju komandā?
Kas ir partizēšana? Kas ir sharding? Kas ir replikācija?
notifications tabulā ir lauks status, kura vērtības ir: 'sent', 'delivered', 'read'. Kurš vaicājums ir pareizs? select * from notifications where status like '%sent%' order by created_at desc limit 5 select * from notifications where status = 'read' order by created_at desc limit 5 select * from notifications order by status desc limit 5 select * from notifications where status not in ('sent', 'delivered') order by created_at asc limit 5 select * from notifications where status in ('sent', 'delivered') order by created_at desc limit 5
Kā tiek organizēti izlaišanas DBT? Vai izmantojat Airflow?
Ar kuriem datu avotiem jums izdevās strādāt? Kā tieši notika sadarbība ar avotiem?
Uzdevums #3 Jāatrod klienti, kuru pasūtījumu starpība ir lielāka par 60 dienām. Šiem klientiem jāparāda maksimālā starpība (gap_days). Pasūtījumu tabula: | order_id | customer_id | order_dt | |----------|-------------|------------| | 1 | 1 | [phone] | | 2 | 1 | [phone] | | 3 | 1 | [phone] | | 4 | 1 | [phone] | | 5 | 2 | [phone] | | 6 | 2 | [phone] | | 7 | 3 | [phone] | Galarezultāts: | customer_id | gap_days | |-------------|----------| | 1 | 123 | | 2 | 120 |
Ko var teikt par šīs vaicājuma pareizību? select * from sessions where ended_at is null and status != 'pending';