- Notes de publication
- Avant de commencer
- Démarrage
- Gestion de l’accès
- Travailler avec des applications de processus
- Créer des applications de processus
- Chargement des données
- Charger des données
- Retrieving the SQL Server database parameters
- Configuration d'un compte SQL Server pour le chargement de données à l'aide d'un extracteur
- Loading data using Theobald Xtract Universal
- Configuration système requise
- Configurer DataBridgeAgent
- Configuring CData Sync
- Ajouter un connecteur personnalisé à DataBridgeAgent
- Utiliser DataBridgeAgent avec le connecteur SAP pour l'accélérateur de découverte Purchase-to-Pay
- Utiliser DataBridgeAgent avec le connecteur SAP pour l'accélérateur de découverte Order-to-Cash
- Personnaliser les applications de processus
- Transformations de données
- Modification des transformations de données dans un environnement local
- Setting up a local test environment
- SQL differences between Snowflake and SQL Server
- Designing an event log
- Structure of transformations
- Tips for writing SQL
- Modèle d’application TemplateOne
- Modèle d’application Purchase to Pay
- Modèle d’application Order to Cash
- Basic troubleshooting guide
SQL differences between Snowflake and SQL Server
Dans un environnement de développement local, les transformations sont exécutées sur SQL Server, tandis que Snowflake est utilisé dans Process Mining Automation Suite. Bien que la plupart des instructions SQL fonctionnent à la fois sur SQL Server et Snowflake, il peut exister de légères différences dans la syntaxe, ce qui peut entraîner des résultats de renvoi différents.
Pour écrire des instructions SQL qui fonctionnent sur les deux systèmes de base de données :
- Écrivez les noms de champ entre guillemets doubles, par exemple
Table."Field"
. -
Empêcher l'utilisation de fonctions SQL différentes dans Snowflake et SQL Server, par exemple
string_agg()
etlistagg()
.Le packagepm_utils
est livré avec un ensemble de fonctions qui fonctionnent sur les deux types de bases de données, voir Bases de données multiples. Par exemple, au lieu d'utiliserstring_agg()
oulistagg()
,pm_utils.string_agg()
entraînera le même comportement pour les deux bases de données. Sipm_utils
ne contient pas la fonction souhaitée, une instruction Jinja doit être créée pour s'assurer que la bonne fonction est appelée sur chaque base de données.
pm_utils.concat()
. Cela produira les mêmes résultats pour SQL Server et Snowflake.
pm_utils.concat("This is a nice string", null)
= "This is a nice string"
La concaténation de chaînes ne doit pas être effectuée avec des opérateurs tels que +
ou ||
, car ils sont différents pour les deux bases de données (Snowflake utilise ||
et SQL Server utilise +
). De plus, la fonction standard concat()
a un comportement différent sur les deux systèmes :
SQL Server |
Snowflake |
---|---|
Les valeurs
null seront ignorées et traitées comme une chaîne vide.
|
Les valeurs
null donneront au résultat entier la valeur null .
|
Le tri est géré différemment dans Snowflake et dans SQL Server.
... order by "Attribute_1" desc, "Attribute_2" ...
SQL Server |
Snowflake |
---|---|
null sera trié par défaut en premier (croissant)
|
null sera trié par défaut en dernier (croissant)
|
SQL Server |
Snowflake |
---|---|
les majuscules sont triées comme prévu (AaBbCc) |
trie d'abord par majuscules, puis par lettres non majuscules (ABCabc) |
Lorsque vous effectuez un regroupement par valeurs « A » et « A », cela est considéré comme une seule valeur dans SQL Server, mais comme deux valeurs différentes dans Snowflake. Par conséquent, le rognage est conseillé si vos données peuvent causer ce problème.
Table."Field" = "Some_value"
et Table."Field" = "SOME_VALUE"
renverront le même ensemble de résultats dans SQL Server, mais potentiellement deux ensembles de résultats différents dans Snowflake.
Il est conseillé de modifier le comportement de votre base de données SQL Server locale pour qu'il corresponde au comportement de Snowflakes, afin d'éviter tout problème. Cela peut être accompli en définissant le classement de la base de données sur une valeur sensible à la casse.