Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/07/2011, 11h19   #1
Membre habitué
 
Avatar de crashyear
 
Homme Alexis COLLIN
Ingénieur développement logiciels
Inscription : janvier 2006
Messages : 194
Détails du profil
Informations personnelles :
Nom : Homme Alexis COLLIN
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Santé

Informations forums :
Inscription : janvier 2006
Messages : 194
Points : 119
Points : 119
Envoyer un message via MSN à crashyear
Par défaut Interfaçage SSAS et PHP

Bonjour,

Connaissez vous une librairie PHP capable d'utiliser/manipuler des données issus de SSAS 2008 ?

Faut-il obligatoirement utiliser un langage microsoft, exemple C#/ASP pour réaliser une interface de restitution web des données issus d'un cube SSAS 2008 ?

Je sais qu'il existe des outils de restitution tel que SSRS ou Cognos par exemple, mais on me demande de faire sans.

Merci d'avance pour votre réponse.
crashyear est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/07/2011, 13h38   #2
Rédacteur/Modérateur

 
Avatar de Antoun
 
Homme Antoine Dinimant
Consultant en Business Intelligence
Inscription : octobre 2006
Messages : 5 854
Détails du profil
Informations personnelles :
Nom : Homme Antoine Dinimant
Âge : 42
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : octobre 2006
Messages : 5 854
Points : 9 544
Points : 9 544
Il semblerait possible de passer par mssql_query et le langage MDX... voir le commentaire de getzeroedin sur cette page de la doc PHP : http://php.net/manual/fr/function.mssql-connect.php
__________________
Antoun
Expert SQL, BO, Essbase

La bible d'Essbase est parue !
Antoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 09h20   #3
Membre habitué
 
Avatar de crashyear
 
Homme Alexis COLLIN
Ingénieur développement logiciels
Inscription : janvier 2006
Messages : 194
Détails du profil
Informations personnelles :
Nom : Homme Alexis COLLIN
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Santé

Informations forums :
Inscription : janvier 2006
Messages : 194
Points : 119
Points : 119
Envoyer un message via MSN à crashyear
J'ai effectué quelques tests et effectivement c'est possible en suivant ce qui est écrit par "getzeroedin" sur la page de la doc PHP : http://php.net/manual/fr/function.mssql-connect.php
Sur un serveur MS SQL 2005, j'ai crée un procédure stockée contenant le code ci-dessous :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
 
USE [MA_BASE_TEMP]
GO
/****** Objet*:  StoredProcedure [dbo].[testMDX]    Date de génération du script*: 07/19/2011 08:55:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
 
-- procédure stockée permettant de lire les données des cubes
/* 
-- Amélioration à faire : ajouter des paramètres à cette PS, avec : 
- Nom du serveur OLAP : @serveur
- Nom base OLAP : @base_olap
- Provider : @provider = MSOLAP.3 (SSAS 2000), MSOLAP.4 pour du 2005 et 2008
- RequeteMDX : @rq_mdx ici simple requête permettant de recup un montant pour l'année 2005
*/
ALTER Procedure [dbo].[testMDX] as
BEGIN
SET ANSI_WARNINGS ON:  -- Must be enabled
SET ANSI_NULLS ON; -- Must be enabled
 
Declare
@SQL varchar(1200),  -- Variable to hold SQL query
@MDX varchar (1000) -- Variable to hold MDX query
 
-- Establish a link to Analysis Server
exec sp_addlinkedserver
@server='linked_olap', -- Alias used to reference the link
@srvproduct='', -- Not used
@provider='MSOLAP.4', -- OLAP driver MSOLAP.4 pour 2008
@datasrc='MONSERVEUROLAP2008', -- Database server name MONSERVEUROLAP2008
@catalog='Base_Olap' -- Database name
 
-- Analysis Server requires a TRUSTED connection
exec sp_addlinkedsrvlogin
@rmtsrvname = 'linked_olap', -- Alias used to reference the link
@useself = 'false', -- Use own credentials
@locallogin = NULL, -- Apply to all local logins
@rmtuser = '', -- Remote user name domain\username
@rmtpassword = '' -- Remote user password
 
-- Create a temporary table that will be used to hold the MDX output
create table #temp_table (periode varchar(2000) null, montant varchar(2000) null)
 
-- Setup a string to hold the MDX so that the precompiler does not try to validate the syntax
SET @MDX = ' SELECT
    { [Measures].[Montant] } ON COLUMNS,
    { [Periode].[Année] } ON ROWS
FROM [Mon Cube] '
 
-- Setup a string to insert the MDX results into the temporary table
SET @SQL = 'INSERT INTO #temp_table SELECT * FROM OpenQuery(linked_olap,'''+@MDX+''')'
 
-- Execute the SQL and remote MDX query
EXEC (@SQL)
 
-- Select the results from the temporary table to return to the calling program
Select * from #temp_table
 
-- Drop the temporary table
drop table #temp_table
 
-- Release the TRUSTED connection
exec sp_droplinkedsrvlogin 'linked_olap', NULL
 
-- Release the link to the Analysis Server
exec sp_dropserver 'linked_olap'
 
END
-- STORED PROCEDURE END
et voici mon code PHP :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 
<html>
<head>
<title>Accès SSAS 2008 :: PHP</title>
</head>
<body>
<?php
if (function_exists('mssql_fetch_row')) {
echo "MSSQL functions are available.<br />\n";
} else {
echo "MSSQL functions are not available.<br />\n";
}
?>
<br />
Test d'accès aux cubes SSAS 2008 en PHP
<br />
<?php
 
// connexion au serveur MS SQL 2005 sur lequel nous avons notre PS (testMDX)
$connect = mssql_connect ("MONSERVEURMSSQL2005", "login", "password");
 
//$conn = new COM("ADODB.Connection") or die("Impossible de démarrer ADO");
//$conn = new COM("ADOMD.Connection") or die("Impossible de démarrer ADOMD");
//$conn->Open("Provider=MSOLAP;Data Source=MONSERVEUROLAP2008;Initial Catalog=Base_Olap;User ID=;Password=");
 
 
//$create_ps = mssql_query($ps,$connect);
 
/*$resultset = mssql_query("exec MA_BASE_TEMP..testMDX",$connect);
 
while($line = mssql_fetch_row($resultset))
{
	echo $line[0]." : ".$line[1]."<br />"; 
}*/
 
$query = mssql_query("exec MG_T_TEMP..testMDX",$connect);
 
// Vérifie s'il y a des lignes
if (!mssql_num_rows($query)) {
    echo 'Pas de ligne trouvée';
} else {
    // Ceci est équivalent au code ci-dessous :
    //
    // while($row = mssql_fetch_row($query))
 
    while ($row = mssql_fetch_array($query, MSSQL_NUM)) {
        echo $row[0].' : '.$row[1].'<br />';
    }
}
 
// Libération des ressources
mssql_free_result($query);
//Fermeture de la connexion
mssql_close($connect);
 
?>
<br />
</body>
</html>
crashyear est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h02.


 
 
 
 
Partenaires

Hébergement Web