/****************************************************************************** * Programme : Conector de datos de Microsoft SQL Server * Reference : CONECTAC71 * Source : https://www.wearecas.eu/fr/sampleCode/CONECTAC71 ******************************************************************************/ /* --- BLOC 1 --- */ caslib SQLservercaslib desc='Microsoft SQL Server Caslib' dataSource=(srctype='sqlserver', username='myuser1', password='myPwd', sqlserver_dsn='dbsqlserver'); /* --- BLOC 2 --- */ /* Création d'une table SQL Server fictive pour l'exemple */ data casuser.mySQLsvrdata; input ID Name $ Age Score; datalines; 1 John 30 85 2 Jane 24 92 3 Mike 35 78 4 Emily 29 88 ; run; proc casutil; /* Supposons que SQLservercaslib est déjà définie comme dans l'exemple 1 */ /* list files incaslib="SQLservercaslib"; */ load casdata="mySQLsvrdata" incaslib="CASUSER" outcaslib="casuser" casout="class_from_SQLservercaslib" replace; list files incaslib="casuser"; contents casdata="class_from_SQLservercaslib" incaslib="casuser"; quit; /* --- BLOC 3 --- */ /* Création d'une table CAS fictive pour le chargement */ data casuser.TEST1; input ProductID $ Quantity SaleDate:yymmdd10.; format SaleDate yymmdd10.; datalines; PROD_A 10 2023-01-15 PROD_B 25 2023-02-20 PROD_C 12 2023-03-01 PROD_A 8 2023-03-10 PROD_D 40 2023-04-05 ; run; options cassessopts=(azuretenantid="user-tenant-id"); caslib sqls datasource=(srctype='sqlserver', database='datasource_db', username='user-id', password='password', schema='myschema', identity='Shared Access Signature', secret='shared-access-signature-value', deleteDataFiles=true); proc casutil incaslib="CASUSER" outcaslib="sqls"; save casdata="TEST1" casout="test1_out" options={bulkload=true, defaultdir='/temp_azure_dir', accountName='azurestorageaccount', applicationId='azure-application-id', fileSystem='azureblobfilesystem', compress=false} replace; run; /* --- BLOC 4 --- */ /* Préparation d'une caslib pour simuler des données SQL Server */ data casuser.Orders_SQL; input OrderID CustomerID $ OrderDate:yymmdd10. TotalAmount; format OrderDate yymmdd10.; datalines; 101 CUST001 2023-01-10 150.75 102 CUST002 2023-02-05 200.00 103 CUST001 2023-03-20 120.50 104 CUST003 2024-01-01 300.00 105 CUST002 2024-02-15 50.25 106 CUST004 2024-03-10 450.00 ; run; /* Connexion à SQL Server (simulée) */ caslib sqlserver_conn desc='Connexion SQL Server pour Données de Ventes' dataSource=(srctype='sqlserver', username='myuser1', password='myPwd', sqlserver_dsn='dbsqlserver_prod', /* DSN d'une base de production */ schema='Sales'); /* Schéma spécifique */ /* Chargement des données filtrées dans une nouvelle table CAS */ proc casutil; load casdata="Orders_SQL" incaslib="CASUSER" casout="RecentOrders_CAS" outcaslib="casuser" promote /* Rend la table visible pour toutes les sessions */ where='OrderDate >= "01JAN2024"d' /* Filtre pour les commandes après le 1er janvier 2024 */ importoptions=(vars=('OrderID' 'CustomerID' 'TotalAmount')); /* Sélectionne des colonnes spécifiques */ list files incaslib="casuser"; contents casdata="RecentOrders_CAS" incaslib="casuser"; quit;