Wyświetl kategorie

Synchronizuj DuckDB z Anvil.works według harmonogramu

Automatyzacja · DuckDB do Anvil.works

Trzymać Kowadło.works zgodnie z plikiem DuckDB, zgodnie z harmonogramem

Napisz zapytanie SQL raz. Query Streams uruchamia je zgodnie z Twoim harmonogramem, od pięciu minut do cotygodniowych, i zapisuje wiersze do tabeli danych Anvil.works. Dopasuj wiersze według klucza, aby zmiany trafiły na swoje miejsce, a wiersze, które opuściły zapytanie, zostały usunięte, lub po prostu dopisz. Bez Zapiera, skryptów i eksportów. Za pierwszym razem zajmie to około piętnastu minut, a plan darmowy to obejmuje.

Około 15 minut Nie potrzeba kodowania Plik pozostaje tam, gdzie jest Co 5 minut lub co tydzień
Utknąłeś w jakimś momencie? Po prostu zapytaj nas. Otwórz Wsparcie w Query Streams (menu w prawym górnym rogu → Wsparcie) i wyślij nam wiadomość. Przeczytają ją prawdziwi ludzie, a pytanie „Nie wiem, o co pyta ten ekran” jest jak najbardziej trafne.

Co z tego wyjdzie?

Logo DuckDBTabela danych Anvil.works, która przechowuje wiersze zwracane przez zapytanie DuckDB i jest aktualizowana według harmonogramu, od pięciu minut do cotygodniowych aktualizacji, z potwierdzeniem zmian po każdym uruchomieniu. Na przykład:

DuckDB holds your data in a file. Your team works in Anvil.works. The usual bridge is a hand-written import in your app that breaks quietly and copies one row at a time. Query Streams Automation does it differently: the Agent that already reads your DuckDB file runs your saved SQL on a schedule and writes the whole result into Anvil.works in one pass, matching rows by a key so the data table stays correct rather than growing.

GDZIE PRZECHOWYWANY JEST PLIKkomputer biurowy, serwer lub ten w domuTwój plik DuckDBsales.duckdb · pozostaje tutajAgent strumieni zapytańuruchamia zapisane zapytaniewedług twojego harmonogramuStrumienie zapytańszyfrowane łączetylko wiersze · napisane, nieodczytane przez nasGDZIE PRACUJE TWÓJ ZESPÓŁw aplikacji AnvilKowadło.worksTwoja tabela danych, aktualizowana na miejscu
Agent żyje z Twoimi danymi i uruchamia zapytanie zgodnie z harmonogramem. Anvil.works po prostu odbiera wiersze. Nikt nie musi niczego naciskać.

Czego będziesz potrzebować

Konto Query Streams

Plan darmowy wystarczy do tego poradnika. Zarejestruj się na my.querystreams.com.

DuckDB połączony przez agenta

The Agent installed on the computer that holds your DuckDB file, or on one that reads it from a network share, with the connection added in Data Agents. Not done yet? Najpierw połącz DuckDB; zajmie to około dziesięciu minut.

Zapisane zapytanie

SELECT, który chcesz zachować w synchronizacji, zapisany w Kreator zapytańKrok 1 poniżej pokazuje jeden z nich. Jeśli chcesz, aby zmienione wiersze były aktualizowane na miejscu, dodaj kolumnę, która jest unikatowa dla każdego wiersza, np. identyfikator.

Twoje dane logowania do Anvil.works

Wprowadź adres HTTPS swojej aplikacji Anvil oraz klucz łącznika ustawiony w aplikacji za pomocą funkcji connector.init_connector("key") z modułu querystreams. Query Streams sprawdza odpowiedzi aplikacji i wyświetla listę jej tabel danych.

Gdzie odbywa się praca? Na komputerze, na którym działa Agent. Uruchamia on zapytanie zgodnie z harmonogramem i zapisuje wiersze do Anvil.works, więc komputer musi pozostać włączony. Przeglądarkę można zamknąć. Sam Query Streams nigdy nie zapisuje wierszy.

File on another computer? The Agent does not have to run on the computer that holds your DuckDB file: it can read the file from a network share. Reaching a file on a network share, below, shows what that takes.

Skonfiguruj w sześciu krokach

  1. Zapisz zapytanie, które chcesz zachować w synchronizacji

    Otwórz Kreator zapytań, wybierz połączenie DuckDB (jeszcze nie połączony? zacznij tutaj) i napisz instrukcję SELECT, która zwraca dokładnie te wiersze i kolumny, których potrzebujesz w Anvil.works. Ta instrukcja pobiera kilka kolumn z zamówienia tabela:

    Przykład · SQL
    WYBIERZ order_id, customer_name, order_total Z main.orders ZAMÓW WEDŁUG order_total OPIS LIMIT 100;

    Uruchom to, a potem Zapisz Nadaj mu nazwę, którą rozpoznasz, na przykład „Zamówienia dla Anvil.works”. Zachowaj kolumnę unikalną dla każdego wiersza w SELECT, tutaj. numer_zamówieniaTo jest klucz, którego używa Full Sync do aktualizacji wierszy w miejscu. Edytuj i ponownie zapisz zapytanie później, a automatyzacja wykryje zmianę przy następnym uruchomieniu.

  2. Otwórz Automatyzację i wybierz Anvil.works

    W portalu otwórz Automatyzacja (górne menu Strumienie → Zaplanowane → Automatyzacja) i kliknij Nowa automatyzacja. Kreator ma pięć krótkich kroków. Na Krok 1 Kliknij Kowadło.works karta.

    A może wolisz „Zanim zaczniesz”? Kreator otwiera się tylko wtedy, gdy agent jest online i ma połączenie oraz istnieje co najmniej jedno zapisane zapytanie. Strona zawiera listę brakujących zapytań i linki do nich.

  3. Połącz Anvil.works

    NA Krok 2 strona przeprowadzi Cię przez stronę Anvil: dodaj kod zależności strumieni zapytań do swojej aplikacji w obszarze Ustawienia → Zależności → Strony trzecie, utwórz moduł serwera z z łącznika importu querystreams oraz connector.init_connector("twój klucz")i kliknij Wygeneruj bezpieczny klucz aby utworzyć ten klucz. Następnie wprowadź swój Adres URL aplikacji Anvil i to samo Klucz autoryzacji łącznika i kliknij Połączenie testowe. Twoja aplikacja potrzebuje Przyspieszone tabele włączone (Ustawienia → Tabele danych); strona sprawdza to ponownie.

  4. Wybierz miejsce, w którym będą lądować rzędy

    NA Krok 3 wybierz Tabela danych Wiersze powinny trafić do tabeli. Najpierw utwórz ją w aplikacji Anvil, jeśli chcesz, aby była pusta. Jeśli zawiera już wiersze, podgląd je pokaże i wyjaśni, co każdy tryb synchronizacji z nimi zrobi. Jedna automatyzacja na tabelę.

  5. Wybierz zapytanie i zdecyduj, jak mają trafić wiersze

    NA Krok 4 otwórz Zapisane zapytanie wyświetl listę i wybierz zapytanie z kroku 1. Query Streams uruchamia je raz, aby odczytać kolumny, informuje o liczbie zwróconych wierszy i pokazuje dwie opcje:

    Dołącz · szybko

    Dołącz

    Każde uruchomienie dodaje wiersze zapytania na dół tabeli danych. Nic nie jest aktualizowane ani usuwane, dlatego jest to szybki wybór w przypadku dzienników, zdarzeń i historii, które chcesz gromadzić. Nie jest potrzebna kolumna klucza. Wiersz, który powraca bez zmian, nie jest dodawany ponownie; wiersz, którego wartości uległy zmianie, jest dodawany poniżej jako nowy wiersz, a stary wiersz pozostaje.

    Pełna synchronizacja · lustra

    Pełna synchronizacja

    Wiersze są dopasowywane za pomocą klawisz kolumna, taka jak identyfikator zamówienia. Nowe wiersze są dodawane, zmienione wiersze są aktualizowane w miejscu, a wiersze, które nie są już zwracane przez zapytanie, są usuwane, w tym wiersze, które ktoś wprowadził ręcznie do tabeli danych, więc zachowaj ręcznie utworzone wiersze w innej tabeli danych. Jest to opcja dla zapasów, lejków, danych głównych i pulpitów nawigacyjnych.

    Pełna synchronizacja jest ustawiana dla każdej kolumny, co czyni ją użyteczną w przypadku współdzielonej tabeli danych:

    Klawisz
    Kolumna identyfikująca wiersz, na przykład numer_zamówieniaMusi być unikatowy w wyniku zapytania. Query Streams sprawdza to i odrzuca duplikaty.
    Synchronizacja
    Nadpisywane z DuckDB przy każdym uruchomieniu. Jeśli ktoś edytuje kolumnę Sync w Anvil.works, przy następnym uruchomieniu przywracana jest wartość źródłowa.
    Utrzymywać
    Zapisywana, gdy wiersz pojawia się po raz pierwszy i nigdy nie jest porównywana ponownie, więc zmiana w DuckDB nie powoduje aktualizacji. W przypadku notatek, właścicieli i dat kontynuacji, które Twój zespół wpisuje ręcznie, użyj kolumny, która w ogóle nie występuje w zapytaniu: kolumny istniejące tylko w Anvil.works nigdy nie są modyfikowane przez synchronizację.

    Co jest szybsze? Dołączanie zapisów nie wymaga wcześniejszego odczytu tabeli danych. Pełna synchronizacja odczytuje dane, porównuje każdy wiersz i zapisuje tylko różnice, więc trwa to dłużej, ale tabela danych zawsze pasuje do zapytania. Możesz później przełączyć się z panelu Edycja automatyzacji.

    Aby wybrać tabelę danych, której chcesz zaufać, kliknij Utwórz wszystkie kolumny jako synchronizowane, a następnie kliknij ikonę klucza na numer_zamówienia aby to zrobić KlawiszStrumienie zapytań skanują cały wynik, aby potwierdzić, że klucz jest unikatowy, i ostrzegają, jeśli tak nie jest. Przechowuj notatki zespołu w kolumnach, które nie są częścią zapytania; nigdy ich nie zmieniaj. Aby utworzyć dziennik, który powinien stale rosnąć, kliknij Utwórz wszystkie kolumny jako Zachowaj zamiast tego i pomiń klucz. Kliknij Kontynuować.

  6. Ustaw harmonogram, nazwij go, utwórz

    NA Krok 5 wybierać Uruchom według harmonogramu i wybierz Częstotliwość:

    CzęstotliwośćBiegi
    Co 5 minutco 5 minut, najszybszy dozwolony
    Co 15 minutco 15 minut
    Co 30 minutco 30 minut
    Każda godzinana szczycie każdej godziny
    Codziennie o 9 ranocodziennie o 9:00, domyślnie
    Codziennie o 6 ranocodziennie o 6:00
    Dni powszednie o 9 ranoOd poniedziałku do piątku o 9:00
    Tygodniowo (poniedziałek 9 rano)w każdy poniedziałek o 9:00
    Niestandardowy harmonogramwłasne minuty, godziny, dni tygodnia lub dni miesiąca

    Czasy podążają za Strefa czasowa którą wybierzesz, która zaczyna się od Twojej przeglądarki. Możesz również wybrać Tylko ręcznie i naciśnij Bieg Kiedy tylko chcesz; harmonogram można dodać później z panelu edycji automatyzacji. Zaplanowane uruchomienia odbywają się w Agencie, więc trwają nawet po zamknięciu przeglądarki. Jeśli komputer z Agentem jest wyłączony w momencie planowanego uruchomienia, pominięte uruchomienie nastąpi jednorazowo, wkrótce po ponownym uruchomieniu Agenta.

    Daj temu Nazwa integracji, takie jak „Zamówienia do Anvil.works, codziennie”, sprawdź Gotowy do stworzenia podsumowanie i kliknij Utwórz automatyzację. Wróć na stronę Automatyzacja i naciśnij Bieg Aby wykonać pierwszą synchronizację teraz, zamiast czekać na harmonogram, otwórz Anvil.works: wiersze są widoczne pod nagłówkami kolumn.

To wszystko. Od teraz tabela danych jest zawsze aktualna. Nic nie opuszcza sieci poza wierszami zwróconymi przez zapytanie i nikt nie musi pamiętać o uruchomieniu czegokolwiek.

Co widzisz później

Ten Strona automatyzacji Wyświetla listę wszystkich automatyzacji wraz ze statusem, źródłem, celem, kluczem, harmonogramem, ostatnią synchronizacją i liczbą wierszy. Otwórz jeden dla Egzekucje Karta: każde uruchomienie z jego wyzwalaczem (ręcznym lub zaplanowanym), czasem trwania oraz wierszami utworzonymi, zaktualizowanymi, usuniętymi i niezmienionymi. Wydajność na karcie wyświetlane są przetworzone dane i wskaźnik sukcesu w okresie od 7 do 90 dni.

Dowiesz się, kiedy się zatrzyma

Każda organizacja ma Problemy z synchronizacją Zasada alertów od samego początku: powiadomienie w aplikacji i e-mail w przypadku niepowodzenia synchronizacji oraz kolejny w przypadku jej przywrócenia. Jedna wiadomość na incydent, nigdy jedna na ponowną próbę. Wyłącz tę opcję lub zmień kanał w sekcji Strumienie → Alerty i raporty.

Zatrzymuje się, kiedy powinien

Jeśli Anvil.works przestanie akceptować połączenie lub łącznik danych zostanie usunięty, automatyzacja zatrzyma się i wyświetli komunikat z informacją o przyczynie. Połącz się ponownie lub wybierz nowe źródło i naciśnij przycisk Wznów. Pozostałe błędy kontynuują działanie harmonogramu i wyświetlają się w wierszu.

Klucze muszą być unikalne

Przed każdym uruchomieniem pełnej synchronizacji Query Streams sprawdza, czy wartości kluczowe w wyniku zapytania są unikatowe i odrzuca uruchomienie, jeśli nie są. Dzięki temu nic niedokończonego nie trafi do tabeli danych. Zachowaj kolumnę klucza na swoim miejscu w Anvil; kolumny, których zapytanie nie zna, nigdy nie zostaną usunięte podczas synchronizacji.

Co pozwalają plany

Automatyzacja jest dostępna w każdym planie, w tym w planie darmowym, bez limitu liczby tworzonych automatyzacji. Każdy plan ogranicza liczbę wierszy, jakie zapytanie może zwrócić w jednym przebiegu:

PlanLiczba wierszy na przebieg
Bezpłatny125
Rdzeń osobisty500
Osobisty Plus1,000
Podstawy działalności2,500
Biznes Plus5,000
Biznes Max10,000
Rdzeń przedsiębiorstwa25,000
Enterprise Plus100,000
Enterprise Max250,000

Jeśli zapytanie zwróci więcej, przebieg jest wstrzymywany, a nie przerywany, a automatyzacja wskazuje, który plan pasuje lub sugeruje dodanie filtra, takiego jak zakres dat. Każde pomyślne przebiegnięcie jest również wliczane do limitu Data Realm, tej samej puli, z której korzystają zapytania w Excelu i Arkuszach. Zobacz stronę z cennikiem za dodatki.

Dobre następne ruchy

  • Dodaj filtr do zapytania, np. ostatnich 90 dni, dzięki czemu tabela danych pozostanie mała i szybka oraz będzie mieścić się w limicie wierszy Twojego planu.
  • Przechowuj notatki wpisane ręcznie w osobnych kolumnach, poza zapytaniem, dzięki czemu przetrwają każdą synchronizację.
  • Grupuj swoje automatyzacje z panelu Edycja, gdy masz ich kilka; strona Automatyzacja filtruje według grupy.

Reaching a file on a network share

The Agent opens files as a background service, not as you, so a file on another computer needs one extra step. Which step depends on the computer the Agent runs on.

Okna

Type the network path, like \\serwer\udział\folder, never a mapped drive letter such as S:, which the Agent cannot see. If the share only lets in named people, click Service identity (the chip under the path) and store a login for that server: a company domain account, or an account made on the server itself with Domain left blank. The Agent then signs in to that server and reads the file there, and every connector on that Agent that reads the same server must use the same login. Without a login, it reads as its own service account, which a company domain sees as the computer itself. Step by step on Windows

Linux

Share logins stored in the Portal are not used on Linux: an administrator mounts the share on the Agent’s computer first, in a folder under /mnt lub /głoska bezdźwięczna, because the Agent’s service cannot see /home lub /run/user. In the connector, keep the \\serwer\udział path, which the Agent maps onto the mount, or type the mount path instead, such as /mnt/fileserver-shared/Accounts. How to mount a share on Linux

Prochowiec

Share logins stored in the Portal are not used on a Mac: mount the share first from Terminal with sudo, in a folder under /Volumes, so the Agent’s background service can see it. In the connector, keep the \\serwer\udział path, which the Agent maps onto the mount, or type the mount path instead, such as /Volumes/fileserver-shared/Accounts. How to mount a share on a Mac

If the test cannot get to the share, look for these words in its result: unreachable means the Agent’s computer got no answer from the server. On Linux or a Mac, not mounted means the share still has to be mounted, and that message includes the exact mount command for your server.

DuckDB file on a share? DuckDB allows one writer at a time, so the Agent cannot open a file that another program has open for writing; on a \\serwer\udział path the test says it is open for writing by another program. Close it there, or point the connector at a file nobody is writing to. Every query reads the file across the network, so a large file answers more slowly than it would from a local disk.

Test failed on a share?

Every run reaches the file the same way the connection test does. If runs start failing after something changed on the file server, a new password for example, open the connector in Agenci danych i kliknij Połączenie testowe. The test result, and the line under the file path, name the problem:

WiadomośćPrzyczynaNaprawić
DuckDB database file not found: followed by a \\serwer\udział path you know is rightNo login is stored, so the Agent tried the share as its own account and could not see the file: the share turned that account away, or the server did not answer. In the first case the line under the path says Access denied for the agent’s service account.Kliknij Service identity under the path and store a login that can read the share. If the line under the path does not say access denied, check that the Agent’s computer can open the share at all.
Share \\server: access denied — add credentials for this serverA login is stored, but that account has no permission on the share, or another sign-in to the same server is in the way; the message before this line says which.Ask whoever runs the server to give that account read access, or store an account that has it. For a sign-in in the way, see the two rows on one login per server below.
Share \\server: the credentials were refused — check the username and passwordThe server turned the stored login down: a typo, the wrong domain, or a password changed since it was saved, which also stops runs that used to work.Click the chip under the path and type the password again; for an account made on the server itself, leave Domain blank. After a refused login the Agent waits a minute before it tries that same one again, so the account is not locked out; saving a corrected password tries straight away.
Share \\server: server unreachable from the agent machineThe Agent’s computer got no answer from the server: a wrong server name, the server is off, or a firewall blocks file sharing.On the Agent’s computer, open the same \\serwer\udział path in File Explorer. If that fails too, it is a network problem for whoever runs the network.
Another connector on this agent already signs in to \\server as …Windows lets one computer sign in to a server as one account at a time, and another connector on this Agent uses a different login for that server.Store the same login the other connector uses, or change it on every connector that reads that server.
Windows already holds a sign-in to \\server for …Something on the Agent’s computer other than the Agent is already signed in to that server as a different account, and the Agent never closes a sign-in it did not make.Do what the rest of the message says: use that same account on this connector, or close the other sign-in on the Agent’s computer. If it says the share is already readable through that sign-in, choose Use service identity in the login box instead.
This agent build cannot sign in to \\server with stored credentials.The Agent is an older version that cannot use stored logins.Update the Agent, then test again.
\\server\share is not mounted on this Linux agent (lub macOS agent)The Agent runs on Linux or a Mac and the share has not been mounted on its computer yet; logins stored in the Portal are not used there.Mount it with the command the message gives you, then test again. Step by step: na Linuksie · on a Mac.
… is open for writing by another programDuckDB allows one writer at a time, and another program has the file open for writing.Close the file in that program, or point the connector at a file nobody is writing to.

Pytania, które zadają ludzie

Czy synchronizacja nadpisze notatki dodane przez mój zespół w Anvil.works?

Nie, jeśli notatki znajdują się we własnej kolumnie. Kolumny istniejące tylko w Anvil.works i nieuwzględnione w zapytaniu nigdy nie są modyfikowane, więc dodaj kolumnę „Notatki” lub „Właściciel” obok zsynchronizowanych i tam wpisz. Kolumny oznaczone Synchronizacja są przy każdym uruchomieniu przywracane do wartości DuckDB; Utrzymywać kolumny są wypełniane w momencie, gdy wiersz po raz pierwszy dociera do odbiorcy, i nie są później porównywane.

Czy moje dane DuckDB są przechowywane w strumieniach zapytań?

Nie. Agent uruchamia zapytanie po Twojej stronie i przesyła wiersze bezpośrednio do Anvil.works za pomocą szyfrowanego łącza. Query Streams przechowuje konfigurację, harmonogram i liczbę wierszy na jedno uruchomienie, a nie same wiersze.

Czy mój komputer musi być włączony?

Ten, który uruchamia Agenta, robi to, ponieważ to Agent uruchamia zapytanie i zapisuje dane do Anvil.works. Możesz zamknąć laptopa i przeglądarkę. Jeśli komputer jest wyłączony w momencie, gdy ma zostać wykonane zadanie, pominięte zadanie zostanie wykonane jednorazowo, wkrótce po ponownym uruchomieniu Agenta.

Czy mogę później zmienić zapytanie?

Tak. Edytuj i zapisz w Kreatorze zapytań, a przy następnym uruchomieniu automatycznie zostanie użyta nowa wersja. Jeśli dodasz lub usuniesz kolumny, otwórz panel edycji automatyzacji, aby je zmapować.

Czy dwa automatyzacje mogą zapisywać dane w tej samej tabeli?

Nie, jedna automatyzacja na tabelę danych. Skieruj drugą automatyzację na inną tabelę danych lub rozszerz zapytanie za pierwszą.

Czy plan darmowy naprawdę to obejmuje?

Tak. Wersja darmowa to plan, który można zachować, a nie okres próbny, który wygasa. Automatyzacja jest zawarta w każdym planie; w zależności od planu zmienia się liczba wierszy, które jedno zapytanie może zwrócić w jednym przebiegu. Zobacz dokładnie, co obejmuje wersja darmowa. strona z cenami.

Nadal masz problem? Otwórz Wsparcie w Query Streams i powiedz nam, na jakim etapie jesteś i co widzisz. Połączymy Cię.
To samo zapisane zapytanie można również zachować w trybieArkusze GoogleAirtableSmartsheetBaserowSeaTablei więcej

Każdy przewodnik dla DuckDB

Nie jest to dokładnie to, czego szukasz?

  • Masz folder z plikami Parquet zamiast pliku bazy danych DuckDB? Parquet Folder odczyta je wszystkie jako jedną tabelę → Parquet Folder

Setup trouble?

  • Agent says the file or folder does not exist, or access is denied? Mapped drives, network shares, OneDrive and Linux home folders each need one fix → Where the Agent can read files from
  • Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?
Zaktualizowano na październik 12, 2026

Powered by BetterDocs