Migration de documents QlikView
Cette page explique dans le détail comment migrer des documents QlikView et leur contenu associé. Elle répertorie également les meilleures pratiques, les limitations et les considérations à prendre en compte.
Restrictions des applications
Le tableau suivant indique les tailles d'application de base autorisées avec Qlik Cloud suivant votre abonnement.
Type d'application | Taille d'application prise en charge (en mémoire) | Mémoire maximale pendant les chargements programmés | Mémoire maximale pendant les chargements manuels |
---|---|---|---|
Niveau standard | Jusqu'à 5 Go | Jusqu'à 15 Go | Jusqu'à 10 Go |
Capacité d'applications volumineuses | Jusqu'à 50 Go | Dépend de la capacité achetée | Dépend de la capacité achetée |
Détermination de la taille d'application
Vous pouvez mesurer la taille d'application de deux manières :
-
Taille en mémoire la dernière fois que l'application a été chargée
-
Taille sur le disque
Pour déterminer la taille d'une application, utilisez les outils suivants :
-
Tableau de bord de gouvernance QlikView, feuille Complexité (uniquement en anglais) – Cette feuille indique la taille sur le disque.
-
Les outils de migration Qlik Cloud de l'QlikView to SaaS Migration App contiennent une section dédiée dans l'onglet Outils de migration, sous ÉvaluerQlik Cloud, qui estime l'empreinte de la RAM de base et identifie les applications prévues pour être déposées ou non au niveau Standard.
Atténuation des problèmes de taille d'application
Si vous rencontrez des problèmes d'allocation de mémoire importante dus aux grandes tailles de certaines applications, vous avez à votre disposition deux approches principales pour réduire les problèmes.
-
Examinez et mettez à jour le script de chargement de données, le cas échéant :
-
Supprimez les champs et les lignes inutilisés du chargement.
-
Ignorez les tables lorsqu'elles ne sont plus nécessaires dans le traitement des données.
-
Déployez des chargements incrémentiels pour optimiser le volume de données en cours de traitement.
-
Utilisez des chargements de QVD optimisés.
-
-
Accordez plus de capacité au client pour permettre des charges de travail plus lourdes. Voir Prise en charge des applications volumineuses.
Autres restrictions et considérations générales
Les déploiements cloud n'autorisent généralement pas l'accès au système de fichiers de votre hôte ou de votre serveur. C'est pourquoi, lors de la migration du script de chargement d'une application sur site vers Qlik Cloud, il est conseillé d'utiliser ces modifications du script de chargement.
Extensions
Les extensions QlikView ne fonctionnent pas dans Qlik Cloud. Cela s'applique aux extensions Serveur et aux extensions Document.
Pour du contenu associé au développement personnalisé, notamment des kits d'outils et des références d'API, voir le Site des développeurs Qlik Cloud.
Dans Qlik Cloud, il existe certaines restrictions en ce qui concerne les extensions par rapport à Qlik Sense Enterprise Client-Managed. Pour plus d'informations, voir Gestion des extensions.
Vous devez ajouter des requêtes pour des ressources externes à la liste verte dans Console de gestion > Stratégie de sécurité de contenu. Voir Gestion de la stratégie de sécurité de contenu.
Thèmes
Les effets de style des applications ne peuvent pas être migrés de QlikView vers Qlik Cloud. Pour des informations sur les effets de style d'une application Qlik Cloud et sur les thèmes personnalisés, voir Ajout d'effets de style à une application.
GeoAnalytics
La fonctionnalité d'objet d'extension QlikView GeoAnalytics a été intégrée à l'objet Carte Qlik Sense natif. Il n'est pas possible de créer des applications Qlik Sense via ces objets hérités, et les objets doivent être recréés via l'objet Carte natif Qlik Sense.
Migration de Connecteur GeoAnalytics vers Qlik GeoOperations
Qlik GeoOperations dans Qlik Cloud fournit des fonctions et opérations similaires à celles de Connecteur GeoAnalytics dans QlikView. Un grand nombre de formats de données identiques y sont eux aussi pris en charge. En voici les principales différences :
- Qlik GeoOperations est une Intégration de l'analytique avancée (Advanced Analytics Integration ou AAI), plus adaptée pour envoyer et traiter des données qu'un connecteur.
- La syntaxe de script de l'Intégration de l'analytique avancée est différente de celle des connecteurs.
- Certaines opérations GeoOperations peuvent également être utilisées dans des expressions de graphique.
- Qlik GeoOperations renvoie une seule table. Contrairement aux éléments renvoyés par Connecteur GeoAnalytics, les tables sont jointes dans Qlik GeoOperations.
- Dans Qlik GeoOperations, certains champs et paramètres ont été renommés, pour une plus grande cohérence.
Voici comment convertir le script produit par l'Assistant Connecteur GeoAnalytics dans Qlik GeoOperations :
- Dans l'éditeur de chargement de données, dans le code du script Connecteur GeoAnalytics, copiez tous les éléments après SQL jusqu'à la deuxième instruction SELECT ou jusqu'au caractère ";", selon la première occurrence.
- Remplacez tous les caractères ' du script Connecteur GeoAnalytics par ".
-
Ajoutez les noms de champ sélectionnés de la deuxième instruction SELECT du script Connecteur GeoAnalytics à la première instruction SELECT du script GeoOperations. Omettez tous les champs qui s'y trouvent déjà. Ajoutez le nom de table source aux noms de champ en les séparant par un point. Par exemple, table.field. Cela crée une seule table jointe au lieu de plusieurs tables.
-
Consultez la documentation de référence sur l'opération et l'ensemble de données et ajustez tout nom de champ ou de paramètre, si nécessaire.
Pour une synthèse des différences clés, voir Différences entre les champs GeoOperations et GeoAnalytics
-
Ajoutez ce qui suit au début du script GeoOperations :
Load * Extension GeoOperations.ScriptEval('
-
Ajoutez ce qui suit à la fin du script GeoOperations :
');
En cas d'utilisation d'une table chargée à l'aide de Connecteur GeoAnalytics, envoyez-la comme deuxième paramètre à GeoOperations.ScriptEval à la place.
Étant donné que Qlik GeoOperations renvoie une table jointe, seules les valeurs de champ ayant une valeur correspondante dans la table principale sont renvoyées des tables secondaires. Par exemple, si vous recherchez les aéroports les plus proches de certains points en Allemagne, seules les données sur les aéroports les plus proches des points seront renvoyées. Si vous recherchez tous les aéroports en Allemagne, ceux-ci doivent être chargés séparément via une opération LOAD.
En cas de chargement depuis une base de données SQL via le connecteur, les données doivent être chargées via l'un des connecteurs de base de données tels que le connecteur ODBC. Assurez-vous de charger les géométries au format WKT (appliquez une fonction généralement appelée st_asText() à la requête SQL). Convertissez ensuite le champ WKT en envoyant la table à Qlik GeoOperations. Cela renverra un champ avec les géométries au format Qlik Sense.
Exemple de conversion de script
Cet exemple de conversion de script utilise le script Connecteur GeoAnalytics suivant :
Procédez comme suit :
-
Prenez le script entre SQL et la deuxième instruction SELECT.
SELECT [LocationDbId], [Clusters_ClusterID] FROM Cluster(distance='10000', points='Points') DATASOURCE Points LOCATIONSERVICE geometry='POINT', type='XIATA', country='de', serviceName='default' -
Remplacez les guillemets :
SELECT [LocationDbId], [Clusters_ClusterID] FROM Cluster(distance="10000", points="Points") DATASOURCE Points LOCATIONSERVICE geometry="POINT", type="XIATA", country="de", serviceName="default" -
Ajoutez les champs des tables secondaires :
SELECT [LocationDbId], [Clusters_ClusterID], [Clusters.Clusters_ClusterCenter] FROM Cluster(distance="10000", points="Points") DATASOURCE Points LOCATIONSERVICE geometry="POINT", type="XIATA", country="de", serviceName="default" -
Ajustez les noms de champ et de paramètre :
SELECT [LocationDbId], [ClusterID], [Clusters.ClusterPoint] as [Clusters_ClusterCenter] FROM Cluster(distance="10000", points="Points") DATASOURCE Points LOCATIONSERVICE geometry="POINT", type="XIATA", country="de", serviceName="default" -
Encadrez dans un code d'expression standard :
Load * Extension GeoOperations.ScriptEval(' SELECT [LocationDbId], [ClusterID], [Clusters.ClusterPoint] as [Clusters_ClusterCenter] FROM Cluster(distance="10000", points="Points") DATASOURCE Points LOCATIONSERVICE geometry="POINT", type="XIATA", country="de", serviceName="default" ');
Ce code de script peut maintenant être utilisé avec Qlik GeoOperations.
Différences entre les champs GeoOperations et GeoAnalytics
Les champs par défaut des scripts GeoOperations et GeoAnalytics présentent des différences, généralement au niveau des préfixes. Lors de la migration de vos scripts GeoAnalytics vers GeoOperations, vous devrez peut-être ajuster certains des noms de champ.
AddressToPoint
GeoOperations et GeoAnalytics renvoient les champs suivants :
-
GeoOperations : <id>, Address, AddressPoint, CountryIso2, Adm1, City, PostalCode, Street, HouseNumber, Match
-
GeoAnalytics : [<id>], [Dataset_Address], [Dataset_Geometry], [CountryIso2], [Dataset_Adm1], [Dataset_City], [Dataset_PostalCode], [Dataset_Street], [Dataset_HouseNumber], [Dataset_Match]
Les différences entre GeoAnalytics et GeoOperations sont les suivantes :
-
GeoAnalytics Les champs comportent des préfixes provenant de l'ensemble de données.
-
Dans GeoOperations, Dataset_Geometry est appelé AddressPoint .
Compartimentage
GeoOperations et GeoAnalytics renvoient les champs suivants :
-
GeoOperations : <id>, BinId, BinTable.BinPolygon, BinTable.CenterPoint
-
GeoAnalytics : [<id>], [RH2W3], [RH2W3_CenterPoint]
Les différences entre GeoAnalytics et GeoOperations sont les suivantes :
-
Dans GeoAnalytics, RH2W3 est le champ de polygone et son nom est généré en fonction de la taille/du ratio de la grille. Dans GeoOperations, le champ est BinTable.BinPolygon.
-
GeoAnalytics n'a pas de champ BinId.
Le plus proche
GeoOperations et GeoAnalytics renvoient les champs suivants :
-
GeoOperations : dataset_dataset2_RelationId, dataset.<ds1 id>, dataset2.<ds2 id>, Distance
-
GeoAnalytics: [Dataset1_Dataset2_RelationId], [Dataset1.<ds1 id>], [Dataset2.<ds2 id>], [Dataset1_Dataset2_Distance]
Les différences entre GeoAnalytics et GeoOperations sont les suivantes :
-
GeoOperations n'a pas de préfixes pour le champ Distance.
Cluster
GeoOperations et GeoAnalytics renvoient les champs suivants :
-
GeoOperations : <id>, ClusterID, Clusters.ClusterPoint, Clusters.PointCount
-
GeoAnalytics : [<id>], [Clusters_ClusterID], [Clusters_ClusterCenter], [Clusters_PointCount]
Les différences entre GeoAnalytics et GeoOperations sont les suivantes :
-
Les préfixes de GeoOperations et de GeoAnalytics sont différents.
Dissoudre
GeoOperations et GeoAnalytics renvoient les champs suivants :
-
GeoOperations : <id>, DissolvedPolygon
-
GeoAnalytics : [<id>], [<id>_Geometry]
Les différences entre GeoAnalytics et GeoOperations sont les suivantes :
-
Nom de la colonne de géométrie
Intersection
GeoOperations et GeoAnalytics renvoient les champs suivants :
-
GeoOperations : dataset_dataset2_RelationId, dataset.<dataset1 id>, dataset2.<dataset2 id>, dataset.RelativeOverlap, dataset2.RelativeOverlap
-
GeoAnalytics: [Dataset1_Dataset2_RelationKey], [Dataset1.<ds1 id>], [Dataset2.<ds1 id>], [Dataset1_RelativeOverlap], [Dataset2_RelativeOverlap]
Les différences clés entre GeoAnalytics et GeoOperations sont les suivantes :
-
Les préfixes de GeoOperations et de GeoAnalytics sont différents.
IpLookup
GeoOperations et GeoAnalytics renvoient les champs suivants :
-
GeoOperations : <id>, IpPoint, CountryIso2, Adm1Code, City
-
GeoAnalytics : [<id>], [IpTable_Geometry], [CountryIso2], [IpTable_Adm1Code], [IpTable_City]
Les différences entre GeoAnalytics et GeoOperations sont les suivantes :
-
IpTable_Geometry dans GeoAnalytics est IpPoint dans GeoOperations.
-
Les préfixes de GeoOperations et de GeoAnalytics sont différents.
Charger (ensemble de données de localisation)
GeoOperations et GeoAnalytics renvoient les champs suivants :
-
GeoOperations (area): LocationDbId, LocationPolygon, Name, CountryIso2, Adm1Code, Adm2Code, LocationDbType
-
GeoOperations (point): LocationDbId, LocationPoint, Name, CountryIso2, Adm1Code, Adm2Code, LocationDbType
-
GeoAnalytics: [LocationDbId], [Dataset_Geometry], [Dataset_Name], [CountryIso2], [Dataset_Adm1Code], [Dataset_Adm2Code], [LocationDbType]
Les différences entre GeoAnalytics et GeoOperations sont les suivantes :
-
Les champs de géométrie (LocationPolygon et LocationPoint dans GeoAnalytics sont Dataset_Geometry dans GeoOperations.
-
Les préfixes de GeoOperations et de GeoAnalytics sont différents.
PointToAddress
GeoOperations et GeoAnalytics renvoient les champs suivants :
-
GeoOperations : <id>, Address, AddressPoint, CountryIso2, Adm1, City, PostalCode, Street, HouseNumber, Distance
-
GeoAnalytics : [<id>], [Dataset_Address], [Dataset_Geometry], [CountryIso2], [Dataset_Adm1], [Dataset_City], [Dataset_PostalCode], [Dataset_Street], [Dataset_HouseNumber], [Dataset_Distance]
Les différences entre GeoAnalytics et GeoOperations sont les suivantes :
-
Les préfixes de GeoOperations et de GeoAnalytics sont différents.
Itinéraires
GeoOperations et GeoAnalytics renvoient les champs suivants :
-
GeoOperations : <id>, Distance, Duration, Status, LowResLine
-
GeoAnalytics : [<id>], [Dataset_Distance], [Dataset_Duration], [Dataset_Status], [Dataset_PathLowRes]
Les différences entre GeoAnalytics et GeoOperations sont les suivantes :
-
Le champ de géométrie Dataset_PathLowRes dans GeoAnalytics est LowResLine dans GeoOperations.
-
Les préfixes de GeoOperations et de GeoAnalytics sont différents.
Simplifier
GeoOperations et GeoAnalytics renvoient les champs suivants :
-
GeoOperations : <id>, Simplified_<geo field name>
-
GeoAnalytics : [<id>], [Dataset_Simplified_Geometry]
.Les différences entre GeoAnalytics et GeoOperations sont les suivantes :
-
Les noms du champ de géométrie sont différents dans GeoOperations et dans GeoAnalytics.
TravelAreas
GeoOperations et GeoAnalytics renvoient les champs suivants :
-
GeoOperations : <id>, TravelArea, Cost, CostUnit, Status
-
GeoAnalytics : [<id>], [Dataset_TravelArea], [Dataset_Origin], [Dataset_Cost], [Dataset_CostUnit], [Dataset_Status]
Les différences entre GeoAnalytics et GeoOperations sont les suivantes :
-
GeoOperations n'inclut pas de champ d'origine.
-
Les préfixes de GeoOperations et de GeoAnalytics sont différents.
Au sein de
GeoOperations et GeoAnalytics renvoient les champs suivants :
-
GeoOperations : dataset_dataset2_RelationId, dataset.<dataset1 id>, dataset2.<dataset2 id>
-
GeoAnalytics: [Enclosed_Enclosing_RelationId], [Enclosed.<dataset 1/2 id>], [Enclosing.<datasets 1/2 id>]
Les différences entre GeoAnalytics et GeoOperations sont les suivantes :
-
Les préfixes GeoOperations incluent des noms d'ensemble de données, tandis que GeoAnalytics inclut également le préfixe Enclosed.
Migration des documents
Suivez cette procédure lors de la migration de vos documents QlikView vers des applications Qlik Sense que vous pouvez utiliser dans Qlik Cloud.
Procédez comme suit :
-
Évaluez, identifiez et priorisez les documents QlikView pour leur migration. Vous pouvez utiliser la feuille Complexité (uniquement en anglais) de Tableau de bord de gouvernance QlikView ou la fonction Explorer les objets de l'onglet Outils de migration de l'QlikView to SaaS Migration App.
-
Convertissez les documents QlikView en une application Qlik Sense via le Convertisseur QlikView. Voir les exemples suivants :
-
Chargez le document QlikView converti dans Qlik Cloud.
Note InformationsVous pouvez charger en bloc les documents QlikView convertis dans Qlik Cloud via le script de CLI 7_migrateapps.ps1 disponible dans les outils de migration Qlik Cloud. Lors du référencement de l'application à importer, dans le fichier exports/apps.csv, omettez l'extension .qvf de la valeur 'QSAppName'.
Tâches de chargement
Les tâches de chargement doivent être recréées manuellement dans Qlik Cloud.
Utilisez l'QlikView to SaaS Migration App pour identifier les tâches de chargement. Vous trouverez les tâches de chargement dans la table Détails de déclenchement des tâches QVPR qui se trouve sur l'écran Explorer QVPR de l'onglet Outils de migration.
Notez l'ensemble des détails de toutes les tâches, puis recréez ces tâches manuellement dans votre client Qlik Cloud.
Pour savoir comment créer des tâches de chargement, voir Planification du chargement des données d'applications.
Si vous avez un chaînage de tâches, vous devez utiliser Qlik Application Automation (QAA) ; voir Chaînage de tâches : didacticiel.
Meilleures pratiques en matière de conversion de documents QlikView
Au moment de planifier votre conversion, tenez compte des informations suivantes.
Convertisseur QlikView
Convertisseur QlikView est un outil qui prend en charge la conversion de documents QlikView en applications Qlik Sense. Vous pouvez utiliser l'outil pour déplacer une partie de la valeur développée dans des documents QlikView dans une application Qlik Sense.
L'outil de conversion peut être utilisé avec Qlik Sense Desktop. Vous ne pouvez pas utiliser Convertisseur QlikView pour convertir des documents de taille supérieure à 500 Mo sur le disque. Vous pouvez réduire la quantité de données d'un document ou enregistrer le document sans données, afin de réduire la taille d'un document sans perdre d'actifs. Pour plus d'informations, voir Qlik Sense Desktop.
Convertisseur QlikView déplace la plupart des objets dans Qlik Sense, notamment :
- Des scripts
- La plupart des variables. Voir Variables QlikView exclues de l'export
- Des zones de liste
- Les graphiques et les tables
Le convertisseur ne peut pas convertir certains objets. Les objets qui ne peuvent pas être convertis incluent les suivants :
- Les conteneurs
- Les déclencheurs
- Les macros
- Les instructions conditionnelles
- Les zones de texte
- Les couches d'objets
- Les couleurs de graphiques personnalisées
- Les expressions des listes de sélection
Il est possible de recréer manuellement un grand nombre des objets ci-dessus dans Qlik Sense. Par exemple, même si les déclencheurs ne sont pas convertis, il est possible de recréer leur comportement à l'ouverture via des favoris par défaut dans Qlik Sense.
Le convertisseur affiche certains objets non convertis, mais pas tous. Nous recommandons de créer un inventaire feuille par feuille de l'ensemble des objets dans QlikView et de comparer cet inventaire aux objets répertoriés dans le convertisseur.
Convertisseur QlikView (uniquement en anglais)
Script de chargement de données
En général, les scripts de chargement de données et QlikView sont compatibles, mais ils présentent des différences qu'il convient de prendre en compte dans certains cas et qui nécessitent l'adaptation du script dans l'éditeur de chargement de données avant le rechargement des données.
QlikView utilise des chemins de fichier absolus ou relatifs qui ne sont pas pris en charge dans le mode standard de Qlik Sense. Par conséquent, il est nécessaire de les remplacer par des connexions de données de type dossier pour pointer vers l'emplacement des fichiers.
Syntaxe QlikView
Syntaxe Qlik Sense
Onglets de script masqué
Lorsqu'un document QlikView contenant un script masqué est converti, la partie script masqué est ignorée et exclue du script Qlik Sense. Avant de convertir le document, ouvrez-le dans l'éditeur de script QlikView, puis copiez le code des onglets de script masqué et collez-le dans des onglets de script standard. Notez que vous ne pouvez pas masquer le code de script dans Qlik Sense.
Mode standard
L'utilisation de certaines instructions et fonctions est impossible ou limitée en mode standard. Pour plus d'informations, voir la documentation Restrictions d'accès au système de fichiers.
Accès de section
Il n'est pas possible d'importer un document QlikView comportant un accès de section dans Qlik Sense, en raison des différences de format et de fonctionnalités prises en charge.
Lors de la conversion d'un document avec un accès de section, vous devez procéder comme suit :
- Avant de convertir le document, supprimez le code d'accès de section dans l'éditeur de script QlikView.
- Convertissez le document.
- Redéfinissez l'accès de section dans l'application Qlik Sense.
Dans Qlik Sense, il existe certaines différences dont vous devez tenir compte :
- L'authentification utilisateur est différente. Le champ USERID sert à authentifier tous les utilisateurs, tandis que les champs NTNAME et PASSWORD ne sont pas pris en charge.
- L'accès de section est appliqué avec une exclusion stricte dans Qlik Sense. Autrement dit, vous pouvez uniquement consulter les données pour lesquelles vous disposez d'une autorisation d'accès explicite.
Si vous avez accès au script, mais pas aux données, vous pouvez ouvrir l'application sans données et modifier le script, y compris l'accès de section.
Pour plus d'informations, voir Gestion de la sécurité grâce à Accès de section.
Notation des citations dans l'analyse d'ensembles
Dans les documents QlikView plus anciens ou dans les documents créés avec des versions plus anciennes de QlikView, la notation des citations de l'analyse d'ensemble est différente de celle de Qlik Sense. Vous devrez peut-être modifier certaines expressions de l'analyse d'ensembles dans Qlik Sense.
Ancienne notation
Dans l'ancienne notation, les guillemets simples et les guillemets doubles se comportent de la même manière. Les guillemets simples et les guillemets doubles sont interprétés comme une recherche. Il est possible d'utiliser des caractères génériques (*, ?).
Nouvelle notation
Dans la nouvelle notation, les guillemets simples et les guillemets doubles se comportent différemment.
Les guillemets simples sont interprétés comme une comparaison de chaînes littérales. Une seule valeur de champ est trouvée et les caractères génériques ne sont pas autorisés dans la chaîne de recherche. Un astérisque, par exemple, est interprété comme un astérisque.
Les guillemets doubles sont interprétés comme une recherche. Les caractères génériques et les opérateurs relationnels sont autorisés, et il est possible de trouver plusieurs valeurs de champ.
Par exemple, vous devrez peut-être remplacer Sum({$<Country={'Austr*'}>}Sales) par Sum({$<Country={"Austr*"}>}Sales).
De même, il est possible que les comparaisons numériques ou de variables doivent être modifiées. Par exemple, vous devrez peut-être remplacer Duration={'>3'} par Duration={">3"}.
Variables QlikView exclues de l'export
Un certain nombre de variables ne sont pas exportées à partir d'un document QlikView, car elles ne relèvent que de QlikView ou sont traitées différemment dans Qlik Sense.
Les variables suivantes ne sont pas exportées :
- Toutes les variables commençant par CD
- Toutes les variables commençant par FLOPPY
- QvPath, QvRoot, QvWorkPath, QvWorkRoot
- WinPath, WinRoot
- ErrorMode
- StripComments
- ScriptErrorCount, ScriptError
- ThousandSep, DecimalSep, MoneyThousandSep, MoneyDecimalSep, MoneyFormat
- TimeFormat, DateFormat, TimestampFormat
- MonthNames
- ScriptErrorDetails, ScriptErrorList
- OpenUrlTimeout
- HidePrefix
- FirstWeekDay
- BrokenWeeks
- ReferenceDay
- FirstMonthOfYear
- CollationLocale
- LongMonthNames, LongDayNames