Ugrás a fő tartalomra

MS SSAS és az XMLA használat


XMLA (XML for Analysis) részletes bemutatása



Az XMLA (XML for Analysis) egy szabványos webszolgáltatás-protokoll, amelyet az OLAP (Online Analytical Processing) és az adatbányászati műveletek kezelésére használnak SSAS-ben (SQL Server Analysis Services).

🔹 Mire használható?

  • Adatkockák és dimenziók kezelésére (létrehozás, módosítás, törlés)
  • Feldolgozás (processing) elindítására
  • Biztonsági beállítások kezelésére
  • Lekérdezések és metaadatok elérésére

1. XMLA Alapelvek és Struktúra

🔹 Alapelvek

  1. XML alapú – Könnyen olvasható és platformfüggetlen.
  2. SOAP protokollon keresztül működik – Távoli hívásokra alkalmas.
  3. Két fő műveletet támogat:
    • Discover → Metaadatok lekérdezése
    • Execute → Módosítások végrehajtása

🔹 Struktúra példa
Minden XMLA parancs <Envelope>, <Header> és <Body> blokkokból áll.

---xml

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"> <Header /> <Body> <Execute xmlns="urn:schemas-microsoft-com:xml-analysis"> <Command> <!-- Ide kerül az XMLA művelet --> </Command> <Properties> <PropertyList> <Catalog>SSAS_Database</Catalog> <Format>Tabular</Format> </PropertyList> </Properties> </Execute> </Body> </Envelope>

2. XMLA Műveletek és Példák

2.1 Discover – Metaadatok Lekérdezése

A Discover parancs lehetővé teszi SSAS metaadatainak lekérdezését, például az elérhető adatkockák listázását.

🔹 Példa: Az összes adatkocka lekérdezése

--- xml

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"> <Header/> <Body> <Discover xmlns="urn:schemas-microsoft-com:xml-analysis"> <RequestType>DBSCHEMA_CATALOGS</RequestType> <Restrictions/> <Properties> <PropertyList> <DataSourceInfo>Provider=MSOLAP</DataSourceInfo> <Catalog>SSAS_Database</Catalog> </PropertyList> </Properties> </Discover> </Body> </Envelope>

🔹 Mit csinál?
✅ Lekérdezi az SSAS-ben lévő összes adatbázist.


2.2 Execute – Adatkocka Feldolgozás (Processing)

Az Execute parancsot használhatjuk az adatkockák frissítésére (feldolgozás).

🔹 Példa: Egy adatkocka teljes újrafeldolgozása (Full Process)

---xml

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"> <Header/> <Body> <Execute xmlns="urn:schemas-microsoft-com:xml-analysis"> <Command> <Process> <Type>ProcessFull</Type> <Object> <DatabaseID>SSAS_Database</DatabaseID> <CubeID>SalesCube</CubeID> </Object> </Process> </Command> <Properties> <PropertyList> <ImpactAnalysis>true</ImpactAnalysis> </PropertyList> </Properties> </Execute> </Body> </Envelope>

🔹 Mit csinál?
Teljes újrafeldolgozást végez a "SalesCube" adatkockán
Az "ImpactAnalysis" opció ellenőrzi, hogy milyen hatása lesz a frissítésnek


2.3 Execute – Biztonsági Beállítások (Role Management)

🔹 Példa: Egy új szerepkör (Role) létrehozása és hozzáférés megadása

---xml

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"> <Header/> <Body> <Execute xmlns="urn:schemas-microsoft-com:xml-analysis"> <Command> <Create> <ObjectDefinition> <Role> <ID>SalesManagers</ID> <Name>Sales Managers</Name> <Members> <Member> <Name>DOMAIN\SalesUser1</Name> </Member> <Member> <Name>DOMAIN\SalesUser2</Name> </Member> </Members> <Permissions> <DatabasePermission> <Read>true</Read> <Process>true</Process> </DatabasePermission> </Permissions> </Role> </ObjectDefinition> </Create> </Command> </Execute> </Body> </Envelope>

🔹 Mit csinál?
Létrehoz egy "SalesManagers" nevű szerepkört
Két felhasználót ad hozzá, akik olvashatják és feldolgozhatják az adatokat


3. XMLA és SSAS Teljesítményoptimalizálás

Az XMLA nemcsak adminisztrációs, hanem teljesítményoptimalizálási feladatokra is használható.

🔹 Példa: Lekérdezési teljesítményfigyelés engedélyezése

xml

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"> <Header/> <Body> <Execute xmlns="urn:schemas-microsoft-com:xml-analysis"> <Command> <Alter ObjectExpansion="ExpandFull"> <Object> <DatabaseID>SSAS_Database</DatabaseID> </Object> <ObjectDefinition> <Trace> <ID>QueryPerformanceTrace</ID> <Name>Query Performance Trace</Name> <Events> <EventID>QueryEnd</EventID> <EventID>ProgressReportEnd</EventID> </Events> </Trace> </ObjectDefinition> </Alter> </Command> </Execute> </Body> </Envelope>

🔹 Mit csinál?
Engedélyezi az SSAS lekérdezési teljesítményfigyelését
Rögzíti az egyes lekérdezések végrehajtási idejét és teljesítményadatait


4. Összegzés és Jelentőség

🔹 XMLA főbb használati esetei
SSAS objektumok létrehozása, módosítása, törlése
Feldolgozás és teljesítményoptimalizálás
Lekérdezési teljesítményfigyelés és biztonsági beállítások kezelése

🔹 Miért fontos az XMLA?
Automatizálható – Az SSAS adminisztrációját szkriptelhetővé teszi
Távoli elérés – SOAP alapú, így más alkalmazásokból is hívható

Szabványos – Az OLAP és adatbányászati környezetek széles körben használják 


Valós Példa az XMLA Használatára – Értékesítési Adatkocka Kezelése SSAS-ben

Ebben a példában egy vállalati értékesítési rendszer SSAS adatkockáját fogjuk kezelni XMLA segítségével.
Feladat:

  • Egy SalesCube nevű adatkocka van az SSAS-ben, amely a napi értékesítési adatokat tárolja.
  • Naponta új adatokat töltenek be az OLTP rendszerből, és automatizálnunk kell az adatkocka frissítését XMLA segítségével.
  • A biztonsági szempontokat is figyelembe kell venni: csak az Értékesítési Vezetők férhessenek hozzá a pénzügyi adatokhoz.

1. Adatkocka Automatikus Feldolgozása (Process Incremental)

A cél az, hogy a SalesCube csak a napi új értékesítési adatokat dolgozza fel (ProcessAdd módszerrel), ezzel minimalizálva a feldolgozási időt és növelve a teljesítményt.

🔹 XMLA Parancs a frissítéshez

---xml

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"> <Header/> <Body> <Execute xmlns="urn:schemas-microsoft-com:xml-analysis"> <Command> <Process> <Type>ProcessAdd</Type> <Object> <DatabaseID>SalesAnalysisDB</DatabaseID> <CubeID>SalesCube</CubeID> <MeasureGroupID>SalesTransactions</MeasureGroupID> </Object> </Process> </Command> <Properties> <PropertyList> <DataSourceInfo>Provider=MSOLAP</DataSourceInfo> <Catalog>SalesAnalysisDB</Catalog> </PropertyList> </Properties> </Execute> </Body> </Envelope>

🔹 Mit csinál ez a parancs?
Csak az új értékesítési adatokat tölti be az "SalesTransactions" mérőcsoportba
Gyorsabb feldolgozást eredményez, mivel nem törli az előző adatok aggregációit
Minimalizálja a rendszer terhelését és az üzleti felhasználók számára folyamatos hozzáférést biztosít az adatokhoz


2. Adatkocka Biztonsági Beállítása – Csak az Értékesítési Vezetőknek

Biztosítanunk kell, hogy csak az Értékesítési Vezetők láthassák a pénzügyi adatokat. Ehhez dinamikus Cell Level Security-t alkalmazunk XMLA segítségével.

🔹 XMLA Parancs a biztonsági szerepkör beállításához

---xml

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"> <Header/> <Body> <Execute xmlns="urn:schemas-microsoft-com:xml-analysis"> <Command> <Create> <ObjectDefinition> <Role> <ID>SalesManagersRole</ID> <Name>Sales Managers</Name> <Members> <Member> <Name>DOMAIN\SalesManager1</Name> </Member> <Member> <Name>DOMAIN\SalesManager2</Name> </Member> </Members> <Permissions> <CubePermission> <CubeID>SalesCube</CubeID> <Read>true</Read> <CellSecurity> <Expression> IIF(UserName="DOMAIN\SalesManager1" OR UserName="DOMAIN\SalesManager2", 1, 0) </Expression> </CellSecurity> </CubePermission> </Permissions> </Role> </ObjectDefinition> </Create> </Command> </Execute> </Body> </Envelope>

🔹 Mit csinál ez a parancs?
Létrehoz egy "SalesManagersRole" nevű szerepkört
Hozzáad két felhasználót ("SalesManager1" és "SalesManager2")
Beállít egy dinamikus Cell Level Security szabályt, amely csak az adott felhasználóknak ad olvasási jogot
Ha másik felhasználó jelentkezik be, akkor a pénzügyi adatok NULL értékként jelennek meg számára

➕ Előny:
🔹 Biztosítja, hogy az érzékeny pénzügyi adatok ne legyenek elérhetők illetéktelen felhasználók számára.


3. Teljesítményfigyelés Engedélyezése – Query Performance Trace

Mivel az adatkockát naponta frissítjük, fontos, hogy figyeljük a lekérdezések teljesítményét és az esetleges lassú lekérdezéseket azonosítsuk.

🔹 XMLA Parancs a teljesítménymonitoringhoz

--xml

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"> <Header/> <Body> <Execute xmlns="urn:schemas-microsoft-com:xml-analysis"> <Command> <Alter ObjectExpansion="ExpandFull"> <Object> <DatabaseID>SalesAnalysisDB</DatabaseID> </Object> <ObjectDefinition> <Trace> <ID>QueryPerformanceTrace</ID> <Name>Query Performance Trace</Name> <Events> <EventID>QueryEnd</EventID> <EventID>ProgressReportEnd</EventID> </Events> </Trace> </ObjectDefinition> </Alter> </Command> </Execute> </Body> </Envelope>

🔹 Mit csinál ez a parancs?
Bekapcsolja a lekérdezési teljesítménymonitorozást
Rögzíti az egyes lekérdezések végrehajtási idejét és teljesítményadatait
Segít az azonosításban, hogy mely lekérdezések lassúak és milyen optimalizációkra van szükség

➕ Előny:
🔹 Az SSAS rendszergazda gyorsan észlelheti a teljesítményproblémákat
🔹 Optimalizálható az MDX lekérdezések és aggregációk beállítása


Összegzés – Az XMLA Használatának Előnyei

🔹 1. Automatizált Adatkocka Frissítés
Csak az új adatokat dolgozza fel, nem az egész kockát
Gyorsabb feldolgozás és alacsonyabb szerverterhelés

🔹 2. Részletes Biztonsági Beállítások
Biztosítja, hogy az érzékeny adatokhoz csak az arra jogosultak férjenek hozzá
Dinamikus Cell Level Security alkalmazásával finoman hangolható a hozzáférés

🔹 3. Teljesítménymonitorozás és Optimalizáció
Az XMLA segítségével könnyen nyomon követhető a lekérdezési teljesítmény
Segít az SSAS optimalizálásában és az aggregációk finomhangolásában






SSAS XMLA Szkriptek Automatizálása SQL Agent Job Segítségével

Ez az útmutató bemutatja, hogyan lehet SQL Server Agent Job segítségével automatizálni az SSAS XMLA szkriptek végrehajtását, így biztosítva az adatkockák frissítését, biztonsági szabályok beállítását, és a teljesítményfigyelést.


1. SQL Agent Job Létrehozása az SSMS-ben

  1. Nyisd meg a SQL Server Management Studio-t (SSMS)
  2. Navigálj az SQL Server Agent fába
  3. Jobok alatt jobb kattintás New Job...
  4. Adj egy nevet a jobnak (pl. SSAS_SalesCube_Update)
  5. A Steps fül alatt kattints a New... gombra

2. XMLA Szkript Hozzáadása SSAS Frissítéshez

  1. Step Name: Process SalesCube
  2. Type: SQL Server Analysis Services Command
  3. Server: SSAS szerver neve (pl. SSAS_SERVER)
  4. Command: XMLA szkript beállítása:
<Process xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
    <Object>
        <DatabaseID>SalesAnalysisDB</DatabaseID>
        <CubeID>SalesCube</CubeID>
        <MeasureGroupID>SalesTransactions</MeasureGroupID>
    </Object>
    <Type>ProcessAdd</Type>
</Process>
  1. Kattints OK, majd lépj a Schedules fülre

3. SQL Agent Job Időzítése

  1. Kattints New Schedule...
  2. Adj egy nevet (pl. DailySalesCubeUpdate)
  3. Schedule Type: Recurring
  4. Frequency: Daily
  5. Time: Válassz egy időpontot (pl. 02:00 AM)
  6. Mentéshez kattints OK

4. Biztonsági Szabályok Beállítása XMLA-val

  1. Létrehozunk egy SSAS Role-t, amely csak az értékesítési vezetőknek biztosít olvasási jogot:
<Create xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
    <ObjectDefinition>
        <Role>
            <ID>SalesManagersRole</ID>
            <Name>Sales Managers</Name>
            <Members>
                <Member>
                    <Name>DOMAIN\SalesManager1</Name>
                </Member>
            </Members>
        </Role>
    </ObjectDefinition>
</Create>
  1. Ehhez egy másik job step kell:
    • Step Name: Update Security
    • Type: SQL Server Analysis Services Command
    • Command: XMLA fenti kódja

5. Teljesítménymonitorozás Engedélyezése

Egy másik job step segít a lekérdezések figyelésében:

<Alter ObjectExpansion="ExpandFull">
    <Object>
        <DatabaseID>SalesAnalysisDB</DatabaseID>
    </Object>
    <ObjectDefinition>
        <Trace>
            <ID>QueryPerformanceTrace</ID>
            <Name>Query Performance Trace</Name>
            <Events>
                <EventID>QueryEnd</EventID>
                <EventID>ProgressReportEnd</EventID>
            </Events>
        </Trace>
    </ObjectDefinition>
</Alter>

6. Job Tesztelése és Naplózás

  1. SSMS-ben futtasd le a jobot manuálisan (Right-click → Start Job at Step...)
  2. Ha hiba van, ellenőrizd a Job History-t
  3. Ha minden rendben van, ellenőrizd az adatkocka frissítési időpontját az SSAS-ben

7. Automatizálás Előnyei

Időmegtakarítás – A napi adatkocka frissítés automatikusan történik. ✅ Minimalizált szerverterhelés – Csak az új adatok kerülnek feldolgozásra. ✅ Biztonság – Csak az illetékes felhasználók látják az adatok egyes részeit. ✅ Jobb teljesítmény – Figyelemmel kísérhetőek a lekérdezések és optimalizálható az SSAS.


Ez az automatizált rendszer biztosítja, hogy az SSAS adatkockád mindig naprakész legyen és optimális teljesítménnyel működjön. 🚀



Link: 

https://www.mssqltips.com/sqlservertip/2790/dynamic-xmla-using-tsql-for-sql-server-analysis-services/

A teljes kódminta



Megjegyzések