Partekatu honen bidez:


Sortu automatizazioarekin lotutako kontsultak Fabric-ekin

Oharra

Oharra: Tutorial honetan erabilitako eszenatokiak, kontsulta adibideak eta datuak fikziozkoak dira, akatsak edo eraginkortasun eza izan ditzakete eta erakustaldietarako soilik dira.

Hurrengo taulan txostenak egiteko eta behatzeko maiz erabiltzen diren automatizazioarekin lotutako taulak zerrendatzen dira.

Bistaratzeko izena Objektuaren izena Xedea
Fluxu-erregistroa fluxu-erregistroa Hainbat erregistro ditu, hala nola, erregistro pertsonalizatuak, mahaigaineko fluxuaren ekintza-erregistroak V2, makinaren exekuzio-ilararen erregistroak, auto-konponketa eskaera/erantzun zaindu gabeak eta lan-ilararen prozesatzeko erregistroak, etab. Datuak Dataverse taula elastiko batean gordetzen dira, eta erregistro motaren arabera, bere bizi-denbora (TTL) ezarpenarekin konfigura daiteke Antolakuntza-taulan (FlowLogsTtlInMinutes eta DesktopFlowQueueLogsTtlInMinutes), eta horrek erregistroak taulatik automatikoki noiz ezabatu behar diren definitzen du.
Fluxu-makina fluxu-makina Makinarekin eta ostatatutako makinarekin lotutako informazioa dauka.
Fluxu Makina Taldea fluxu-makinataldea Makina taldeari eta ostatatutako makina taldeari buruzko informazioa dauka.
Fluxu-exekuzioa flowrun Hodeiko fluxuaren exekuzioarekin lotutako datuak ditu, hala nola hasiera, amaiera, iraupena, gurasoen fluxuaren testuingurua, etab.
Fluxu saioa fluxu-saioa Mahaigaineko fluxuaren exekuzioarekin lotutako datuak ditu, hala nola hasiera, iraupena, egoera, makina, robot kontua, gurasoen fluxuaren testuingurua, etab.
Prozesua lan-fluxua Mahaigaineko fluxuak eta soluzioetan oinarritutako hodeiko fluxuak ditu (beste lan-fluxu motekin batera).
Erabiltzailea systemuser Erabiltzailea ordezkatzen du. Dataverse
Lan-ilara lan-ilara Lan-fluxu baten exekuzio-instantzia bat adierazten du.
Lan-ilararen elementua lan-ilarako elementua Lan-fluxu baten exekuzio bakoitzari buruzko informazioa dauka.

Taula-erlazio diagrama sinplifikatua

Irudiak automatizaziorako taula-erlazio garrantzitsuak baino ez ditu erakusten.

Automatizazioarekin lotutako taula-erlazioak erakusten dituen entitate-erlazioen marrazki baten pantaila-argazkia.

Sortu zure lehen kontsulta Fabric-en

Jarraitu urrats hauek Fabric-eko SQL Analytical Endpoint-ean Lakehouse-rako SQL kontsulta baten lagina sortzeko. contoso_westus_accounts_payable

  1. Ireki zure web arakatzailea, joan atarira ( Microsoft Fabric ), eta hasi saioa zure kredentzialekin.https://powerbi.com

  2. Hautatu zure Lakehouse kokatuta dagoen lan-eremua, eta ondoren hautatu nahi duzun SQL Analytical Endpoint-a (zure Lakehouse-ren azpinodo bat).

  3. SQL Analytical Endpoint-ean, hautatu SQL kontsulta berria SQL kontsulten editorea irekitzeko.

  4. SQL kontsulten editorean, idatzi zure SQL kontsulta eta hautatu Exekutatu. Adibide-kontsulta honek azken zazpi egunetan huts egin duten mahaigaineko fluxu-exekuzio (fluxu-saio) guztiak berreskuratzen ditu, mahaigaineko fluxu eta makina-ID espezifiko batekin lotuta.

       SELECT   
           flowsessionid,  
           statuscode,  
           startedon, 
           completedon,
           errorcode,  
           errormessage,  
           sessionusername,  
           runexecutionduration,  
           runduration,  
           runwaitduration,  
           context
       FROM   
           flowsession  
       WHERE   
           regardingobjectid = '[specific_flow_id]' -- Replace with the actual flow ID  
           AND machineid = '[specific_machine_guid]'  -- Replace with the actual machine ID  
           AND statuscode = 8 -- 'Failed' sessions  
           AND createdon >= DATEADD(day, -7, GETDATE())  
       ORDER BY   
           createdon DESC;  
    
  5. Hona hemen Flow Sessions (mahaigaineko fluxuen exekuzioak) taularen egoera-arrazoien (egoera-kodea) zerrenda bat.

    Egoeraren arrazoia Balioa
    Pausatuta 1
    Exekutatzen 2
    Zain nago 3
    Osatuta 4
    Saltatuta 5
    Esekita 6
    Utzi da 7
    Ezin izan da egin 8
    Huts egin du 9
    TimedOut 1,0
    Bat-batean geldituta 11
    Ez ikusi eginda 12
  6. Berrikusi kontsultaren emaitzak zure beharrak betetzen dituztela ziurtatzeko.

    Datu-baseen kudeaketa tresna batean exekutatzen ari den SQL kontsulta baten pantaila-argazkia.

  7. (Aukerakoa) Ireki emaitzekin Excel-en zuzeneko kontsulta bat SQL kontsulta nabarmenduz eta kontsultaren irteera atalean Ireki Excel-en hautatuz. Honek Excel fitxategi bat sortu eta Live-query batekin deskargatzen du SQL Analytics amaiera-puntura, analisi gehiago egiteko.

    Fabric-eko datu-baseko kontsulta-panelean exekutatzen ari den SQL kontsulta baten pantaila-argazkia.

  8. (Aukerakoa) SQL kontsulta etorkizunean erabiltzeko gordetzeko, hautatu Gorde kontsulta.

Oinarrizko fluxu-kontsultak

Berreskuratu hodeiko fluxuak jabearen informazioarekin

Kontsulta honek hodeiko fluxu guztiak itzultzen ditu, haien jabearen informazioarekin batera.

Oharra

Fabric-en irtenbide baten parte diren hodeiko fluxuak bakarrik daude eskuragarri. Dataverse

    SELECT   
        w.name AS 'Cloud flow',  
        w.workflowid AS 'Cloud flow Id',  
        w.createdon AS 'Created on',
        w.modifiedon AS 'Last modified on',
        w.clientdata AS 'Script',  
        w.ownerid AS 'Owner Id',  
        s.fullname AS 'Owner name',  
        s.internalemailaddress AS 'Owner email'
    FROM   
        workflow w  
    JOIN   
        systemuser s ON w.ownerid = s.systemuserid  
    WHERE   
        w.category = 5;  -- Only consider solution-cloud flows (category 5)  

Berreskuratu mahaigaineko fluxuak jabearen informazioarekin

Kontsulta honek mahaigaineko fluxu guztiak itzultzen ditu jabearen informazioarekin batera.

    SELECT   
        w.name AS 'Desktop flow',  
        w.workflowid AS 'Desktop flow Id',  
        w.createdon AS 'Created on',
        w.modifiedon AS 'Last modified on',
        w.definition AS 'Script',  
        w.ownerid AS 'Owner Id',  
        s.fullname AS 'Owner name',  
        s.internalemailaddress AS 'Owner email'
    FROM   
        workflow w  
    JOIN   
        systemuser s ON w.ownerid = s.systemuserid  
    WHERE   
        w.category = 6;  -- Only consider desktop flows (category 6)  

Kontsulta honek mahaigaineko fluxu jakin baten exekuzio-denboraren (Fluxu Saioak) gutxienekoa, batez bestekoa (batez bestekoa), gehienekoa eta desbideratze estandarra berreskuratzen ditu, milisegundoetatik bihurtutako exekuzio-denborak hurbilen dagoen segundo osora biribilduta. Kontsultak emaitzak makina IDen arabera taldekatzen ditu eta xehetasunak biltzen ditu, hala nola makinen izenak, kudeaketa motak, ostatatutako makina kopuru maximoa, saioen edukiera eta azken taupada data Makina Taldea eta Makina tauletatik.

    SELECT   
        f.machineid,  
        fm.name AS machine_name,  
        CASE   
            WHEN mg.managementtype = 0 THEN 'Regular Machine (Group)'  
            ELSE 'Hosted Machine (Group)'  
        END AS managementtype,  
        mg.maxmanagedmachinecount AS maxmanagedmachinecount,  
        fm.lastheartbeatdate AS last_heartbeat_date,  
        fm.sessioncapacity AS 'Max Parallel Sessions',    
        CEILING(MIN(f.runduration) / 1000.0) AS min_runtime,  
        CEILING(AVG(f.runduration) / 1000.0) AS mean_runtime,  
        CEILING(MAX(f.runduration) / 1000.0) AS max_runtime,  
        CEILING(STDEV(f.runduration) / 1000.0) AS stdev_runtime
    FROM   
        flowsession f  
    JOIN   
        flowmachinegroup mg ON f.machinegroupid = mg.flowmachinegroupid  
    JOIN   
        flowmachine fm ON f.machinegroupid = fm.flowmachinegroupid  
    WHERE   
        f.regardingobjectid = '[specific_flow_id]' -- Replace with the actual flow ID
    GROUP BY   
        f.machineid, fm.name, mg.managementtype, mg.maxmanagedmachinecount, fm.lastheartbeatdate, fm.sessioncapacity  
    ORDER BY   
        mean_runtime DESC;  

Fabric-en emaitzen leiho batekin exekutatzen ari den SQL kontsulta baten pantaila-argazkia.

Kontsulta honek mahaigaineko fluxu jakin baterako makina eta lizentzien inguruko gaitasun arazoak identifikatzen ditu, baliabideen esleipena optimizatzen eta errendimendu mugak konpontzen laguntzeko.

    SELECT   
        f.machineid,  
        fm.name AS machine_name,  
        CASE   
            WHEN mg.managementtype = 0 THEN 'Regular Machine (Group)'  
            ELSE 'Hosted Machine (Group)'  
        END AS managementtype,  
        mg.maxmanagedmachinecount AS maxmanagedmachinecount,  
        fm.lastheartbeatdate AS last_heartbeat_date,  
        fm.sessioncapacity AS 'Max Parallel Sessions',  
        fm.overcapacitysince,  
        CASE   
            WHEN fm.overcapacitysince IS NOT NULL THEN 'Over Capacity'  
            ELSE 'Within Capacity'  
        END AS capacity_status  
    FROM   
        flowsession f  
    JOIN   
        flowmachinegroup mg ON f.machinegroupid = mg.flowmachinegroupid  
    JOIN   
        flowmachine fm ON f.machinegroupid = fm.flowmachinegroupid
    WHERE   
        f.regardingobjectid = '[specific_flow_id]' -- Replace with the actual flow ID
    GROUP BY   
        f.machineid, fm.name, mg.managementtype, mg.maxmanagedmachinecount, fm.lastheartbeatdate, fm.sessioncapacity, fm.overcapacitysince  
    ORDER BY   
        capacity_status DESC, fm.lastheartbeatdate DESC;  

Bilatu konexioetan testu arrunteko pasahitzak dituzten script-ak

Kontsulta honek testu arrunteko pasahitza erabiltzeko konfiguratuta dauden (OLEDB) datu-baseko konexio-kateak erabiltzen dituzten mahaigaineko fluxu guztiak aurkitzen ditu.

    SELECT   
        w.name AS 'Desktop flow',  
        w.workflowid AS 'Desktop flow Id',  
        w.createdon AS 'Created on',  
        w.modifiedon AS 'Last modified on',  
        w.definition AS 'Script',  
        w.ownerid AS 'Owner Id',  
        s.fullname AS 'Owner name',  
        s.internalemailaddress AS 'Owner email'  
    FROM   
        workflow w  
    JOIN   
        systemuser s ON w.ownerid = s.systemuserid  
    WHERE   
        w.category = 6  
        AND w.definition IS NOT NULL  
        AND (LOWER(w.definition) LIKE '%;password=%');

SQL injekzioen arrisku potentziala

Kontsultak SQL injekzioaren aurrean zaurgarriak izan daitezkeen scriptak dituzten mahaigaineko fluxuak detektatzen ditu, fluxuen definizioetan database.executesqlstatement.execute erabilera bilatuz. Demagun egoera bat non, SQL kodea zuzenean idatzi beharrean SQL adierazpena exekutatu ekintzan, scriptak exekuzio-garaian scriptari emandako Power Automate mahaigaineko sarrera-aldagai bat (adibidez, %LetsDeleteAllGeneralLedgerEntriesFromDB%) erabiltzen duen.

Mahaigaineko 'SQL agindua exekutatu' konfigurazio elkarrizketa-koadroaren pantaila-argazkia. Power Automate

    SELECT   
        w.name AS 'Desktop flow',  
        w.workflowid AS 'Desktop flow Id',  
        w.createdon AS 'Created on',  
        w.modifiedon AS 'Last modified on',  
        w.definition AS 'Script',  
        w.ownerid AS 'Owner Id',  
        s.fullname AS 'Owner name',  
        s.internalemailaddress AS 'Owner email'  
    FROM   
        workflow w  
    JOIN   
        systemuser s ON w.ownerid = s.systemuserid  
    WHERE   
        w.category = 6  
        AND w.definition IS NOT NULL  
        AND LOWER(w.definition) LIKE '%database.executesqlstatement.execute%';
    

API eskaeren erabilera aurreratua

Kontsulta honek kanpoko web zerbitzuetarako konexioa identifikatzeko API eskaera metodo aurreratuak erabiltzen dituzten mahaigaineko fluxuak berreskuratzen ditu, hala nola curl, Invoke-RestMethod eta beste requests batzuk.

    SELECT   
        w.name AS 'Desktop flow',  
        w.workflowid AS 'Desktop flow Id',  
        w.createdon AS 'Created on',  
        w.modifiedon AS 'Last modified on',  
        w.definition AS 'Script',  
        w.ownerid AS 'Owner Id',  
        s.fullname AS 'Owner name',  
        s.internalemailaddress AS 'Owner email'  
    FROM   
        workflow w  
    JOIN   
        systemuser s ON w.ownerid = s.systemuserid  
    WHERE   
        w.category = 6  
        AND w.definition IS NOT NULL  
        AND (
            LOWER(w.definition) LIKE '%curl%' OR 
            LOWER(w.definition) LIKE '%invoke-restmethod%' OR 
            LOWER(w.definition) LIKE '%invoke-webrequest%' OR 
            LOWER(w.definition) LIKE '%httpclient%' OR 
            LOWER(w.definition) LIKE '%requests.get%' OR 
            LOWER(w.definition) LIKE '%requests.post%' OR 
            LOWER(w.definition) LIKE '%fetch%' OR 
            LOWER(w.definition) LIKE '%axios%' OR 
            LOWER(w.definition) LIKE '%.ajax%'
        );
    

Web amaierako puntuak eta URL lasterbideak erabiltzea

Kontsulta honek URL laburtzaileak erreferentziatzen dituzten scriptak dituzten mahaigaineko fluxuak detektatzen ditu, URL erabilera mugatuaren arrisku potentzialak ebaluatzeko.

    SELECT   
        w.name AS 'Desktop flow',  
        w.workflowid AS 'Desktop flow Id',  
        w.createdon AS 'Created on',  
        w.modifiedon AS 'Last modified on',  
        w.definition AS 'Script',  
        w.ownerid AS 'Owner Id',  
        s.fullname AS 'Owner name',  
        s.internalemailaddress AS 'Owner email'  
    FROM   
        workflow w  
    JOIN   
        systemuser s ON w.ownerid = s.systemuserid  
    WHERE   
        w.category = 6  
        AND w.definition IS NOT NULL  
        AND (
            LOWER(w.definition) LIKE '%bit.ly%' OR 
            LOWER(w.definition) LIKE '%linkedin.com%' OR 
            LOWER(w.definition) LIKE '%aka.ms%' OR 
            LOWER(w.definition) LIKE '%tinyurl.com%' OR 
            LOWER(w.definition) LIKE '%goo.gl%' OR 
            LOWER(w.definition) LIKE '%t.co%' OR 
            LOWER(w.definition) LIKE '%fb.me%' OR 
            LOWER(w.definition) LIKE '%is.gd%' OR 
            LOWER(w.definition) LIKE '%buff.ly%'
        );
    

Script-etan erroreen kudeaketa falta

Kontsulta honek erroreak kudeatzeko mekanismorik ez duten mahaigaineko fluxuak bilatzen ditu, hala nola on block error or on error, script-en exekuzioan sendotasuna eta fidagarritasuna bermatzeko.

    SELECT   
        w.name AS 'Desktop flow',  
        w.workflowid AS 'Desktop flow Id',  
        w.createdon AS 'Created on',  
        w.modifiedon AS 'Last modified on',  
        w.definition AS 'Script',  
        w.ownerid AS 'Owner Id',  
        s.fullname AS 'Owner name',  
        s.internalemailaddress AS 'Owner email'  
    FROM   
        workflow w  
    JOIN   
        systemuser s ON w.ownerid = s.systemuserid  
    WHERE   
        w.category = 6  
        AND w.definition IS NOT NULL  
        AND NOT (LOWER(w.definition) LIKE '%on block error%' OR LOWER(w.definition) LIKE '%on error%');
    

Oharra

Atal honekin jarraitu aurretik, ziurtatu Mahaigaineko Fluxuen Erregistroak V2 gaituta dagoela zure ingurunean eta mahaigaineko fluxuen exekuzioak dituzula.

Mahaigaineko fluxua URL sarbide mugatuarekin exekutatzen da

Kontsulta honek azken hiru asteetan mahaigaineko fluxu jakin batean web zerbitzuen deiak (Web Zerbitzua Deitu ekintza) aurkitzen ditu. Emaitza hau baliagarria da susmagarriak izan daitezkeen amaiera-puntuak edo mugatutako API deiak identifikatu eta aztertzeko.

    SELECT   
        JSON_VALUE(f.data, '$.name') AS ActionName,  
        f.data AS 'Action log',  
        f.parentobjectid AS 'Parent object id',  
        f.createdon AS 'Log created on',
        w.name AS 'Desktop flow',  
        w.workflowid AS 'Desktop flow Id',  
        w.createdon AS 'Created on',  
        w.modifiedon AS 'Last modified on',  
        w.definition AS 'Script',  
        w.ownerid AS 'Owner Id',  
        s.fullname AS 'Owner name',  
        s.internalemailaddress AS 'Owner email'  
    FROM  
        [flowlog] f  
    JOIN  flowsession fs ON f.parentobjectid = fs.flowsessionid         
    JOIN  workflow w ON fs.regardingobjectid = w.workflowid  
    JOIN  systemuser s ON w.ownerid = s.systemuserid  
    WHERE   
        w.workflowid = '[specific_flow_id]' -- Replace with the actual flow ID
        AND f.createdon >= DATEADD(day, -21, GETDATE())
        AND JSON_VALUE(f.data, '$.name') = 'Invoke web service'  
        AND (  
            f.data LIKE '%contoso-default.crm.dynamics.com/api%'  
            OR f.data LIKE '%api.second-restricted-url.net%'  
            OR f.data LIKE '%api.third-restricted-url.de%'  
            OR f.data LIKE '%api.phishing-example.com%'  
        );

Mahaigaineko fluxua kode kriptografikoarekin exekutatzen da

Kontsulta honek mahaigaineko fluxuen exekuzioak aztertzen ditu azken zazpi egunetan kode kriptografikoa izan duten PowerShell script ekintzen bila.

    -- Queries actions logs named 'Run PowerShell script' that contain code that that uses cryptographic libraries 
    -- and terms such as "AES", "RSA", "encryption", or "decryption," which may indicate risky operations
    SELECT top(1)
        JSON_VALUE(data, '$.name') AS ActionName,
        JSON_VALUE(data, '$.inputs') AS Inputs,
        JSON_VALUE(data, '$.outputs') AS Outputs
    FROM 
        [flowlog]
    WHERE
        JSON_VALUE(data, '$.name') = 'Run PowerShell script'
        AND createdon >= DATEADD(day, -7, GETDATE())
        AND (
            JSON_VALUE(data, '$.inputs') LIKE '%AES%'
            OR JSON_VALUE(data, '$.inputs') LIKE '%RSA%'
            OR JSON_VALUE(data, '$.inputs') LIKE '%encryption%'
            OR JSON_VALUE(data, '$.inputs') LIKE '%decryption%'
        )
    ORDER BY
        ActionName
    

Mahaigaineko fluxua pro-kodearen erabilerarekin exekutatzen da

Kontsulta hau zertxobait aurreratuagoa da. Azken zazpi egunetako pro-kodetze atalak (VBScript, PowerShell, JavaScript, .NET edo Python bezalakoak) dituzten mahaigaineko fluxu-exekuzio desberdinak (Fluxu Saioak) identifikatzen eta zenbatzen ditu, eta emaitzak mahaigaineko fluxuaren arabera taldekatzen ditu.

WITH ProCodingSessions AS (  
    SELECT   
        fs.flowsessionid,  
        f.data AS 'Action log',  
        f.parentobjectid AS 'Parent object id',  
        f.createdon AS 'Log created on',  
        w.name AS 'Desktop flow',  
        w.workflowid AS 'Desktop flow Id',  
        w.createdon AS 'Created on',  
        w.modifiedon AS 'Last modified on',  
        w.definition AS 'Script',  
        w.ownerid AS 'Owner Id',  
        s.fullname AS 'Owner name',  
        s.internalemailaddress AS 'Owner email'  
    FROM [flowlog] f  
    JOIN flowsession fs ON f.parentobjectid = fs.flowsessionid  
    JOIN workflow w ON fs.regardingobjectid = w.workflowid  
    JOIN systemuser s ON w.ownerid = s.systemuserid  
    WHERE f.createdon >= DATEADD(day, -7, GETDATE())  
    AND (  
        LOWER(w.definition) LIKE '%runvbscript%' OR  
        LOWER(w.definition) LIKE '%runpowershellscript%' OR  
        LOWER(w.definition) LIKE '%runjavascript%' OR  
        LOWER(w.definition) LIKE '%rundotnetscript%' OR  
        LOWER(w.definition) LIKE '%runpythonscript%'  
    )  
),  
FlowCounts AS (  
    SELECT  
        p.[Desktop flow],  
        p.[Desktop flow Id],  
        p.[Created on],  
        p.[Last modified on],  
        p.[Script],  
        p.[Owner Id],  
        p.[Owner name],  
        p.[Owner email],  
        COUNT(DISTINCT p.flowsessionid) AS ProCodingSessionCount  
    FROM ProCodingSessions p  
    GROUP BY  
        p.[Desktop flow],  
        p.[Desktop flow Id],  
        p.[Created on],  
        p.[Last modified on],  
        p.[Script],  
        p.[Owner Id],  
        p.[Owner name],  
        p.[Owner email]  
)  
SELECT  
    f.[Desktop flow],  
    f.[Desktop flow Id],  
    f.[Created on],  
    f.[Last modified on],  
    f.[Script],  
    f.[Owner Id],  
    f.[Owner name],  
    f.[Owner email],  
    f.ProCodingSessionCount AS 'Runs with pro-code' 
FROM FlowCounts f  
ORDER BY f.ProCodingSessionCount DESC;  

Mahaigaineko fluxuaren 10 ekintza hutsal nagusiak

Kontsulta honek azken zazpi egunetan izandako errore kopuruaren arabera huts egin duten 10 ekintza nagusiak itzultzen ditu.

    SELECT TOP(10)   
        JSON_VALUE(data, '$.name') AS ActionName,  
        SUM(CASE WHEN JSON_VALUE(data, '$.status') = 'Failed' THEN 1 ELSE 0 END) AS ErrorCount  
    FROM [flowlog]  
    WHERE createdon >= DATEADD(day, -7, GETDATE())  
    GROUP BY JSON_VALUE(data, '$.name')  
    HAVING SUM(CASE WHEN JSON_VALUE(data, '$.status') = 'Failed' THEN 1 ELSE 0 END) > 0  
    ORDER BY ErrorCount DESC;  

10 errore-kode nagusiak zenbaketarekin

    SELECT TOP(10)  
        JSON_VALUE(data, '$.errorCode') AS ErrorCode,  
        COUNT(*) AS OccurrenceCount  
    FROM [flowlog]  
    WHERE createdon >= DATEADD(day, -7, GETDATE())  
      AND JSON_VALUE(data, '$.status') = 'Failed'  
    GROUP BY JSON_VALUE(data, '$.errorCode')  
    ORDER BY OccurrenceCount DESC;