Przejdź do głównej zawartości

Odpytywanie wgranego pliku przez DuckDB

Poziom Starter Saiku Cloud obsługuje ścieżkę danych przez wgranie pliku. Wgrywasz parquet lub CSV; Saiku przechowuje go w R2; silnik odpytuje go przez DuckDB w procesie. Hurtownia klienta niepotrzebna; bez firewalla do ustawiania.

To najprostsza ścieżka „chcę zobaczyć, jak Saiku coś odpytuje” dla osób oceniających i małych obciążeń.

Wpływ na poziom: [Starter] — file-upload to ścieżka danych poziomu Starter. Klienci [Team] + [Business] zwykle mają własną hurtownię, więc trafiają do innej dokumentacji połączeń, choć file-upload działa na każdym poziomie.

Sterownik: Saiku Cloud dostarcza oficjalny sterownik JDBC DuckDB. Pliki są odpytywane w procesie — bez round-tripu sieciowego na ścieżce danych.

Czego będziesz potrzebować

  • Pliku parquet, CSV lub JSON ≤ 5 GB.
  • Wyobrażenia, które kolumny są wymiarami, a które miarami (auto-inferujemy, jeśli pozwolisz).

Krok 1 — Wgraj plik

  1. Zaloguj się na https://cloud.saiku.bi/.

  2. Idź do Pliki na lewym pasku bocznym.

  3. Przeciągnij i upuść plik na obszar wgrywania albo kliknij Wgraj plik i wybierz z filesystem.

Gdy wgrywanie postępuje, Saiku Cloud:

  1. Streamuje plik do naszego bucketa R2 (storage’u zgodnego z S3).
  2. Stawia sesję DuckDB w procesie względem pliku.
  3. Uruchamia DESCRIBE, by odczytać typy kolumn.
  4. Zwraca schemę do dashboarda na przegląd.

Dla parquet i JSON inferencja schemy jest dokładna (format pliku niesie typy kolumn). Dla CSV wąchamy pierwsze 10 000 wierszy i zgadujemy — zwykle prawidłowo, ale możesz nadpisać typy w następnym kroku, jeśli coś wyszło źle.

Krok 2 — Przejrzyj zaproponowaną schemę

Po wgraniu Saiku nawiguje Cię do ekranu przeglądu schemy. Kolumny są wymienione z inferowanymi typami:

  • INTEGER / BIGINT / DOUBLE → liczbowe. Domyślna propozycja: miara Sum.
  • VARCHAR / TEXT → kategorialne. Domyślna propozycja: wymiar.
  • TIMESTAMP / DATE → czasowe. Domyślna propozycja: wymiar z hierarchią czasową rok/miesiąc/dzień.

Możesz:

  • Wyrzucić kolumny, których nie potrzebujesz (tnie czas ładowania kostki).
  • Zmienić kolumnę liczbową z Sum na Avg / Count / Min / Max.
  • Wypromować kolumnę stringową do hierarchii wymiarowej, jeśli ma naturalne poziomy (region → kraj → miasto).
  • Dodać obliczaną miarę (wyrażenie Mondrian MDX — dla zaawansowanych).

Albo zaakceptuj wartości domyślne i kliknij Zaproponuj schemę. Większość przypadkowych oceniających robi dokładnie tak.

Krok 3 — Otwórz kostkę

Po zapisie Saiku nawiguje Cię do Analizy. Twój wgrany plik jest teraz odpytywalną kostką. Przeciągaj wymiary na wiersze/kolumny, przeciągaj miary do wartości, zobacz wynik.

Odświeżanie danych

Ponowne wgranie tego samego pliku (ta sama nazwa) zastępuje go. Saiku ponownie uruchamia inferencję schemy + flaguje wszelkie zmiany typów kolumn. Jeśli nowy plik ma kolumny, które nie pasują do istniejącej schemy (zmieniłeś nazwę kolumny, dodałeś nową), zostaniesz zapytany o:

  • Ponowne zaproponowanie — wygeneruj świeżą schemę. Traci wszelkie podkręcenia per kolumna, które zrobiłeś.
  • Zachowaj + uzgodnij — zachowuje Twoje podkręcenia; usuwa odwołania do kolumn, których już nie ma.

Pułapki formatu plików

CSV: inferencja typów

CSV nie niesie typów kolumn. Saiku Cloud wącha pierwsze 10 000 wierszy i zgaduje. Typowe niespodzianki:

  • Kolumna, która głównie ma liczby całkowite, ale okazjonalnie "NA" lub "-", jest inferowana jako VARCHAR. Albo wyczyść dane źródłowe, albo nadpisz kolumnę na INTEGER (Saiku potraktuje nie-liczbowe wartości jako NULL).
  • Daty w formacie nie-ISO (12/31/2025 zamiast 2025-12-31) są inferowane jako VARCHAR. Czyściej skonwertować do ISO w Twoim potoku źródłowym; Saiku nie auto-wykrywa formatów dat zależnych od locale.

Parquet: preferuj ten format

Parquet niesie typy kolumn + statystyki natywnie. Inferencja schemy jest dokładna, rozmiar pliku to zwykle 1/4 ekwiwalentu CSV, a DuckDB może pominąć całe row-groupy przy filtrowaniu. Używaj parquet, jeśli masz wybór.

JSON: zagnieżdżone pola

JSON-lines (jeden obiekt na linię) jest obsługiwany. Głęboko zagnieżdżone struktury (obiekty-w-tablicach-w-obiektach) są spłaszczane do kropkowanych nazw kolumn — customer.address.city staje się kolumną customer.address.city. Jeśli Twoje zagnieżdżenie jest bardzo głębokie, liczba kolumn balonuje; spłaszcz w Twoim potoku źródłowym, jeśli masz.

Rozmiar + retencja

Czego NIE dostajesz w tym przepływie

  • Złączeń wielu plików — każde wgranie to własna kostka. Aby połączyć dwa pliki, zrób to w Twoim potoku źródłowym przed wgraniem, albo użyj biblioteki kostek + wielo-plikowej schemy Mondrian (zaawansowane).
  • Żywych danych — wgrania to migawki w punkcie czasu. Dla żywych danych podłącz hurtownię przez przepływy BYOC zamiast.
  • Niestandardowego partycjonowania — DuckDB odpytuje cały plik. Kostki nad 1 GB czują się ociężałe przy pierwszym zapytaniu (kolejne zapytania są buforowane). Dla większych obciążeń rozważ MotherDuck — zobacz Podłączanie MotherDuck.

Spróbuj z FoodMart

Chcesz przetestować Saiku Cloud z tym dialektem przed podłączeniem własnych danych? Pobierz przykładowy zbiór FoodMart spakowany dla DuckDB:

Przykładowy zbiór FoodMart dla DuckDB