Σημείωμα
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να εισέλθετε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Σε αυτό το ολοκληρωμένο πρόγραμμα εκμάθησης, δημιουργείτε μια ολοκληρωμένη ροή εργασιών που παρακολουθεί την κατάσταση του έργου, εγγράφει ενημερώσεις σε μια βάση δεδομένων και δημοσιεύει ειδοποιήσεις από μια αναφορά Power BI στο Microsoft Teams. Η λύση διατηρεί ένα πλήρες ιστορικό όλων των ενημερώσεων κατάστασης, ώστε να μπορείτε να παρακολουθείτε πώς έχει αλλάξει η κατάσταση του έργου με την πάροδο του χρόνου. Αυτό το σεμινάριο δείχνει πώς να συνδυάσετε την εγγραφή δεδομένων με εξωτερικές κλήσεις API για να δημιουργήσετε μια πλήρη ροή εργασιών επικοινωνίας.
Σε αυτό το εκπαιδευτικό βοήθημα, θα μάθετε πώς μπορείτε να κάνετε τα εξής:
- Δημιουργήστε μια βάση δεδομένων SQL στο Fabric με πίνακες παρακολούθησης έργου και κατάστασης που διατηρούν πλήρες ιστορικό.
- Ρυθμίστε μια βιβλιοθήκη μεταβλητών για να αποθηκεύσετε τη διαμόρφωση ξεχωριστά.
- Διαμορφώστε τις λειτουργίες δεδομένων χρήστη που ενημερώνουν την κατάσταση, ζητούν ενημερώσεις και δημοσιεύουν ειδοποιήσεις στο Teams.
- Προαιρετικά ρυθμίστε συντομεύσεις Lakehouse με υλοποιημένες προβολές λίμνης για απευθείας προβολές λίμνης.
- Ενοποιήστε συναρτήσεις δεδομένων χρήστη με μια αναφορά Power BI χρησιμοποιώντας κουμπιά συναρτήσεων δεδομένων.
Εάν δεν έχετε υπάρχοντες εκχωρημένους πόρους Fabric, ξεκινήστε μια δοκιμαστική έκδοση Fabric.
Προϋποθέσεις
- Power BI Desktop. Εάν δεν έχετε εγκατεστημένο το Power BI Desktop στη συσκευή σας, ακολουθήστε τις οδηγίες στο θέμα Λήψη του Power BI Desktop.
- Ένα κανάλι Microsoft Teams όπου έχετε άδεια να προσθέσετε εισερχόμενα webhook.
Επισκόπηση
Αυτό το εκπαιδευτικό βοήθημα δημιουργεί μια λύση παρακολούθησης έργου όπου οι χρήστες μπορούν να ενημερώσουν την κατάσταση του έργου απευθείας από μια αναφορά Power BI. Όταν ένας χρήστης ενημερώνει μια κατάσταση, το σύστημα:
- Εγγράφει τη νέα κατάσταση στη βάση δεδομένων SQL, διατηρώντας ένα πλήρες ιστορικό όλων των ενημερώσεων κατάστασης.
- Στέλνει μια ειδοποίηση προσαρμοζόμενης κάρτας στο Microsoft Teams.
- Ανανεώνει την αναφορά για να εμφανίσει τα ενημερωμένα δεδομένα.
Σημείωμα
Οι ενημερώσεις εμφανίζονται στην αναφορά μετά την ολοκλήρωση της συνάρτησης δεδομένων και την ανανέωση της σελίδας αναφοράς, συνήθως μέσα σε λίγα δευτερόλεπτα, ανάλογα με παράγοντες όπως ο χρόνος εκτέλεσης της συνάρτησης, ο χρόνος απόκρισης ερωτήματος και οι συνθήκες δικτύου. Με τη λειτουργία αποθήκευσης εισαγωγής, το μοντέλο σημασιολογίας πρέπει να ανανεωθεί ξεχωριστά πριν εμφανιστούν ενημερωμένες τιμές.
Ροή χρήστη
Η ροή εργασίας δημιουργεί έναν συνεχή βρόχο σχολίων μεταξύ των χρηστών της αναφοράς:
Αίτημα ενημέρωσης μέσω του Teams από την αναφορά — Ένας χρήστης επιλέγει ένα έργο στην αναφορά και στέλνει ένα αίτημα ενημέρωσης κατάστασης. Η αίτηση δημοσιεύεται στο Teams με μια σύνδεση πίσω στην αναφορά.
Λήψη ειδοποίησης στο Teams και άνοιγμα αναφοράς — Ο κάτοχος του έργου βλέπει την ειδοποίηση στο Teams και επιλέγει τη σύνδεση για να ανοίξει την αναφορά.
Ενημέρωση κατάστασης στην αναφορά — Ο κάτοχος του έργου επιλέγει το έργο, επιλέγει μια νέα κατάσταση, προσθέτει σημειώσεις και επιλέγει το κουμπί ενημέρωσης.
Δείτε την ενημέρωση και στείλτε ειδοποίηση — Η αναφορά εμφανίζει τη νέα κατάσταση και μια ειδοποίηση δημοσιεύεται στο Teams που επιβεβαιώνει την αλλαγή.
Αρχιτεκτονική
Η λύση συνδέει αυτά τα στοιχεία στο Microsoft Fabric:
| Συνθετικός | Σκοπός |
|---|---|
| Βάση δεδομένων SQL Fabric | Αποθηκεύει εγγραφές ενημέρωσης έργου και κατάστασης με πλήρες ιστορικό. Περιέχει τον πίνακα, Project τον πίνακα (ο οποίος διατηρεί ένα πλήρες ιστορικό όλων των αλλαγών) και Status updates την Project status προβολή. |
| Lakehouse (προαιρετικό) | Παρέχει συντομεύσεις στους πίνακες βάσης δεδομένων SQL για προβολές Direct Lake. Χρησιμοποιήστε το όταν χρειάζεστε υλοποιημένες προβολές λίμνης για αναλυτικά στοιχεία. |
| Βιβλιοθήκη μεταβλητών | Αποθηκεύει τιμές ρύθμισης παραμέτρων, όπως τη διεύθυνση URL webhook του Teams και τη διεύθυνση URL αναφοράς. Ενημέρωση τιμών χωρίς αναδημοσίευση συναρτήσεων. |
| Λειτουργίες δεδομένων χρήστη | Λειτουργίες Python που χειρίζονται την εγγραφή στην SQL και δημοσιεύουν ειδοποιήσεις στο Microsoft Teams μέσω Προσαρμόσιμες κάρτες. |
| Σημασιολογικό μοντέλο Power BI | Καθορίζει το μοντέλο δεδομένων, τις σχέσεις και τις μετρήσεις. Έχει δημιουργηθεί με την αναφορά στο Power BI Desktop, αλλά υπάρχει ως ξεχωριστό στοιχείο στην υπηρεσία Power BI. |
| αναφορά Power BI | Η διεπαφή χρήστη όπου οι χρήστες προβάλλουν έργα, επιλέγουν νέες καταστάσεις και ενεργοποιούν ενημερώσεις μέσω κουμπιών λειτουργίας δεδομένων. |
| Ομάδες της Microsoft | Λαμβάνει ειδοποιήσεις προσαρμόσιμης κάρτας με αλλαγές κατάστασης και συνδέσεις πίσω στην αναφορά. |
Τα δεδομένα ρέουν προς δύο κατευθύνσεις:
- Διαδρομή ανάγνωσης: Το Power BI διαβάζει από τη βάση δεδομένων SQL (μέσω DirectQuery) ή το Lakehouse (μέσω Direct Lake) για να εμφανίσει την τρέχουσα κατάσταση του έργου.
- Διαδρομή εγγραφής: Όταν ένας χρήστης επιλέγει ένα κουμπί συνάρτησης δεδομένων, το Power BI καλεί τη συνάρτηση δεδομένων χρήστη, η οποία εγγράφει στη βάση δεδομένων SQL και καταχωρεί στο Teams.
Δημιουργία βάσης δεδομένων SQL
Αυτό το σενάριο χρησιμοποιεί δεδομένα παρακολούθησης έργου. Ακολουθήστε τα βήματα στην ενότητα Δημιουργία βάσης δεδομένων SQL στο Fabric για να δημιουργήσετε μια νέα βάση δεδομένων SQL στον χώρο εργασίας σας Fabric.
Δημιουργία πινάκων βάσης δεδομένων
Στη βάση δεδομένων SQL, ανοίξτε ένα νέο παράθυρο ερωτήματος.
Εκτελέστε την ακόλουθη δέσμη ενεργειών SQL για να δημιουργήσετε τον πίνακα Project:
CREATE TABLE [Project] ( [Project id] INT NOT NULL, [Project name] NVARCHAR(200) NOT NULL, [Product name] NVARCHAR(200), [Description] NVARCHAR(4000), [Priority] NVARCHAR(20), [Start date] DATE, [Target end date] DATE, [Budget] DECIMAL(18,2), [Project manager] NVARCHAR(100), [Department] NVARCHAR(100), [Created date] DATETIME2, [Created by] NVARCHAR(100), [Is active] BIT, CONSTRAINT PK_Project PRIMARY KEY NONCLUSTERED ([Project id]) );Δημιουργήστε τον πίνακα Ενημερώσεις κατάστασης για να παρακολουθείτε τις αλλαγές κατάστασης με την πάροδο του χρόνου:
CREATE TABLE [Status updates] ( [Update id] INT NOT NULL, [Project id] INT NOT NULL, [Status] NVARCHAR(50) NOT NULL, [Updated date] DATETIME2 NOT NULL, [Updated by] NVARCHAR(100) NOT NULL, [Notes] NVARCHAR(4000), CONSTRAINT PK_StatusUpdates PRIMARY KEY NONCLUSTERED ([Update id]) );Δημιουργήστε μια προβολή που επιστρέφει την πιο πρόσφατη κατάσταση για κάθε έργο:
CREATE VIEW [Project status] AS SELECT p.[Project id], p.[Project name], COALESCE(ls.[Latest status], 'Not Started') AS [Latest status], ls.[Latest notes] FROM [Project] p LEFT JOIN ( SELECT [Project id], [Status] AS [Latest status], [Notes] AS [Latest notes], ROW_NUMBER() OVER (PARTITION BY [Project id] ORDER BY [Update id] DESC) AS RowNum FROM [Status updates] ) ls ON p.[Project id] = ls.[Project id] AND ls.RowNum = 1;Εισαγωγή δείγματος δεδομένων έργου:
INSERT INTO [Project] ([Project id], [Project name], [Product name], [Description], [Priority], [Start date], [Target end date], [Budget], [Project manager], [Department], [Created date], [Created by], [Is active]) VALUES (1, 'Best Practices with Power BI - FabCon Atlanta', 'FabCon Atlanta', 'Session covering Power BI best practices for enterprise deployments', 'High', '2026-01-15', '2026-03-20', 5000.00, 'person1@somecompany.com', 'Developer Relations', '2026-01-15', 'Admin', 1), (2, 'Translytical Task Flows - Build', 'Microsoft Build', 'Deep dive into translytical workloads and real-time analytics patterns', 'Critical', '2026-02-01', '2026-05-19', 7500.00, 'person2@somecompany.com', 'Product Engineering', '2026-02-01', 'Admin', 1), (3, 'Advanced DAX Patterns - FabCon Barcelona', 'FabCon Barcelona', 'Workshop on complex DAX calculations and optimization techniques', 'High', '2026-03-01', '2026-09-15', 6000.00, 'person1@somecompany.com', 'Developer Relations', '2026-02-20', 'Admin', 1), (4, 'Semantic Modeling Deep Dive - Ignite', 'Microsoft Ignite', 'Comprehensive session on semantic model design and best practices', 'High', '2026-01-10', '2026-11-18', 8000.00, 'person2@somecompany.com', 'Product Engineering', '2026-01-10', 'Admin', 1), (5, 'Custom Visuals in Power BI - FabCon Atlanta', 'FabCon Atlanta', 'Hands-on lab for building custom visuals with the Power BI SDK', 'Medium', '2025-12-01', '2026-03-20', 4500.00, 'person1@somecompany.com', 'Developer Relations', '2025-12-01', 'Admin', 1), (6, 'TMDL for Version Control - Build', 'Microsoft Build', 'Session on using TMDL for semantic model source control and CI/CD', 'Critical', '2025-11-15', '2026-02-15', 5500.00, 'person2@somecompany.com', 'Product Engineering', '2025-11-15', 'Admin', 1), (7, 'Real-time Analytics with Power BI - Ignite', 'Microsoft Ignite', 'Showcase of Direct Lake and real-time streaming capabilities', 'High', '2026-02-10', '2026-11-18', 7000.00, 'person1@somecompany.com', 'Developer Relations', '2026-02-10', 'Admin', 1), (8, 'Semantic Modeling Workshop - FabCon Barcelona', 'FabCon Barcelona', 'Interactive workshop on building enterprise-grade semantic models', 'High', '2026-04-01', '2026-09-15', 6500.00, 'person2@somecompany.com', 'Product Engineering', '2026-02-25', 'Admin', 1);Εισαγωγή δείγματος ενημερώσεων κατάστασης:
INSERT INTO [Status updates] ([Update id], [Project id], [Status], [Updated date], [Updated by], [Notes]) VALUES (1, 1, 'Not Started', '2026-01-15', 'person1@somecompany.com', 'Session abstract submitted and approved'), (2, 1, 'In Progress', '2026-01-25', 'person1@somecompany.com', 'Outline completed, starting slide deck'), (3, 1, 'In Progress', '2026-02-10', 'person1@somecompany.com', 'Demo environment setup in progress'), (4, 1, 'In Progress', '2026-02-25', 'person1@somecompany.com', 'First draft of presentation complete, scheduling dry run'), (5, 2, 'Not Started', '2026-02-01', 'person2@somecompany.com', 'Session proposal accepted for Build'), (6, 2, 'In Progress', '2026-02-08', 'person2@somecompany.com', 'Research phase - gathering customer scenarios'), (7, 2, 'In Progress', '2026-02-15', 'person2@somecompany.com', 'Architecture diagrams drafted'), (8, 2, 'In Progress', '2026-02-24', 'person2@somecompany.com', 'Building demo lakehouse environment'), (9, 3, 'Not Started', '2026-02-20', 'person1@somecompany.com', 'Call for speakers submission pending review'), (10, 4, 'Not Started', '2026-01-10', 'person2@somecompany.com', 'Initial brainstorming session with PM team'), (11, 4, 'In Progress', '2026-01-20', 'person2@somecompany.com', 'Content outline approved by leadership'), (12, 4, 'In Progress', '2026-02-05', 'person2@somecompany.com', 'Sample semantic models being developed'), (13, 5, 'Not Started', '2025-12-01', 'person1@somecompany.com', 'Lab environment requirements documented'), (14, 5, 'In Progress', '2025-12-15', 'person1@somecompany.com', 'SDK samples being prepared'), (15, 5, 'On Hold', '2026-01-10', 'person1@somecompany.com', 'Paused - waiting on SDK v5 release for new features'), (16, 6, 'Not Started', '2025-11-15', 'person2@somecompany.com', 'Session planning initiated'), (17, 6, 'In Progress', '2025-12-01', 'person2@somecompany.com', 'GitHub Actions workflow samples created'), (18, 6, 'In Progress', '2026-01-15', 'person2@somecompany.com', 'Dry run completed with internal team'), (19, 6, 'Completed', '2026-02-15', 'person2@somecompany.com', 'Session delivered at internal summit, ready for Build'), (20, 7, 'Not Started', '2026-02-10', 'person1@somecompany.com', 'Topic approved for Ignite breakout session'), (21, 7, 'In Progress', '2026-02-18', 'person1@somecompany.com', 'Eventstream demo scenarios identified'), (22, 7, 'In Progress', '2026-02-26', 'person1@somecompany.com', 'Direct Lake performance benchmarks in progress'), (23, 8, 'Not Started', '2026-02-25', 'person2@somecompany.com', 'Workshop format and duration confirmed');
Ρύθμιση βιβλιοθήκης μεταβλητών
Μια βιβλιοθήκη μεταβλητών αποθηκεύει τις τιμές διαμόρφωσης ξεχωριστά από τον κώδικα της συνάρτησής σας. Αυτός ο διαχωρισμός παρέχει ένα βασικό πλεονέκτημα: μπορείτε να ενημερώσετε τιμές όπως διευθύνσεις URL webhook ή συνδέσμους αναφορών χωρίς να επεξεργαστείτε ή να αναδημοσιεύσετε τις λειτουργίες δεδομένων χρήστη.
Για παράδειγμα, εάν αλλάξει το κανάλι σας στο Teams ή πρέπει να τοποθετήσετε το δείκτη του ποντικιού σε διαφορετική αναφορά, ενημερώστε την τιμή της βιβλιοθήκης μεταβλητών και η αλλαγή τίθεται σε ισχύ αμέσως—δεν απαιτούνται αλλαγές κώδικα.
Στον χώρο εργασίας Fabric, επιλέξτε + Νέο στοιχείο.
Κάντε κύλιση προς τα κάτω στην ενότητα Ανάπτυξη δεδομένων και επιλέξτε Βιβλιοθήκη μεταβλητών.
Ονομάστε τη βιβλιοθήκη
ProjectVariablesμεταβλητών και επιλέξτε Δημιουργία.Επιλέξτε + Νέα μεταβλητή και προσθέστε τις ακόλουθες μεταβλητές:
Όνομα μεταβλητής Τύπος Περιγραφή TEAMS_WEBHOOK_URLΣυμβλοσειρά Η εισερχόμενη διεύθυνση URL webhook του Teams POWERBI_REPORT_URLΣυμβλοσειρά Διεύθυνση URL για την αναφορά σας Power BI (προστέθηκε μετά τη δημοσίευση) Επιλέξτε Αποθήκευση μετά την προσθήκη κάθε μεταβλητής.
Λάβετε μια διεύθυνση URL webhook του Teams
Ακολουθήστε τα βήματα στην ενότητα Δημιουργία εισερχόμενου Webhook για να δημιουργήσετε ένα webhook για το κανάλι σας στο Teams. Αφού δημιουργήσετε το webhook, αντιγράψτε τη διεύθυνση URL και προσθέστε τη στη βιβλιοθήκη μεταβλητών σας ως TEAMS_WEBHOOK_URL.
Σημαντικό
Οποιοσδήποτε έχει αυτήν τη διεύθυνση URL μπορεί να δημοσιεύσει μηνύματα στο κανάλι σας στο Teams.
Δημιουργία των συναρτήσεων δεδομένων χρήστη
Δημιουργήστε ένα στοιχείο συναρτήσεων δεδομένων χρήστη που χειρίζεται ενημερώσεις κατάστασης και ειδοποιήσεις ομάδων.
Στον χώρο εργασίας Fabric, επιλέξτε + Νέο στοιχείο>Συναρτήσεις δεδομένων χρήστη.
Αντικαταστήστε τον προεπιλεγμένο κώδικα με τον ακόλουθο κώδικα Python:
import fabric.functions as fn import logging from datetime import datetime udf = fn.UserDataFunctions() @udf.connection(argName="sqlDb", alias="ProjectTrackingDb") @udf.connection(argName="varLib", alias="ProjectVariables") @udf.function() def update_project_status( sqlDb: fn.FabricSqlConnection, varLib: fn.FabricVariablesClient, projectId: int, newStatus: str, updatedBy: str, notes: str, updatedDate: str ) -> str: """ Updates the status of a project by inserting a new record into the Status updates table and sends a Teams notification. """ logging.info(f"Updating status for Project ID: {projectId}") # Parse and validate the date try: parsed_date = datetime.fromisoformat(updatedDate) except ValueError: raise fn.UserThrownError( f"Invalid date format. Use ISO format: '2026-02-27T14:30:00'", {"providedDate": updatedDate} ) # Validate status value valid_statuses = ['Not Started', 'In Progress', 'On Hold', 'Completed', 'Cancelled'] if newStatus not in valid_statuses: raise fn.UserThrownError( f"Invalid status. Must be one of: {', '.join(valid_statuses)}", {"providedStatus": newStatus} ) connection = sqlDb.connect() cursor = connection.cursor() try: # Get the previous status cursor.execute(""" SELECT TOP 1 [Status] FROM [Status updates] WHERE [Project id] = ? ORDER BY [Update id] DESC """, (projectId,)) prev_row = cursor.fetchone() previous_status = prev_row[0] if prev_row else "Not Started" # Get the next Update ID cursor.execute("SELECT ISNULL(MAX([Update id]), 0) + 1 FROM [Status updates]") next_update_id = cursor.fetchone()[0] # Verify the project exists cursor.execute("SELECT [Project name] FROM [Project] WHERE [Project id] = ?", (projectId,)) project_row = cursor.fetchone() if not project_row: raise fn.UserThrownError(f"Project with ID {projectId} not found.") project_name = project_row[0] # Insert the new status update cursor.execute(""" INSERT INTO [Status updates] ([Update id], [Project id], [Status], [Updated date], [Updated by], [Notes]) VALUES (?, ?, ?, ?, ?, ?) """, (next_update_id, projectId, newStatus, parsed_date, updatedBy, notes)) connection.commit() # Send Teams notification _send_teams_update(varLib, project_name, previous_status, newStatus, updatedBy, notes) return f"Status updated for '{project_name}': {previous_status} → {newStatus}" except Exception as e: connection.rollback() raise finally: cursor.close() connection.close() def _send_teams_update(varLib, project_name, previous_status, new_status, updated_by, notes): """Helper function to send Teams notification.""" import requests import json variables = varLib.getVariables() webhook_url = variables.get("TEAMS_WEBHOOK_URL") report_url = variables.get("POWERBI_REPORT_URL") if not webhook_url: return adaptive_card = { "type": "message", "attachments": [{ "contentType": "application/vnd.microsoft.card.adaptive", "content": { "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "type": "AdaptiveCard", "version": "1.4", "body": [ { "type": "TextBlock", "size": "Large", "weight": "Bolder", "text": "📋 Project Status Update" }, { "type": "FactSet", "facts": [ {"title": "Project:", "value": project_name}, {"title": "Status:", "value": f"{previous_status} → {new_status}"}, {"title": "Updated By:", "value": updated_by} ] }, { "type": "TextBlock", "text": f"**Notes:** {notes}" if notes else "", "wrap": True } ], "actions": [ {"type": "Action.OpenUrl", "title": "View Project", "url": report_url} ] if report_url else [] } }] } requests.post(webhook_url, headers={"Content-Type": "application/json"}, data=json.dumps(adaptive_card), timeout=30) @udf.connection(argName="sqlDb", alias="ProjectTrackingDb") @udf.connection(argName="varLib", alias="ProjectVariables") @udf.function() def request_status_update( sqlDb: fn.FabricSqlConnection, varLib: fn.FabricVariablesClient, projectId: int, requestedBy: str, message: str ) -> str: """ Sends a Teams notification requesting a status update for a project. """ logging.info(f"Requesting status update for Project ID: {projectId}") connection = sqlDb.connect() cursor = connection.cursor() try: # Get project details cursor.execute(""" SELECT [Project name], [Project manager] FROM [Project] WHERE [Project id] = ? """, (projectId,)) project_row = cursor.fetchone() if not project_row: raise fn.UserThrownError(f"Project with ID {projectId} not found.") project_name = project_row[0] project_manager = project_row[1] # Get current status cursor.execute(""" SELECT TOP 1 [Status], [Updated date] FROM [Status updates] WHERE [Project id] = ? ORDER BY [Update id] DESC """, (projectId,)) status_row = cursor.fetchone() current_status = status_row[0] if status_row else "Not Started" last_updated = status_row[1].strftime("%Y-%m-%d") if status_row else "Never" # Send Teams notification _send_status_request(varLib, project_name, project_manager, current_status, last_updated, requestedBy, message) return f"Status update requested for '{project_name}' from {project_manager}" finally: cursor.close() connection.close() def _send_status_request(varLib, project_name, project_manager, current_status, last_updated, requested_by, message): """Helper function to send status update request via Teams.""" import requests import json variables = varLib.getVariables() webhook_url = variables.get("TEAMS_WEBHOOK_URL") report_url = variables.get("POWERBI_REPORT_URL") if not webhook_url: return adaptive_card = { "type": "message", "attachments": [{ "contentType": "application/vnd.microsoft.card.adaptive", "content": { "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "type": "AdaptiveCard", "version": "1.4", "body": [ { "type": "TextBlock", "size": "Large", "weight": "Bolder", "text": "📢 Status Update Requested" }, { "type": "FactSet", "facts": [ {"title": "Project:", "value": project_name}, {"title": "Owner:", "value": project_manager}, {"title": "Current Status:", "value": current_status}, {"title": "Last Updated:", "value": last_updated}, {"title": "Requested By:", "value": requested_by} ] }, { "type": "TextBlock", "text": f"**Message:** {message}" if message else "", "wrap": True } ], "actions": [ {"type": "Action.OpenUrl", "title": "Update Status", "url": report_url} ] if report_url else [] } }] } requests.post(webhook_url, headers={"Content-Type": "application/json"}, data=json.dumps(adaptive_card), timeout=30)Διαμορφώστε τις συνδέσεις:
- Επιλέξτε Ρυθμίσεις ή τον πίνακα συνδέσεων.
- Προσθέστε σύνδεση
ProjectTrackingDbπου δείχνει στη βάση δεδομένων Fabric SQL. - Προσθέστε σύνδεση
ProjectVariablesπου δείχνει στη Βιβλιοθήκη μεταβλητών σας.
Επιλέξτε Δημοσίευση για να αναπτύξετε τη λειτουργία.
Σημείωμα
Οι συναρτήσεις που χρησιμοποιούνται με τα κουμπιά συναρτήσεων δεδομένων Power BI πρέπει να επιστρέφουν μια συμβολοσειρά (-> str). Το Power BI εμφανίζει αυτήν την τιμή επιστροφής στον χρήστη μετά την εκτέλεση της συνάρτησης, παρέχοντας σχόλια σχετικά με το αποτέλεσμα της ενέργειας.
Κατανοήστε τη λειτουργία update_project_status
Η update_project_status συνάρτηση γράφει μια νέα εγγραφή κατάστασης στη βάση δεδομένων SQL και στέλνει μια ειδοποίηση Teams. Όταν ένας χρήστης επιλέγει το κουμπί ενημέρωσης στην αναφορά, πραγματοποιείται η ακόλουθη ροή:
Το Power BI καλεί τη συνάρτηση - Το κουμπί συνάρτησης δεδομένων μεταβιβάζει παραμέτρους (αναγνωριστικό έργου, νέα κατάσταση, σημειώσεις κ.λπ.) στη συνάρτηση δεδομένων χρήστη.
Επικύρωση εισόδων - Η συνάρτηση επικυρώνει τη μορφή ημερομηνίας και ελέγχει ότι η τιμή κατάστασης είναι μία από τις επιτρεπόμενες επιλογές.
Τρέχουσα κατάσταση ερωτήματος - Η συνάρτηση ανακτά την προηγούμενη κατάσταση και το όνομα του έργου από τη βάση δεδομένων.
Εισαγωγή νέας εγγραφής - Μια νέα σειρά εισάγεται στον
Status updatesπίνακα με τη νέα κατάσταση, τη χρονική σήμανση και τις σημειώσεις.Αποστολή ειδοποίησης Teams - Η βοηθητική λειτουργία
_send_teams_updateδημοσιεύει μια προσαρμόσιμη κάρτα στο κανάλι σας στο Teams που εμφανίζει την αλλαγή κατάστασης.Return result - Η συνάρτηση επιστρέφει ένα μήνυμα επιτυχίας που εμφανίζει το Power BI στον χρήστη.
Κατανοήστε τη λειτουργία request_status_update
Η request_status_update συνάρτηση στέλνει μια ειδοποίηση Teams ζητώντας από έναν κάτοχο έργου να παράσχει μια ενημέρωση κατάστασης. Αυτή η συνάρτηση δεν εγγράφει στη βάση δεδομένων - στέλνει μόνο ένα μήνυμα.
Το Power BI καλεί τη συνάρτηση - Το κουμπί συνάρτησης δεδομένων μεταβιβάζει το αναγνωριστικό έργου, το όνομα του αιτούντος και το μήνυμα στη συνάρτηση.
Ερώτημα λεπτομερειών έργου - Η συνάρτηση ανακτά το όνομα έργου, τον διαχειριστή έργου και την τρέχουσα κατάσταση από τη βάση δεδομένων.
Αποστολή ειδοποίησης Teams - Η βοηθητική λειτουργία
_send_status_requestδημοσιεύει μια προσαρμόσιμη κάρτα στο κανάλι σας στο Teams με τις λεπτομέρειες του αιτήματος και ένα κουμπί Ενημέρωση κατάστασης έργου που συνδέεται με την αναφορά.Επιστροφή αποτελέσματος - Η συνάρτηση επιστρέφει ένα μήνυμα επιβεβαίωσης που εμφανίζει το Power BI στον χρήστη.
(Προαιρετικός) Ρύθμιση συντομεύσεων Lakehouse για προβολές Direct Lake
Η βάση δεδομένων SQL Fabric αποθηκεύει όλα τα δεδομένα ως πίνακες Delta στο OneLake, ώστε να μπορείτε να δημιουργήσετε ένα σημασιολογικό μοντέλο Direct Lake απευθείας στους πίνακες βάσης δεδομένων SQL. Ωστόσο, το Direct Lake δεν μπορεί να διαβάσει προβολές από μια βάση δεδομένων SQL—μόνο πίνακες. Για να χρησιμοποιήσετε μια προβολή με το Direct Lake, δημιουργήστε συντομεύσεις για τους πίνακες βάσης δεδομένων SQL σε ένα Lakehouse και, στη συνέχεια, ορίστε την προβολή εκεί.
Δημιουργία συντομεύσεων για τους πίνακες βάσης δεδομένων SQL
Στον χώρο εργασίας σας Fabric, δημιουργήστε ένα νέο Lakehouse και ενεργοποιήστε σχήματα.
Στην Εξερεύνηση Lakehouse, κάντε δεξί κλικ σε οποιοδήποτε σχήμα (όπως dbo) και επιλέξτε Νέα συντόμευση πίνακα.
Στον Κατάλογο OneLake, μεταβείτε στη βάση δεδομένων SQL και επιλέξτε τον
Projectπίνακα.Επαναλάβετε για να δημιουργήσετε μια συντόμευση για τον
Status updatesπίνακα.
Οι συντομεύσεις παρέχουν πρόσβαση ανάγνωσης στους υποκείμενους πίνακες Delta χωρίς διπλότυπα δεδομένα.
Δημιουργήστε μια υλοποιημένη θέα στη λίμνη
Δημιουργήστε μια υλοποιημένη προβολή λίμνης στο Lakehouse που υπολογίζει την πιο πρόσφατη κατάσταση για κάθε έργο:
Στο Lakehouse, επιλέξτε Διαχείριση υλοποιημένων προβολών λίμνης (έκδοση προεπισκόπησης).
Ανοίξτε ένα νέο σημειωματάριο με το Spark SQL.
Εκτελέστε το ακόλουθο ερώτημα:
CREATE MATERIALIZED LAKE VIEW IF NOT EXISTS dbo.project_status AS SELECT p.`Project id` AS ProjectId, p.`Project name` AS ProjectName, COALESCE(ls.LatestStatus, 'Not Started') AS LatestStatus, ls.LatestNotes FROM dbo.Project p LEFT JOIN ( SELECT `Project id` AS ProjectId, `Status` AS LatestStatus, `Notes` AS LatestNotes, ROW_NUMBER() OVER (PARTITION BY `Project id` ORDER BY `Update id` DESC) AS RowNum FROM dbo.`Status updates` ) ls ON p.`Project id` = ls.ProjectId AND ls.RowNum = 1;Προγραμματίστε την ανανέωση της προβολής επιλέγοντας Χρονοδιαγράμματα>Ενεργοποιημένα και ορίζοντας τη συχνότητα.
Σημείωμα
Η βάση δεδομένων SQL παραμένει ο στόχος εγγραφής για τις συναρτήσεις δεδομένων χρήστη. Οι συντομεύσεις Lakehouse παρέχουν πρόσβαση μόνο για ανάγνωση για αναλυτικά στοιχεία μέσω της υλοποιημένης προβολής λίμνης.
Δημιουργία της αναφοράς Power BI
Μπορείτε να συνδεθείτε στα δεδομένα σας χρησιμοποιώντας είτε το DirectQuery είτε το Direct Lake:
- DirectQuery σε βάση δεδομένων SQL: Τα δεδομένα σε πραγματικό χρόνο υποστηρίζουν την επανεγγραφή μέσω συναρτήσεων δεδομένων χρήστη.
- Πίνακες βάσης δεδομένων Direct Lake σε SQL: Η βάση δεδομένων SQL Fabric αποθηκεύει δεδομένα ως πίνακες Delta στο OneLake, ώστε το Direct Lake να μπορεί να διαβάζει απευθείας πίνακες.
- Direct Lake μέσω Lakehouse (για προβολές): Το Direct Lake δεν μπορεί να διαβάσει προβολές από τη βάση δεδομένων SQL. Για να χρησιμοποιήσετε προβολές με το Direct Lake, δημιουργήστε συντομεύσεις για τους πίνακες βάσης δεδομένων SQL σε ένα Lakehouse και, στη συνέχεια, ορίστε υλοποιημένες προβολές λίμνης εκεί.
Συμβουλή
Μπορεί επίσης να χρησιμοποιηθεί η λειτουργία εισαγωγής—δεν υπάρχει περιορισμός στη λειτουργία αποθήκευσης. Με την Εισαγωγή, το μοντέλο σημασιολογίας πρέπει να ανανεωθεί πριν εμφανιστούν ενημερωμένες τιμές στην αναφορά.
Επιλογή Α: Σύνδεση μέσω DirectQuery
Ανοίξτε το Power BI Desktop.
Επιλέξτε Κατάλογος OneLake.
Βρείτε τη βάση δεδομένων Fabric SQL.
Επιλέξτε Σύνδεση σε τελικό σημείο ανάλυσης SQL.
Επιλέξτε ,
ProjectStatus updatesκαιProject statusπίνακες/προβολή.Όταν σας ζητηθεί η λειτουργία αποθήκευσης, επιλέξτε DirectQuery.
Επιλογή Β: Σύνδεση μέσω Direct Lake (για απόδοση αναλυτικών στοιχείων)
Στην υπηρεσία Power BI, επιλέξτε Δημιουργία>καταλόγου OneLake.
Βρείτε το Lakehouse σας.
Επιλέξτε τους πίνακες συντομεύσεων (
Project,Status updates) και την υλοποιημένη προβολή λίμνης (project_status).Επεξεργαστείτε το μοντέλο σημασιολογίας στην εμπειρία μοντελοποίησης web για να προσθέσετε μετρήσεις και σχέσεις.
Σημείωμα
Με το Direct Lake, τα ονόματα στηλών από την υλοποιημένη προβολή λίμνης δεν έχουν κενά διαστήματα (για παράδειγμα, ProjectId αντί για Project id). Μετονομάστε τις στήλες στο μοντέλο σημασιολογίας ώστε να ταιριάζουν με τις μετρήσεις σας.
Δημιουργία του πίνακα υπολογισμού "Επιλογές κατάστασης"
Δημιουργήστε έναν υπολογιζόμενο πίνακα που παρέχει τις τιμές κατάστασης για τον αναλυτή κουμπιών. Εκτελέστε αυτήν τη δέσμη ενεργειών TMDL στο Power BI Desktop:
createOrReplace
table 'Status Options'
column Status
summarizeBy: none
isNameInferred
sourceColumn: [Status]
sortByColumn: 'Sort Order'
column Description
summarizeBy: none
isNameInferred
sourceColumn: [Description]
column 'Sort Order'
isHidden
formatString: 0
summarizeBy: sum
isNameInferred
sourceColumn: [Sort Order]
column 'Status Color'
summarizeBy: none
isNameInferred
sourceColumn: [Status Color]
partition 'Status Options' = calculated
mode: import
source =
DATATABLE(
"Status", STRING,
"Description", STRING,
"Sort Order", INTEGER,
"Status Color", STRING,
{
{ "Not Started", "Project has been created but work has not begun", 1, "#808080" },
{ "In Progress", "Active work is being performed on the project", 2, "#0078D4" },
{ "On Hold", "Project is paused pending resources, decisions, or dependencies", 3, "#FFB900" },
{ "Completed", "All project deliverables have been finished", 4, "#107C10" },
{ "Cancelled", "Project has been terminated and will not be completed", 5, "#D13438" }
}
)
Δημιουργία υποστηρικτικών μέτρων
Δημιουργήστε έναν υπολογιζόμενο πίνακα για να κρατήσετε τις μετρήσεις που υποστηρίζουν τα κουμπιά συνάρτησης δεδομένων. Εκτελέστε αυτήν τη δέσμη ενεργειών TMDL στο Power BI Desktop:
createOrReplace
table 'Translytical task flow'
/// Generates a preview of the Teams notification that will be sent when the user updates the status. Shows a warning if required selections are missing.
measure 'Preview of status update' = ```
VAR _ProjectId = SELECTEDVALUE(Project[Project id], 0)
VAR _ProjectName = SELECTEDVALUE(Project[Project name], "")
VAR _PreviousStatus = [Latest Status]
VAR _NewStatus = SELECTEDVALUE('Status Options'[Status], "N/A")
VAR _UpdatedBy = [Updated by]
VAR _UpdatedDate = FORMAT(NOW(), "YYYY-MM-DD HH:mm")
VAR _NL = UNICHAR(10)
RETURN
IF(_ProjectId = 0 || _NewStatus = "N/A",
"⚠️ Select a project and new status to preview",
"📋 Teams Notification Preview" & _NL &
"━━━━━━━━━━━━━━━━━━━━" & _NL &
"Project: " & _ProjectName & _NL &
"Status: " & _PreviousStatus & " → " & _NewStatus & _NL &
"Updated By: " & _UpdatedBy & _NL &
"Date: " & _UpdatedDate & _NL &
"Notes: See above" & _NL &
"━━━━━━━━━━━━━━━━━━━━" & _NL &
"📨 This will be sent to Teams"
)
```
/// Returns the email address of the current user. Used to track who made each status update.
measure 'Updated by' = USERPRINCIPALNAME()
/// Returns the most recent notes for the selected project. Only evaluates when a project is in scope.
measure 'Latest notes' =
IF(ISINSCOPE(Project[Project name]),
LASTNONBLANKVALUE('Status updates'[Update id], MAX('Status updates'[Notes])),
BLANK())
/// Returns the most recent status for the selected project by finding the last non-blank status value.
measure 'Latest status' =
IF(HASONEVALUE(Project[Project id]),
LASTNONBLANKVALUE('Status updates'[Update id], MAX('Status updates'[Status])),
BLANK())
/// Returns the Project ID when a single project is selected. Used as a parameter for the update_project_status and request_status_update functions.
measure 'Selected project id' = SELECTEDVALUE(Project[Project id])
formatString: 0
/// Returns today's date in ISO format. Used as the timestamp for status updates.
measure 'Updated date' = FORMAT(TODAY(), "yyyy-mm-dd")
/// Provides dynamic text for the update button showing the selected project and new status.
measure 'Update status button text' = "Update the status of " & SELECTEDVALUE(Project[Project name]) & " to " & SELECTEDVALUE('Status Options'[Status])
column Value
isHidden
formatString: 0
summarizeBy: sum
isNameInferred
sourceColumn: [Value]
partition 'Translytical task flow' = calculated
mode: import
source = {1}
Σημείωμα
Αυτό το σενάριο δημιουργεί τον Translytical task flow πίνακα με μια κρυφή στήλη. Η απόκρυψη όλων των στηλών το μετατρέπει σε πίνακα μέτρησης, ο οποίος εμφανίζει ένα ειδικό εικονίδιο και εμφανίζεται πάντα στο επάνω μέρος του τμήματος παραθύρου Δεδομένα για εύκολη πρόσβαση.
Αυτά τα μέτρα εξυπηρετούν πολλαπλούς σκοπούς:
| Measure | Σκοπός |
|---|---|
Selected project id |
Καταγράφει το αναγνωριστικό έργου όταν επιλέγεται μία γραμμή έργου. Μεταβιβάζεται ως παράμετρος στις συναρτήσεις δεδομένων χρήστη. |
Updated by |
Επιστρέφει το email του τρέχοντος χρήστη μέσω USERPRINCIPALNAME(). Παρακολουθεί ποιος έκανε κάθε ενημέρωση κατάστασης. |
Updated date |
Επιστρέφει τη σημερινή ημερομηνία σε μορφή ISO (yyyy-mm-dd) για την παράμετρο χρονικής σήμανσης συνάρτησης. |
Update status button text |
Παρέχει δυναμική επισήμανση κουμπιών που δείχνει το επιλεγμένο έργο και τη νέα κατάσταση (για παράδειγμα, "Ενημέρωση της κατάστασης της περιόδου λειτουργίας ABC σε Σε εξέλιξη"). |
Latest status |
Εμφανίζει την πιο πρόσφατη κατάσταση για ένα έργο που χρησιμοποιείται LASTNONBLANKVALUE για την εύρεση της τελευταίας καταχώρησης στον πίνακα Ενημερώσεις κατάστασης. |
Latest notes |
Εμφανίζει τις πιο πρόσφατες σημειώσεις για ένα έργο. Αξιολογεί μόνο όταν ένα συγκεκριμένο έργο εμπίπτει στο πεδίο εφαρμογής. |
Preview of status update |
Δημιουργεί μια προεπισκόπηση της ειδοποίησης του Teams πριν από την αποστολή, βοηθώντας τους χρήστες να επιβεβαιώσουν τις αλλαγές τους. Εμφανίζει μια προειδοποίηση εάν λείπουν επιλογές. |
Σχεδίαση της αναφοράς
Η διάταξη αναφοράς καθοδηγεί τους χρήστες σε μια σαφή ροή εργασίας: επιλέξτε ένα έργο, επιλέξτε μια νέα κατάσταση, προσθέστε σημειώσεις και, στη συνέχεια, εκτελέστε την ενημέρωση.
Δημιουργία του πίνακα έργου
Προσθέστε μια απεικόνιση πίνακα για να εμφανίσετε πληροφορίες έργου.
Προσθέστε αυτές τις στήλες από τα δεδομένα σας:
Product nameProject nameTarget end dateDescription-
Latest status(από τον πίνακα/άποψη Κατάσταση ή Κατάσταση Έργου) Latest notes
Ορίστε τον τίτλο σε 1) Επιλέξτε ένα έργο για ενημέρωση.
Ταξινόμηση κατά Ημερομηνία λήξης στόχου αύξουσα για να εμφανιστούν πρώτα οι επερχόμενες προθεσμίες.
Δημιουργία του αναλυτή κουμπιών για επιλογή κατάστασης
Προσθέστε μια απεικόνιση αναλυτή κουμπιού .
Στο πεδίο Τιμές , προσθέστε
Status Options[Status].Στο πεδίο Ετικέτα , προσθέστε
FIRST(Status Options[Description])για να εμφανίσετε την περιγραφή κάτω από κάθε κατάσταση.Στο τμήμα παραθύρου Μορφοποίηση :
- Ορίστε στυλ σε κάρτες.
- Ορίστε τον Προσανατολισμό σε Οριζόντιο.
- Ορίστε το Max tiles σε 5 (ένα για κάθε κατάσταση).
Διαμορφώστε τη μορφοποίηση υπό όρους για να χρωματίσετε κάθε κάρτα με βάση το
Status Colorπεδίο.Ορίστε τον τίτλο σε 2) Επιλέξτε μια νέα κατάσταση.
Προσθήκη αναλυτών εισόδου για σημειώσεις
Προσθέστε έναν αναλυτή εισόδου για να εισάγουν οι χρήστες σημειώσεις σχετικά με την ενημέρωση κατάστασης.
Ορίστε τον τίτλο σε 3) Προσθήκη σημειώσεων για αυτήν την ενημέρωση κατάστασης.
Προσθέστε έναν άλλο αναλυτή εισόδου για το πεδίο μηνύματος που χρησιμοποιείται από το κουμπί ενημέρωσης κατάστασης αίτησης.
Ορίστε τον τίτλο σε Ή στείλτε ένα μήνυμα στο κανάλι ομάδων.
Συμβουλή
Δώστε σε κάθε αναλυτή εισόδου έναν περιγραφικό τίτλο. Όταν ρυθμίζετε τις παραμέτρους ενός κουμπιού συνάρτησης δεδομένων, οι αναλυτές εμφανίζονται στην αναπτυσσόμενη λίστα παραμέτρων με βάση τον τίτλο τους, διευκολύνοντας τον εντοπισμό του σωστού. Μετά τη ρύθμιση παραμέτρων, μπορείτε να αποκρύψετε τον τίτλο στον καμβά αναφορών, εάν χρειάζεται.
Προσθήκη του πίνακα προεπισκόπησης
Προσθέστε μια απεικόνιση πίνακα με μία μόνο στήλη: τη
[Preview of status update]μέτρηση.Ορίστε τον τίτλο σε Ενημέρωση προεπισκόπησης.
Αυτό δείχνει στους χρήστες πώς θα είναι η ειδοποίησή τους στο Teams πριν τη στείλουν.
Προσθήκη των κουμπιών λειτουργίας δεδομένων
Προσθέστε δύο κουμπιά: ένα για την ενημέρωση της κατάστασης και ένα για την αίτηση ενημέρωσης κατάστασης.
Κουμπί ενημέρωσης κατάστασης
Στην καρτέλα Εισαγωγή, επιλέξτε Συνάρτησηδεδομένων>.
Στο τμήμα παραθύρου Μορφοποίηση , ρυθμίστε τις παραμέτρους του κειμένου του κουμπιού:
- Ορίστε το Προεπιλεγμένο κείμενο στη μέτρησή σας
[Update status button text]για δυναμική προσθήκη ετικετών. - Ορίστε το απενεργοποιημένο κείμενο σε στατικό κείμενο όπως "Επιλέξτε ένα έργο, νέα κατάσταση και προσθέστε πρώτα σημειώσεις".
- Ορίστε το Προεπιλεγμένο κείμενο στη μέτρησή σας
Επιλέξτε τη δημοσιευμένη
update_project_statusλειτουργία σας.Αντιστοιχίστε τις παραμέτρους της συνάρτησης:
Παράμετρος Τύπος βιβλιοδεσίας Δεσμευμένο σε projectIdMeasure [Selected project id]ΜέτροnewStatusΑναλυτή Απεικόνιση αναλυτή κουμπιού (ενεργοποιημένη αυτόματη διαγραφή) updatedByMeasure [Updated by]ΜέτροnotesΑναλυτή Απεικόνιση αναλυτή εισόδου (ενεργοποιημένη η αυτόματη διαγραφή) updatedDateMeasure [Updated date]ΜέτροΣτο τμήμα παραθύρου Μορφοποίηση στην περιοχή Ενέργεια, ενεργοποιήστε την επιλογή Ανανέωση της αναφοράς μετά την επιτυχή έκβαση. Αυτή η ρύθμιση ανανεώνει αυτόματα τη σελίδα αναφοράς μετά την επιτυχή εκτέλεση της συνάρτησης.
Συμβουλή
Ενεργοποιήστε την αυτόματη διαγραφή για τις παραμέτρους του αναλυτή, ώστε ο αναλυτής κουμπιών και το κείμενο των σημειώσεων να επαναφέρονται αφού ο χρήστης ενεργοποιήσει τη λειτουργία.
Σημείωμα
Η εναλλαγή Ανανέωση της αναφοράς μετά από επιτυχή έκβαση ανανεώνει τη σελίδα αναφοράς μόνο όταν η συνάρτηση εκτελείται με επιτυχία. Για τις λειτουργίες αποθήκευσης DirectQuery και Direct Lake, οι ανανεωμένες απεικονίσεις στέλνουν ερωτήματα στην προέλευση μέσω του μοντέλου σημασιολογίας και επιστρέφουν τα πιο πρόσφατα δεδομένα, συνήθως μέσα σε λίγα δευτερόλεπτα, αλλά ο ακριβής χρονισμός εξαρτάται από παράγοντες όπως ο χρόνος εκτέλεσης της συνάρτησης δεδομένων, ο χρόνος απόκρισης ερωτήματος και οι συνθήκες δικτύου. Για τη λειτουργία εισαγωγής, το μοντέλο σημασιολογίας πρέπει να ανανεωθεί ξεχωριστά πριν εμφανιστούν οι ενημερωμένες τιμές στην αναφορά.
Κουμπί "Αίτημα ενημέρωσης κατάστασης"
Προσθέστεμια άλλη> Data.
Στο τμήμα παραθύρου Μορφοποίηση , ρυθμίστε τις παραμέτρους του κειμένου του κουμπιού:
- Ορίστε το προεπιλεγμένο κείμενο σε στατικό κείμενο όπως "Αποστολή μηνύματος ομάδων στο κανάλι".
- Ορίστε το απενεργοποιημένο κείμενο σε "Επιλέξτε ένα έργο και πληκτρολογήστε πρώτα ένα μήνυμα".
Επιλέξτε τη δημοσιευμένη
request_status_updateλειτουργία σας.Αντιστοιχίστε τις παραμέτρους της συνάρτησης:
Παράμετρος Τύπος βιβλιοδεσίας Δεσμευμένο σε projectIdMeasure [Selected project id]ΜέτροrequestedByMeasure [Updated by]ΜέτροmessageΑναλυτή Απεικόνιση αναλυτή εισόδου (ενεργοποιημένη η αυτόματη διαγραφή) Προαιρετικά, ενεργοποιήστε την επιλογή Ανανέωση της αναφοράς μετά από επιτυχή έκβαση στο τμήμα παραθύρου Μορφοποίηση στην περιοχή Ενέργεια.
Ρύθμιση παραμέτρων δυναμικού κειμένου κουμπιού
Χρησιμοποιήστε δυναμικό κείμενο στα κουμπιά της συνάρτησης δεδομένων για να δείξετε στους χρήστες ποια ακριβώς ενέργεια θα πραγματοποιηθεί όταν επιλέξουν το κουμπί. Αντί για μια γενική ετικέτα όπως "Ενημέρωση", το κουμπί μπορεί να εμφανίζει κείμενο για συγκεκριμένο περιβάλλον, όπως "Ενημέρωση της κατάστασης της περιόδου λειτουργίας ABC σε Σε εξέλιξη".
Για να διαμορφώσετε το δυναμικό κείμενο του κουμπιού:
Δημιουργήστε μια μέτρηση που δημιουργεί την ετικέτα κουμπιού. Για παράδειγμα, αυτή η μέτρηση συνδυάζει το επιλεγμένο όνομα έργου και τη νέα κατάσταση:
Update status button text = "Update the status of " & SELECTEDVALUE(Project[Project name]) & " to " & SELECTEDVALUE('Status Options'[Status])Στο τμήμα παραθύρου Μορφοποίηση για το κουμπί συνάρτησης δεδομένων, αναπτύξτε το στοιχείο Κείμενο κουμπιού>.
Ορίστε το Προεπιλεγμένο κείμενο στη δυναμική μέτρησή σας (
[Update status button text]).Ορίστε το Απενεργοποιημένο κείμενο σε στατικό κείμενο που ενημερώνει τους χρήστες για τις επιλογές που απαιτούνται (για παράδειγμα, "Επιλογή έργου, νέα κατάσταση και προσθήκη σημειώσεων πρώτα").
Το κουμπί εμφανίζει το απενεργοποιημένο κείμενο έως ότου όλες οι απαιτούμενες παράμετροι έχουν τιμές. Μόλις ο χρήστης κάνει τις επιλογές του, το κουμπί εμφανίζει το δυναμικό κείμενο που περιγράφει τη συγκεκριμένη ενέργεια.
(Προαιρετικός) Προσθήκη κουμπιού και σελίδας άντλησης
Μπορείτε να προσθέσετε μια σελίδα άντλησης για να εμφανίσετε το πλήρες ιστορικό των ενημερώσεων κατάστασης για ένα επιλεγμένο έργο.
Στην καρτέλα Εισαγωγή, επιλέξτε Κενό κουμπί>.
Στο τμήμα παραθύρου Μορφοποίηση στην περιοχή Κουμπί, ορίστε το κείμενο:
- Προεπιλεγμένο κείμενο: "Εμφάνιση όλων των ενημερώσεων κατάστασης"
- Απενεργοποιημένο κείμενο: "Επιλέξτε ένα έργο για να δείτε όλες τις ενημερώσεις κατάστασης"
Στην περιοχή Ενέργεια, ενεργοποιήστε την ενέργεια και ορίστε:
- Τύπος: Drillthrough
- Προορισμός: Επιλέξτε τη σελίδα ιστορικού κατάστασης (δημιουργήθηκε στα επόμενα βήματα)
Προσθέστε μια νέα σελίδα και ονομάστε την Ιστορικό ενημέρωσης κατάστασης.
Στο τμήμα παραθύρου Μορφοποίηση για τη σελίδα, αναπτύξτε τις Πληροφορίες σελίδας και ενεργοποιήστε τη Λειτουργία άντλησης. Προσθέστε
Project[Product name]ως πεδίο άντλησης.Προσθέστε απεικονίσεις για να εμφανίσετε το ιστορικό κατάστασης:
- Κάρτα: Συνολικός αριθμός ενημερώσεων κατάστασης
- Αναλυτής κουμπιών: Ανάλυση κατά κατάσταση
- Πίνακας: Όλες οι ενημερώσεις κατάστασης (Αναγνωριστικό ενημέρωσης, Ημερομηνία ενημέρωσης, Κατάσταση, Σημειώσεις, Ενημέρωση από)
- Γράφημα γραμμών: Ενημέρωση δραστηριότητας με την πάροδο του χρόνου
Προσθέστε ένα κουμπί Πίσω , ώστε οι χρήστες να μπορούν να επιστρέψουν στην κύρια σελίδα αναφοράς. Στην καρτέλα Εισαγωγή , επιλέξτε Κουμπί>πίσω.
Δημοσίευση της αναφοράς
Αποθηκεύστε την αναφορά σας και δημοσιεύστε την στην υπηρεσία Power BI.
Αντιγράψτε το URL της αναφοράς και προσθέστε το στη βιβλιοθήκη μεταβλητών σας ως
POWERBI_REPORT_URL.
Δοκιμή της ροής εργασίας
Δοκιμή της ροής ενημέρωσης κατάστασης αίτησης
Μετά τη δημοσίευση, μπορείτε να χρησιμοποιήσετε τη ροή διαλυτικής εργασίας για να ζητήσετε μια ενημέρωση κατάστασης:
Επιλέξτε ένα έργο για ενημέρωση - Επιλέξτε μια γραμμή έργου στον πίνακα για να ορίσετε το περιβάλλον φίλτρου.
Ή στείλτε ένα μήνυμα στο κανάλι ομάδων - Εισαγάγετε ένα μήνυμα στον αναλυτή εισόδου (για παράδειγμα, "Μπορούμε να λάβουμε μια ενημέρωση σχετικά με αυτό;").
Επιλέξτε το κουμπί Αποστολή μηνύματος ομάδων στο κανάλι .
Όταν η ενέργεια ολοκληρωθεί με επιτυχία, εμφανίζεται μια επιβεβαίωση Η αίτηση υποβλήθηκε .
Ελέγξτε το κανάλι σας στο Teams για την προσαρμόσιμη κάρτα ενημέρωσης κατάστασης έργου με τις λεπτομέρειες του αιτήματος.
Ο κάτοχος του έργου μπορεί να επιλέξει Ενημέρωση κατάστασης έργου στην προσαρμόσιμη κάρτα για να ανοίξει την αναφορά και να ενημερώσει την κατάστασή του.
Δοκιμή της ροής κατάστασης ενημέρωσης
Μετά τη δημοσίευση, μπορείτε να χρησιμοποιήσετε τη διαλυτική ροή εργασιών για να ενημερώσετε την κατάσταση ενός έργου:
Επιλέξτε ένα έργο για ενημέρωση - Επιλέξτε μια γραμμή έργου στον πίνακα για να ορίσετε το περιβάλλον φίλτρου.
Ποια είναι η νέα κατάσταση; - Χρησιμοποιήστε τον αναλυτή κουμπιών για να επιλέξετε μια νέα κατάσταση (για παράδειγμα, Σε εξέλιξη).
Προσθήκη σημειώσεων για αυτήν την ενημέρωση κατάστασης - Εισαγάγετε σημειώσεις στον αναλυτή εισόδου (για παράδειγμα, "Ξεκίνησε η εγγραφή επίδειξης").
Επιλέξτε το κουμπί Ενημέρωση για να γράψετε την αλλαγή κατάστασης πίσω στο lakehouse και να στείλετε μια ειδοποίηση Teams.
Όταν η ενέργεια ολοκληρωθεί με επιτυχία, εμφανίζεται μια επιβεβαίωση Η αίτηση υποβλήθηκε .
Ελέγξτε το κανάλι σας στο Teams για την προσαρμόσιμη κάρτα ενημέρωσης κατάστασης έργου με τις λεπτομέρειες αλλαγής κατάστασης.
Σχετικό περιεχόμενο
Μεταλυτικές ροές εργασιών
- Κατανόηση των διαλυτικών ροών εργασιών
- Πρόγραμμα εκμάθησης: Δημιουργία διγλωσσικής ροής εργασιών
- Δημιουργία κουμπιού συνάρτησης δεδομένων στο Power BI
Απεικονίσεις αναφοράς
- Δημιουργία κουμπιών σε αναφορές Power BI
- Χρήση της απεικόνισης αναλυτή κουμπιών
- Χρήση της απεικόνισης αναλυτή εισόδου
Συναρτήσεις DAX
Δεδομένα Fabric
- Επισκόπηση λειτουργιών δεδομένων χρήστη
- δημιουργία συναρτήσεων δεδομένων χρήστη
- Σύνδεση συναρτήσεων δεδομένων χρήστη σε προελεύσεις δεδομένων
- Δημιουργία και διαχείριση βιβλιοθηκών μεταβλητών
- Επισκόπηση της βάσης δεδομένων SQL Fabric
- Lakehouse: Επισκόπηση
- Άμεση επισκόπηση λίμνης
- Επισκόπηση υλοποιημένων προβολών λίμνης
Ομάδες της Microsoft