Archive

Archive for the ‘Divers’ Category

Présentation du Machine Learning

December 5th, 2014 No comments

Préambule

.

Le machine learning est aujourd’hui au cœur des innovations les plus marquantes des dernières années, de la Google Car au programme Watson d’IBM, les champs d’applications du machine learning sont vastes. Nous verrons par la suite quelques projets phares réalisés ou en cours de réalisation.

Mais d’abord, qu’est-ce que le machine learning ?

Le machine learning (apprentissage automatique en français) est la capacité d’un ordinateur à apprendre sans avoir été explicitement programmé.  « définition d’Arthur Samuel, pionnier du machine learning »

On regroupe sous ce terme un ensemble d’algorithmes qui apprennent comment effectuer certaines tâches : détecter un spam, reconnaître un visage, effectuer des recommandations personnalisées …

Il existe de nombreux algorithmes pour résoudre des problèmes simples. Mais ces algorithmes sont destinés à répondre à une seule problématique, dès lors cela demande de multiplier les algorithmes pour répondre à des besoins complexes.

Les chercheurs en Intelligence Artificielle ont alors eu une idée : plutôt que de résoudre un problème puis de l’implémenter dans un langage informatique quelconque, pourquoi n’apprendrions nous pas à un ordinateur à trouver un algorithme lui-même à partir des données pour résoudre un problème. Le concept de l’apprentissage automatique était né.

Le Machine Learning c’est donc apprendre des données qui nous entourent pour en extraire des tendances et ainsi faire des prédictions sur le futur.

Il a pris son essort avec l’émergence du Big Data, des milliards de données sont désormais facilement à disposition pour alimenter les modèles permettant de construire les algorithmes.

Read more…

Categories: Big Data, Divers Tags:

Les enjeux du BIG DATA

September 4th, 2014 No comments

Cet article est un compte rendu de la conférence à laquelle j’ai assisté à l’école des mines d’Albi de François BOURDONCLE. Il est co chef de file du plan gouvernemental Big Data avec Paul Hermelin (PDG de Capgemini).

Les enjeux liés au BIGDATA sont colossaux. Comprendre l’intérêt que les acteurs des « datas » portent au BIG DATA c’est comprendre comment l’analyse de ces Zettaoctets de données  par ces acteurs des « datas » peuvent porter préjudice à une entreprise dite du  « non data » et notamment  dans la relation qu’a cette entreprise avec ses clients.

Les acteurs des « datas », sont tous les géants du numérique – les Google, Amazon, Facebook, Apple et autres IBM.  Leurs armes : les formidables outils à siphonner – et à traiter –  des Everest de données qu’ils ont bâtis et continuent de renforcer.
Qui sont les « anciens » ? Quasiment toutes les entreprises traditionnelles.

Exemple 1 :

Assureurs vs GOOGLE

Les Smartphones permettent au fournisseur d’accès internet mais aussi à google de géo localiser un téléphone. Qu’est ce qui empêche actuellement Google d’exploiter ces données  et de les analyser ?

A priori pas grand-chose. De l’exploitation de ces données, Google peut tirer des informations sur le type de conduite.

Grâce à ces données de géolocalisation google est capable d’analyser le comportement des conducteurs.

Plusieurs choix s’offre à ce dernier :

1/ Revendre ces analyses à des assureurs de manière que ces derniers ajustent les tarifs du conducteur en conséquence

2/ Google devienne assureur lui-même et propose à une classe de la population « non risquée » des assurances sur lesquelles il pourra marger de façon très nette laissant aux assurances traditionnelles la population dite « à risque ».

On voit bien dans cet exemple comment les technologies liées au big data peuvent faire perdre aux entreprises qui détiennent la technicité (ici les assureurs) leur relation avec les clients. Autrement dit, les assureurs courent un risque sérieux, et grave, de se faire confisquer leur relation clients

On en arrive à un point où l’interlocuteur n’est plus celui qui détient la technicité de l’objet industriel, mais celui qui détient la technicité de l’optimisation de l’objet ou de la relation client grâce aux technologies du Big Data.

Exemple 2 :

Pratt & Whitney vs IBM

La mésaventure du constructeur de moteurs d’avions Pratt & Whitney. Il s’est peu à peu vu déposséder de la relation avec ses clients, les compagnies aériennes,  par son prestataire de service, IBM. C’est ce dernier qui, possédant toutes les données de fonctionnement des moteurs qu’il recueille de longue date pour le motoriste, est désormais le mieux placé pour dialoguer avec les compagnies aériennes…

Grâce à l’analyse des données IBM sait mesurer précisément le degré d’usure de chaque pièce des moteurs qu’ils louent aux compagnies aériennes”.

IBM propose du coup une “maintenance prédictive” qui réduira leurs coûts, et évitera de mauvaises surprises à leurs clients.

Exemple 3 :

Hollywood vs NETFLIX

Netflix prend progressivement des parts de marché sur le géant Hollywoodien.

Chaque utilisateur fournit plusieurs types de données lors d’une visite sur le site web de Netflix. Jouer, partager ou rechercher une vidéo sont autant d’événements qui sont enregistrés et analysés. L’heure, la date, la géolocalisation, le matériel utilisé et le navigateur ou encore la manière dont une page défile peuvent aussi être utilisés pour identifier le contexte dans lequel un événement survient et ainsi, placer les utilisateurs dans des catégories. L’entreprise utilise ces données pour améliorer le service de son site web et prendre les décisions liées au business, comme l’identification des futurs investissements.

Cette approche permet à la société d’offrir un service bien plus personnalisé que la plupart de ses concurrents. Ainsi, il existe certes des catégories classiques comme les “films les plus populaires” ou un classement par genre. Mais, un utilisateur de Netflix peut se retrouver avec une catégorie “films traitant du voyage dans le temps et réalisés dans les années 80”, si, par exemple, il a démontré un intérêt pour “Retour vers le futur” ou pour l’acteur Michael J. Fox.

Les programmes consommés par les internautes le sont grâce à son système de recommandations et non pas par le biais du moteur de recherche. Huit cents ingénieurs travaillent, d’ailleurs, à l’analyse des données collectées auprès des utilisateurs et à l’amélioration des algorithmes utilisés pour proposer le bon film au bon moment.

NETFLIX a eu aussi l’idée de créer leur propre série (« house of cards ») : cette série a été conçue grâce à l’analyse de ces données : En croisant les données « meilleurs acteurs », « meilleur thème », … ils ont créé une série sur mesure.

On voit bien à travers ces trois exemples la puissance de frappe que peuvent avoir ces acteurs des « datas » sur les acteurs « traditionnels ».

Ces spécialistes de la data regardent les déclinaisons possibles dans d’autres secteurs traditionnels, fortement « challengeables » sur leur business model.

C’est aux  entreprises françaises à réinventer leurs services clients, où à défaut, les exécuter mieux que les autres.  Ces dernières doivent lancer des projets à grande échelle d’exploitation des données massives à des fins de business.

Categories: Divers, Ecosystème BI Tags:

Présentation de BIDS Helper

November 12th, 2012 No comments

Dans cet article, je vous présente un  Add-in de Visual Studio qui étend les fonctionnalités de l’environnement de développement BI  SQL Server 2005, 2008, 2008 R2 BI Development Studio (BIDS) et  SQL Server 2012 SQL Server Data Tools (SSDT).

Cet Add-in est gratuit, disponible sur CodePlex à cette adresse  http://bidshelper.codeplex.com/.

Installation :

Téléchargez l’installeur et suivez l’assistant d’installation, après le redémarrage de BIDS, vous remarquerez l’apparition de BIDS Helper dans les produits installés :

 

 Fonctionnalité

BIDS Helper offre énormément de  fonctionnalités. Dans cet article, j’aborderai les fonctionnalités qui me  paraissent être les plus intéressantes  pour  le développement SSAS et SSIS.

SSAS :

Aggregation Manager :

Permet d’ajouter, modifier les agrégations, chercher et supprimer  les agrégations redondantes, tester la performance. Bref, vous pouvez manipuler, comme vous le souhaitez, les agrégations d’un cube.

Pour utiliser le Gestionnaire Agrégation, faites un clic droit sur le cube dans l’Explorateur de solutions, puis, cliquez sur Edit Aggregations

Pour modifier des agrégations, clic-droit sur le groupe d’agrégations que vous voulez modifier, puis cliquez sur Edit…, une interface vous permet de modifier manuellement les agrégations.

Vous pouvez déployer vos modifications à l’aide de Deploy Aggregation Designs. Pour cela, vous devez exécuter la commande ProcessIndex à partir de Management Studio sur le cube après que les modifications d’agrégation ont été déployées.  

 

Deploy MDX Script :

Généralement, pour déployer un script MDX sans traiter le cube, on modifie d’abord les propriétés de dépoilement de notre projet. Pour vous simplifier la tâche,  cette fonctionnalité vous permet en un clic de déployer votre script :

 

 

Ou

Dimension Health Check

Un moyen rapide pour diagnostiquer les valeurs de vos dimensions ainsi que les relations  qui vous posent  des problèmes :

SSIS :

Deploy SSIS Packages :

Cette fonctionnalité  vous permet de déployer vos packages à partir de BIDS sans passer par le Mainifest ni le Wizard d’installation. Pour cela, il suffit de spécifier comment vous souhaitez déployer votre solution dans l’onglet  propriétés du projet -> Deploy (BIDS helper) :

Pour déployer les packages,  clic-droit sur la racine du projet puis Deploy :

Vous pouvez toujours basculer d’un type de déploiement à l’autre  (Simple File Copy, SQL Server Destination, SSIS Package Store, SSIS Package Store (MSDB))  dans l’onglet Deploy (BIDS Helper)

Pour en savoir plus sur les différentes fonctionnalités proposées par BIDS Helper, je vous invite à consulter le site : http://bidshelper.codeplex.com/.

Categories: Divers Tags:

Implémenter la sécurité COGNOS 10. L’authentification et les droits d’accès

August 20th, 2012 No comments
 
 
Mettre en place la sécurité sur COGNOS 10 n’est pas toujours une mince affaire. Il faut d’abord bien comprendre certains principes de base. Il est également important de distinguer l’utilité de chacune des fonctionnalités principales. Enfin, des conseils pour la configuration sont à connaitre pour éviter de rendre l’implémentation de la sécurité longue et laborieuse.

J’ai donc voulu partagé avec ceux que cela pourrait intéresser, certains points de la sécurité COGNOS 10 qu’il faut bien comprendre et connaître avant de commencer la configuration de la sécurité, les concepts de base que l’on retrouve au niveau de l’authentification et des autorisations, cela sous la forme la plus synthétique et la plus facile à mettre en pratique possible.

 

Authentification

Les espace-noms

La mise en place de la sécurité n’est pas obligatoire dans COGNOS 10. Cela signifie que les accès utilisateurs seront en anonyme et dépendront de la configuration par défaut de l’espace-nom intégré COGNOS 10 pour l’utilisateur Anonyme. L’espace-noms intégré de COGNOS contient les objets comme les utilisateurs, les groupes, les rôles et les sources de données.

En plus de l’espace-noms Cognos, chaque ajout d’un nouveau fournisseur d’authentification est représenté par un nouvel espace-noms. La sécurité COGNOS 10 peut être basée sur un ou plusieurs fournisseurs d’authentification. Plusieurs  sont pris en charge comme par exemple active directory server, LDAP, NTLM, etc. (se reporter à la documentation Cognos).

L’espace-noms COGNOS 10 est essentiel. Il ne peut d’ailleurs pas être supprimé dans COGNOS Configuration à la différence de n’importe quel autre espace-noms lié à un fournisseur d’authentification tiers.

     

Les utilisateurs, groupes et rôles

Clarifions ces différents concepts.

L’utilisateur ne peut pas être créé sur le portail COGNOS 10. Toutes les informations (nom, prénom, adresse électronique, etc.) sur l’utilisateur proviendront toujours d’un fournisseur d’authentification.

A noter: Si vous utiliser le fournisseur COGNOS 7, l’utilisateur doit appartenir à au moins une classe d’acces manager pour pourvoir exister dans COGNOS 10.

     

En ce qui concerne les groupes et les rôles, il y a souvent beaucoup de doutes alors que c’est très simple.

Les groupes et les rôles permettent de créer des ensembles organisés d’utilisateurs qui auront les mêmes caractéristiques dans la sécurité. Toutefois il n’est pas possible de se connecter au portail en utilisant le nom du groupe ou du rôle, mais la sécurité relatif à l’utilisateur identifié sera en fonction du ou des groupes/rôles auxquels il appartient.

Ainsi, le groupe et rôle sont quasi identiques exception fait qu’un rôle ne peut pas appartenir à un groupe alors que l’inverse est possible. Le diagramme suivant illustre cette architecture:

 

      

Notez également les points suivants qui sont importants en fonction de votre fournisseur d’authentification.

Si vous n’utilisez pas le fournisseur COGNOS 7 et que vous souhaitez utiliser des groupes importés de votre fournisseur tiers, il vous faudra rajouter ces groupes de votre fournisseur tiers à un groupe ou un rôle de l’espace-noms cognos au risque que ces groupes ne soient pas reconnus par le portail COGNOS.

Si vous utilisez le fournisseur COGNOS 7, les classes utilisateurs vont apparaitre sous forme de rôle sur le portail COGNOS 10.

Comme un utilisateur peut appartenir à plusieurs groupes et rôles sa sécurité correspondra à la fusion de ses différents droits d’accès.

Au sujet de la suppression/création de groupe ou de rôle, le fait de créer un groupe ou un rôle avec le même nom qu’un ancien groupe ou rôle ne permettra pas de récupérer la sécurité supprimée.

Maintenant nous allons parler des droits d’accès, concept qu’il est important de comprendre pour mettre en place une sécurité COGNOS 10.

       

Droits d’accès

L’avantage et l’inconvénient des droits d’accès est qu’ils peuvent être définis sur presque tout, de l’utilisateur aux pages du portail. Il n’y a pas de préconisation particulière sur le meilleur niveau ou positionner les droits à part celle de faire preuve de bon sens, d’avoir des règles de développement bien définis et de positionner les droits, dans la mesure du possible, sur les niveaux supérieures.

Ci-dessous, le récapitulatif de la documentation Cognos des différents droits d’accès.

 

Les droits dont disposera un utilisateur correspondront à la combinaison des droits définit. Au minimum, un utilisateur doit disposer de droit de passage sur les entrées parent (il s’agit de contenant donc par exemple les dossiers, les packs, les groupes, les rôles, etc.) des entrées auxquelles il veut accéder. Si pour une entrée aucun droit n’est défini, l’entrée héritera des droits de son entrée parent.

Pour chaque droit vous pouvez soit donner ou refuser l’accès mais le refus d’accès prend le pas sur l’octroi. En effet, en cas de conflit entre l’octroi et le refus, l’accès est toujours refusé. Il est donc préférable de ne pas cocher des droits plutôt que de les refuser.

Lorsque vous définirez les droits d’une entrée vous verrez la case à cocher “Remplacer les droits d’accès hérités de l’entrée parent”. Cochée, cette case permet de définir précisément les droits de l’entrée en faisant abstraction des droits de l’entrée parent.

Pour illustrer le fonctionnement des droits d’accès, j’ai créé le tableau suivant qui met en face de certaines opérations les droits d’accès nécessaires.

Ces rappels à l’esprit, vous devriez maintenant pourvoir aborder plus sereinement la mise en place de votre sécurité COGNOS 10.

 

    

LW

Formation en soirée « MDX », le 18 janvier à Paris

January 13th, 2012 No comments

Venez rencontrer les équipes Homsys à l’occasion de cette Formation !
Au programme : échanges avec nos experts, ateliers et bonnes pratiques.

Homsys vous propose de participer à ses Formations en Soirée avec une session à Paris « Initiation au MDX dans le cadre d’un cube SSAS », le mercredi 18 janvier à partir de 18h30.

Cette formation a pour objectif de vous donner un aperçu du MDX et de son application dans un cube Analysis Services.

Vous y apprendrez notamment :

  • Les notions les plus importantes du MDX
  • Les fonctions MDX les plus utiles pour un cube SSAS
  • La création d’indicateurs via script MDX dans un cube
  • La création de jeu de données (SET) et de membres calculées
  • L’utilisation de la “time intelligence”

Pré-requis : avoir déjà des connaissance sur SSAS (idéalement avoir suivi les deux premières FES SSAS).

Rendez-vous dans nos locaux, au 38 rue de Ponthieu – 75008 Paris.

Pour en savoir plus : site Homsys
Pour vous inscrire* :
– Mail : klalandre[at]homsys.com
– En ligne : sur le site Homsys

*Participation gratuite après confirmation par Homsys.

Lire un fichier XML Infopath avec SSIS

December 27th, 2011 No comments

Dans  SSIS, lorsqu’on utilise un fichier XML issus de Infopath  comme source XML, on obtient l’erreur suivante :

«  Unable to infer the XSD from the XML file. The XML contains multiple namespaces »

Pour pouvoir utiliser ce fichier avec SSIS, il faut :

  1. Supprimer les Namespaces
  2. Ajouter une balise pour que SSIS interprète les champs du fichier XML comme des colonnes d’une même table et non comme des  tables distinctes.

Ceci peut se faire via un script de transformation XSLT .

Dans le control flow, il faut créer une tache  XML  de type XSLT.

Elle a besoin de 3 connections sur 3 fichiers différents :

Input : C’est une connexion sur le fichier XML source

Output : C’est le résultat de la transformation. Cela peut être une connexion sur un fichier (nécessaire pour générer une première fois le fichier XSD) , ou une variable, qui pourra ensuite être utilisée comme source XML.

Second Operand : C’est le script XSLT qui sera appliqué. Le SecondOperandType peut être une connexion si le script est stocké dans un fichier externe, ou bien DirectInput, si le code du script est saisi directement dans la valeur de SecondOperand.

Voici le contenu du script XSLT pour supprimer les Namespaces et générer la balise <myTable> :

<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="no" /><xsl:template match="/|comment()|processing-instruction()">
<xsl:copy>
<myTable>
<xsl:apply-templates />
</myTable>
</xsl:copy>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@*|node()" />
</xsl:element>
</xsl:template>
</xsl:stylesheet>

Le fichier résultat est maintenant utilisable par SSIS comme source XML.

Categories: Divers Tags:

Outil de gestion des fichiers de configuration de SSIS

November 28th, 2011 No comments

La gestion des fichiers de configuration en XML de SSIS n’est pas chose aisée. Il n’est pas facile de les modifier à la main, et les re-générer à chaque modification est un processus assez lourd. Quand en plus on doit gérer plusieurs fichiers de configuration en fonction des différents environnements de développement, recette, production… cette tâche devient rapidement compliquée et source d’erreurs.

Je vous mets donc à disposition cet outil éprouvé dans plusieurs projets BI. Cet outil est une interface web développée en asp qui vous permet de gérer simplement les différents fichiers de configurations de SSIS et ce quel que soit le nombre d’environnements différents.

L’outil permet de déclarer des environnements, de créer de nouvelles variables et de modifier les valeurs associées à ces variables pour chacun des environnements. Vous pouvez directement comparer, pour une variable, sa valeur dans chacun des environnements.

Les modifications ne sont prises en compte que lors de leur validation et une sauvegarde des fichiers est effectuée avant leur ré-écriture.

Les variables déjà présentes dans les fichiers de configuration sont automatiquement intégrées. Vous n’avez donc pas à déclarer les variables que vous avez déjà définies.

Vous n’aurez donc plus à toucher les fichiers de configuration XML, l’outil vous offre une interface simple et efficace pour les manipuler.

Archive à télécharger :
SSISConfig.zip

Déclaration des environnements :
Déclaration des environnements

Liste des variables et affichage de leur valeur dans chacun des environnements :
Liste des variables et affichage de leur valeur dans chacun des environnements

Création d’une nouvelle variable :
Création d’une nouvelle variable :

Modification de la valeur d’une variable :
Modification de la valeur d’une variable :

Validation des modifications :
Validation des modifications

Sauvegarde automatique des anciennes versions des fichiers :
Sauvegarde automatique des anciennes versions des fichiers

Categories: Divers Tags:

Grouby By Concat en Transac SQL

October 21st, 2011 No comments

Quand on doit gérer des relations en Many to Many en SQL, on se retrouve confronté au problème de

“Comment concaténer les valeurs d’une colonne de plusieurs lignes”
ou
“Comment simuler une fonction de concaténation comme agrégation d’un group by”?

Ex :

Une solution efficace et rapide est d’utiliser la clause FOR XML :

SELECT p1.CategoryId,
( SELECT ProductName + ‘,’
FROM Products p2
WHERE p2.CategoryId = p1.CategoryId
ORDER BY ProductName
FOR XML PATH(”) ) AS ProductList,COUNT(1) as ProductCount
FROM Products p1
GROUP BY CategoryId ;

Pour une étude détaillée des différentes solutions utlisables en Transac SQL, voici une excellente étude du problème :
http://www.simple-talk.com/content/article.aspx?article=539

CategoryID ProductName
1 P1
1 P2
1 P3
2 P4
2 P5
Categories: Divers Tags:

Nouveautés Microsoft Power Pivot- Hiérarchie

September 28th, 2011 No comments

Sur ce post, on va s’intéresser à la “hiérarchie” qui est prise en charge dans la nouvelle version de PowerPivot (nom de code: Denali).

La hiérarchie est créée via le diagramme view,  en sélectionnant la table sur laquelle on souhaite créer une hiérarchie.

La hiérarchie est créée en glissant les colonnes souhaitées.

Une fois la hiérarchie créée, on peut l’utiliser dans un tableau croisé Excel, ou la glisser dans les Slicers. Excel créera alors un slicer pour chaque niveau.

On pourra alors filtrer sur les composants en ajoutant la hiérarchie créée en filtre

Retour vers la synthèse des nouveautés de Powerpivot V2.

Nouveautés Power Pivot-Fonctions de relations parent-enfant

September 23rd, 2011 No comments

Dans ce post on se penchera sur certaines fonctions de gestion des relations.

Dans la première version de Power Pivot on ne pouvait pas créer de relations entre deux colonnes de la même table. Aujourd’hui, la nouvelle version permet la gestion des relations parent_enfant via les fonctions DAX.

Pour mieux comprendre, on utilisera un exemple «  fichier employé_responsable » renseignant pour chaque employé les responsables hiérarchiques, s’ils existent.

La première fonction qu’on testera est la fonction Path.

PATH([employe],[responsable]) :Retourne une chaine de caractères délimitée par la clé_employé de tous les nœuds parents de la clé employé courante, commençant du plus ancien au plus courant.

Par exemple si on s’intéresse à l’employée « Melanie_Furion » on peut voir qu’elle a pour responsable  « NADIA_FARSSI », et que « Nadia farssi » a pour responsable « Jhon Dior » ce qui correspond bien au path 111|8|18.

La seconde fonction à laquelle on s’intéresse est PATHLENGTH.

PATHLENGTH (PATH([employe],[responsable])) : Retourne la longueur du path, dans le cas Melani_furion la fonction retourne 3, donc 3 niveaux hiérarchiques.

Intéressons-nous maintenant à la fonction PATHITEM.

PATHITEM(PATH([employe],[responsable]),2)) :Retourne le deuxième niveau de la hiérarchie commençant par le niveau le plus haut. Par exemple pour l’employé Melanie_furion le responsable de niveau 2, correspond à l’id 8 (Nadia Farssi)

Il serait également intéressant de combiner les fonctions LOOKPVALUE, PATH, PATHITEM. Ceci nous permettrait de créer une sorte de hiérarchie associée à cette relation parent_enfant, de chaque niveau.

LOOKPVALUE ([nom-complet],[employe],PATHITEM(PATH([employe],[responsable]),2) :

Retourne le nom de l’employé associé au deuxième niveau de la hiérarchie

On peut ainsi dresser la hiérarchie de l’entreprise.

On peut rapidement voir les différents niveaux hiérarchiques, en déduire des responsables.

PowerPivot code Denali nous offre une fonction de relation parent-enfant intéressante, mais restant limitée comparée à la solution Microsoft SSAS. Notamment, on remarquera l’existence de niveaux « blancs ». Par exemple Jhon Dior étant le plus haut responsable, les niveaux 2 et 3 ne sont pas renseignés.

Là où SSAS nous permet d’utiliser la propriété HideMemberIf permettant de résoudre ce point, Powerpivot ne propose pas d’équivalent simple. Il existe malgré tout des solutions de contournement qui ont été publiées, parmi elles on peut citer la solution d’Alberto Ferrari.

Retour vers la synthèse des nouveautés de Powerpivot V2.

D’autres articles à venir sur les autres nouveautés…