Przypadek, na którym przejdziemy przez komunikaty
Przykład Przypadek poglądowy: firma i jej dane są zmyślone, żeby pokazać przebieg.
Ferretería Rialto (firma zmyślona) pracuje na Odoo i chce przenosić kopię swoich danych do Snowflake za pomocą modułu. Jej administratorka, Marta, tworzy pierwszy eksport i po kolei trafia na kolejne komunikaty. Dokładna kolejność nie ma znaczenia: liczy się to, co mówi każdy komunikat i co Marta robi, żeby iść dalej. Jeśli najpierw chcesz zobaczyć, jak moduł jest zbudowany, przeczytaj artykuł o tym, jak działa od środka.

Settings › Snowflake Export › Snowflake Export Configurations, z kolumną Last Sync jeszcze pustą.Klucz Snowflake w FlexigoTech Cloud
Marta wybiera eksport przez FlexigoTech Cloud i wkleja klucz. Pierwszy komunikat brzmi tak:
Before saving the key, an administrator has to accept that the Snowflake key and the exported data go through FlexigoTech Cloud. Nothing was sent.
Oznacza to, że przed zapisaniem klucza administrator musi zaakceptować, że klucz Snowflake i eksportowane dane przechodzą przez FlexigoTech Cloud. Komunikat jasno mówi, że nic nie zostało wysłane. Co robi Marta: administrator to akceptuje, a ona zapisuje ponownie.
Za drugim razem wkleja klucz w takiej postaci, w jakiej go miała, chroniony hasłem:
Paste the unencrypted private key (PEM, without a passphrase): FlexigoTech Cloud keeps it encrypted. Nothing was sent.
Moduł prosi o niezaszyfrowany klucz prywatny, w formacie PEM i bez hasła; jak mówi sam komunikat, to FlexigoTech Cloud przechowuje go w postaci zaszyfrowanej. Marta wkleja wersję bez hasła.
Kolega utworzył wcześniej w tej samej bazie danych inny, testowy eksport przez chmurę, więc pojawia się to:
Another Snowflake export of this database already goes through FlexigoTech Cloud, which holds one Snowflake key per database. Nothing was sent.
FlexigoTech Cloud przechowuje tylko jeden klucz Snowflake na bazę danych, a inny eksport już idzie przez chmurę. Tu również nic nie zostało wysłane.
A jeśli Marta spróbuje iść dalej bez zapisanego klucza, moduł zatrzyma ją komunikatem Save the Snowflake key in FlexigoTech Cloud first.: najpierw trzeba zapisać klucz w FlexigoTech Cloud.
Częstotliwość i rozmiar partii
Żeby szybko przetestować, Marta ustawia bardzo krótki interwał i małą partię. Dostaje dwa komunikaty walidacji:
Cron interval must be at least 15 minutes.: interwał musi wynosić 15 minut lub więcej.Batch size must be between 100 and 50000.: rozmiar partii musi mieścić się między 100 a 50000.
Marta dopasowuje wartości do tych zakresów i zapisuje.
Modele i pola, których nie da się eksportować

Settings › Snowflake Export › Model Lines, każda ze swoim trybem, Full refresh albo Incremental.Przy dodawaniu modeli pojawiają się takie komunikaty:
This model is protected and cannot be exported.: model jest chroniony i moduł nie pozwala go eksportować.Only concrete database-backed models can be exported.: eksportować można tylko konkretne modele zapisane w bazie danych.This model does not have write_date; incremental mode is not supported.: model nie mawrite_date, więc nie obsługuje trybu przyrostowego.The model of an export line is chosen with its Model field.: model linii eksportu wybiera się w jej poluModel.
Z polami jest podobnie:
This field is excluded by default for security.: pole jest domyślnie wykluczone ze względów bezpieczeństwa.The field of an export line is chosen with its Field field.: pole linii eksportu wybiera się w jej poluField.

res.users, res.partner i res.company oraz kolumną ostrzeżenia bezpieczeństwa.Pierwsza synchronizacja
Marta uruchamia synchronizację i, nie czekając, uruchamia ją jeszcze raz:
Sync already in progress for this configuration.
Dla tej konfiguracji trwa już synchronizacja, więc Marta czeka, aż ta uruchomiona się zakończy.
Potem duplikuje eksport dla innej firmy z grupy, z tym samym kontem, bazą danych, schematem i modelem:
Another export, archived ones too, sends to this Snowflake table (same account, database, schema and model): a full refresh would delete its rows. Give each export a schema of its own.
Inny eksport (liczą się tu także zarchiwizowane) wysyła dane do tej samej tabeli; pełne odświeżenie usunęłoby jego wiersze. Rozwiązanie podaje sam komunikat: osobny schemat dla każdego eksportu.
Później jedna z synchronizacji zwraca:
Schema mismatch for field %s: expected %s. Run a full refresh or update Snowflake manually. %s
Komunikat wskazuje pole, które się nie zgadza, i to, czego oczekiwano. Oba wyjścia podaje sam tekst: pełne odświeżenie albo ręczna aktualizacja Snowflake.

Kto zmienił eksport i jakim użytkownikiem odczytuje się dane
Kilka miesięcy później osoba, która ostatnio zmieniała eksport, przechodzi do innej firmy z grupy i pojawia się taki komunikat:
%(user)s, who last changed this export, does not belong to %(company)s.
Osoba, która ostatnio zmieniła eksport, nie należy do firmy wskazanej w komunikacie. Prawdziwy tekst zawiera imię i nazwisko tej osoby oraz nazwę firmy, więc wiesz, kogo i co sprawdzić.
Innym razem Marta trafia na inny komunikat, który nie mówi nic o firmach:
This export has no active user to read the records with: an administrator has to save it again.
Mówi tylko tyle, że eksport nie ma aktywnego użytkownika, którym można odczytać rekordy. Rozwiązanie podaje sam tekst: administrator musi zapisać eksport ponownie.
Połączenie bezpośrednie czy przez chmurę
Marta próbuje zmienić typ połączenia eksportu, a moduł nie pozwala na to w żadną stronę:
A Snowflake export through FlexigoTech Cloud does not go back to a direct connection.: eksport idący przez FlexigoTech Cloud nie wraca do połączenia bezpośredniego.A Snowflake export with a direct connection keeps it: it does not move to FlexigoTech Cloud.: eksport z połączeniem bezpośrednim je zachowuje i nie przechodzi do FlexigoTech Cloud.
Dwa kolejne komunikaty dotyczą konektora Pythona i uwierzytelniania parą kluczy:
Snowflake Python connector not found. Install via: pip install snowflake-connector-python: nie znaleziono konektora Pythona dla Snowflake; komunikat podaje polecenie instalacji,pip install snowflake-connector-python.Private key path or pasted key content is required for key-pair auth.: uwierzytelnianie parą kluczy wymaga ścieżki do klucza prywatnego albo wklejonej treści klucza.
Czego uczy ten przypadek
- Czytaj cały komunikat: w wielu z nich już drugie zdanie mówi, co masz zrobić.
- Gdy tekst kończy się na
Nothing was sent., sam moduł informuje cię, że nic nie zostało wysłane. - Daj każdemu eksportowi osobny schemat, jeśli dzielą konto, bazę danych i model, i pamiętaj też o zarchiwizowanych.
- Model bez
write_datenie obsługuje trybu przyrostowego. - Typu połączenia eksportu, bezpośredniego lub przez FlexigoTech Cloud, nie da się później zmienić w żadną stronę.
Jak pomaga FlexigoTech
FlexigoTech wdraża Odoo 17, 18, 19 i 20 oraz tworzy konektory i integracje na zamówienie. Przy połączeniu przez FlexigoTech Cloud usługa przechowuje dane uwierzytelniające w postaci zaszyfrowanej, monitoruje synchronizację i wysyła e-mail, jeśli coś się nie powiedzie. Moduł kosztuje 9 € za wersję Odoo w Odoo Apps (płatność jednorazowa, netto (bez VAT)), dla 17, 18, 19 i 20, a plan Konektor to 49 €/mies. lub 490 €/rok netto (bez VAT). Szczegóły znajdziesz na stronie modułu i w jego karcie w Odoo Apps.
Czytaj dalej
Sprawdzone w kodzie źródłowym konektora (wersja 20.0) i w podlinkowanych źródłach
Źródła
- Kod modułu: flexigo_odoo_to_snowflake_snapshot_exporter 20.0 (289554a6): models/config.py
- Kod modułu: flexigo_odoo_to_snowflake_snapshot_exporter 20.0 (289554a6): models/field_line.py
- Kod modułu: flexigo_odoo_to_snowflake_snapshot_exporter 20.0 (289554a6): models/model_line.py
- apps.odoo.com/apps/modules/20.0/flexigo_odoo_to_snowflake_snapshot_exporter
- apps.odoo.com/apps/modules/17.0/flexigo_odoo_to_snowflake_snapshot_exporter
- apps.odoo.com/apps/modules/18.0/flexigo_odoo_to_snowflake_snapshot_exporter
- apps.odoo.com/apps/modules/19.0/flexigo_odoo_to_snowflake_snapshot_exporter
- flexigotech.com/en/services.html
- flexigotech.com/precios.html
