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
-
Zaloguj się na
https://cloud.saiku.bi/. -
Idź do Pliki na lewym pasku bocznym.
-
Przeciągnij i upuść plik na obszar wgrywania albo kliknij Wgraj plik i wybierz z filesystem.
Gdy wgrywanie postępuje, Saiku Cloud:
- Streamuje plik do naszego bucketa R2 (storage’u zgodnego z S3).
- Stawia sesję DuckDB w procesie względem pliku.
- Uruchamia
DESCRIBE, by odczytać typy kolumn. - 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: miaraSum.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
SumnaAvg/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 jakoVARCHAR. Albo wyczyść dane źródłowe, albo nadpisz kolumnę naINTEGER(Saiku potraktuje nie-liczbowe wartości jakoNULL). - Daty w formacie nie-ISO (
12/31/2025zamiast2025-12-31) są inferowane jakoVARCHAR. 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: