Abilitare l'analisi della flotta in Azure Cosmos DB (anteprima)

Importante

Questa funzionalità è attualmente in anteprima e viene fornita senza un contratto di servizio. Al momento, le anteprime non sono consigliate per i carichi di lavoro di produzione. Alcune funzionalità di questa anteprima non sono supportate o potrebbero avere vincoli di funzionalità. Per altre informazioni, vedere Condizioni per l'utilizzo supplementari di anteprime di Microsoft Azure.

In questa guida si abilita l'analisi della flotta di Azure Cosmos DB per l'area di lavoro di Microsoft Fabric.

In questa guida si abilita l'analisi della flotta di Azure Cosmos DB per l'account Azure Data Lake Storage.

Prerequisiti

  • Una flotta di Azure Cosmos DB esistente

    • Se non si dispone di una flotta esistente, creare una nuova flotta.

    • L'analisi della flotta supporta solo gli account Azure Cosmos DB per NoSQL configurati con la flotta.

  • Un'area di lavoro di Microsoft Fabric esistente

    • L'area di lavoro deve usare OneLake come percorso di archiviazione predefinito.

    • L'area di lavoro deve essere supportata da una capacità Fabric dotata di licenza o di valutazione.

Annotazioni

È consigliabile creare un'area di lavoro dedicata a Fabric per Fleet Analytics perché il principale del servizio associato alla funzionalità richiede l'accesso come Collaboratore all'intera area di lavoro.

  • Un account di archiviazione di Azure esistente compatibile con Azure Data Lake Storage (Gen2)

    • La funzionalità dello spazio dei nomi gerarchico deve essere abilitata al momento della creazione dell'account.

Abilitare l'analisi della flotta

Prima di tutto, configurare le risorse necessarie per l'analisi della flotta.

  1. Accedere al portale di Azure (https://portal.azure.com).

  2. Passare alla flotta esistente di Azure Cosmos DB.

  3. Nella pagina per la flotta selezionare Analisi della flotta nella sezione Monitoraggio del menu delle risorse.

  4. Selezionare quindi Aggiungi destinazione.

  5. Nella finestra di dialogo Analisi flotta, selezionare Invia all'area di lavoro Fabric. Quindi, seleziona la tua area di lavoro Fabric esistente, seleziona un lakehouse OneLake già esistente e infine salva la destinazione.

    Screenshot della finestra di dialogo di analisi della flotta per un'area di lavoro Fabric nel portale di Azure.

  6. Passare al workspace di Fabric nel portale di Microsoft Fabric.

  7. Nella sezione Gestione dell'area di lavoro, aggiungere il principale del servizio per l'analisi della flotta come ruolo di Collaboratore cercando il principale di servizio condiviso Cosmos DB Fleet Analytics.

    Screenshot della configurazione del controllo degli accessi in base al ruolo dell'area di lavoro nel portale di Fabric.

    Importante

    Se non si completa questo passaggio, i dati non vengono scritti nell'area di lavoro Fabric di destinazione.

  8. Salvare le modifiche.

  1. Accedere al portale di Azure (https://portal.azure.com).

  2. Passare alla flotta esistente di Azure Cosmos DB.

  3. Nella pagina per la flotta selezionare Analisi della flotta nella sezione Monitoraggio del menu delle risorse.

  4. Selezionare quindi Aggiungi destinazione.

  5. Nella finestra di dialogo Analisi flotta selezionare Invia all'account di archiviazione. Selezionare quindi l'account di archiviazione di Azure esistente, selezionare un contenitore esistente e quindi salvare la destinazione.

    Screenshot della finestra di dialogo di analisi della flotta per un account di archiviazione di Azure nel portale di Azure.

  6. Navigare all'account di archiviazione di Azure. Passare quindi alla pagina Controllo di accesso (IAM).

  7. Selezionare l'opzione di menu Aggiungi assegnazione di ruolo .

  8. Nella pagina Aggiungi assegnazione di ruolo, selezionare il ruolo Collaboratore di Archiviazione Blob per concedere le autorizzazioni a contribuire dei BLOB all'account esistente.

  9. Usare ora l'opzione + Seleziona membri . Nella finestra di dialogo, cercare e selezionare il principale del servizio condiviso Cosmos DB Fleet Analytics.

    Screenshot della configurazione del controllo degli accessi in base al ruolo dell'account nel portale di Azure.

    Importante

    Se non si completa questo passaggio, i dati non vengono scritti nell'account di archiviazione di Azure di destinazione.

  10. Riesamina e assegna il tuo ruolo.

Interrogare e visualizzare i dati

In una progettazione dello schema star, il recupero di informazioni dettagliate richiede in genere l'unione di tabelle dei fatti con le relative tabelle delle dimensioni, seguendo le procedure consigliate standard. Questa sezione illustra i passaggi per eseguire query e visualizzare i dati usando Microsoft Fabric.

  1. Aprire l'area di lavoro di Fabric.

  2. Naviga verso la tua risorsa OneLake esistente.

    Screenshot di una risorsa OneLake esistente all'interno di un'area di lavoro di Microsoft Fabric.

  3. Nell'Esplora endpoint SQL, selezionare qualsiasi tabella ed eseguire una SELECT TOP 100 query per osservare rapidamente i dati. Questa query è disponibile nel menu contestuale.

    Screenshot del menu contestuale con l'opzione di query

    Suggerimento

    In alternativa, eseguire la query seguente per visualizzare i dettagli a livello di account:

    SELECT TOP (100) [Timestamp],
        [ResourceId],
        [FleetId],
        [DefaultConsistencyLevel],
        [IsSynapseLinkEnabled],
        [IsFreeTierEnabled],
        [IsBurstEnabled],
        [BackupMode],
        [BackupStrategy],
        [BackupRedundancy],
        [BackupIntervalInMinutes],
        [BackupRetentionIntervalInHours],
        [TotalRUPerSecLimit],
        [APISettings],
        [AccountKeySettings],
        [LastDateAnyAccountKeyRotated]
    FROM [FactAccountHourly]
    
  4. Osservare i risultati della query. Si noti che è presente solo un riferimento al ResourceId campo. Usando solo i risultati di questa query, non è possibile determinare il database o il contenitore esatto per singole righe.

  5. Esegui questa query di esempio unendo le tabelle DimResource e FactRequestHourly per trovare i tuoi 100 account più attivi per numero di transazioni.

    SELECT TOP 100
        DR.[SubscriptionId],
        DR.[AccountName],
        DR.[ResourceGroup],
        SUM(FRH.[TotalRequestCount]) AS sum_total_requests
    FROM 
        [FactRequestHourly] FRH
    JOIN 
        [DimResource] DR
        ON FRH.[ResourceId] = DR.[ResourceId]
    WHERE 
        FRH.[Timestamp] >= DATEADD(DAY, -7, GETDATE()) -- Filter for the last 7 days
        AND ResourceName IN ('Document', 'StoredProcedure') -- Filter for Dataplane Operations
    GROUP BY 
        DR.[AccountName],
        DR.[SubscriptionId],
        DR.[ResourceGroup]
    ORDER BY
    sum_total_requests DESC; -- Order by total requests in descending order
    
  6. Eseguire questa query per trovare i primi 100 account più grandi per risorsa di archiviazione.

    SELECT TOP 100
        DR.[SubscriptionId],
        DR.[AccountName],
        MAX(FRH.[MaxDataStorageInKB] / (1024.0 * 1024.0)) AS DataUsageInGB,
        MAX(FRH.[MaxIndexStorageInKB] / (1024.0 * 1024.0)) AS IndexUsageInGB,
        MAX(
            FRH.[MaxDataStorageInKB] / (1024.0 * 1024.0) + 
            FRH.[MaxIndexStorageInKB] / (1024.0 * 1024.0)
        ) AS StorageInGB
    FROM 
        [FactResourceUsageHourly] FRH
    JOIN 
        [DimResource] DR
        ON FRH.[ResourceId] = DR.[ResourceId]
    WHERE 
        FRH.[Timestamp] >= DATEADD(DAY, -1, GETDATE()) -- Filter for the last 1 day
    GROUP BY 
        DR.[AccountName],
        DR.[SubscriptionId]
    ORDER BY
        StorageInGB DESC; -- Order by total storage usage
    
  7. Creare ora una visualizzazione sui dati aprendo il menu di scelta rapida e selezionando Salva come visualizzazione. Assegnare alla visualizzazione un nome univoco e quindi selezionare OK.

    Screenshot dell'opzione di menu di scelta rapida 'Salva come vista' per una query SQL nell'area di lavoro.

    Screenshot della finestra di dialogo per specificare il nome della nuova visualizzazione nell'area di lavoro.

    Suggerimento

    In alternativa, creare una vista direttamente usando questa query:

    CREATE VIEW [MostActiveCustomers]
    AS
    SELECT 
        a.ResourceId AS UsageResourceId,
        a.Timestamp,
        a.MeterId,
        a.FleetId,
        a.ConsumedUnits,
        b.ResourceId AS ResourceDetailId
    FROM
        FactMeterUsageHourly a
    INNER JOIN
        DimResource b ON a.ResourceId = b.ResourceId
    
  8. Passare alla visualizzazione appena creata all'interno della cartella Views dell'endpoint.

    Screenshot della cartella

  9. Passare alla visualizzazione creata di recente (o una query) e quindi selezionare Esplora dati (anteprima) e quindi selezionare Visualizza risultati.

    Screenshot dell'opzione di menu per visualizzare una query esistente nell'area di lavoro.

  10. Nella pagina di destinazione di Power BI creare oggetti visivi pertinenti per lo scenario. Ad esempio, è possibile visualizzare la percentuale del carico di lavoro di Azure Cosmos DB con la funzionalità di scalabilità automatica abilitata.

    Screenshot della finestra di dialogo di visualizzazione di Power BI per una query o una vista SQL all'interno dell'area di lavoro.

Questa sezione illustra i passaggi per creare ed eseguire query su una tabella o un dataframe caricato dai dati archiviati in Archiviazione di Azure (ADLS) o Azure Databricks. Questa sezione usa un notebook connesso ad Apache Spark con Python e le celle SQL.

  1. Innanzitutto, definire la configurazione dell'account di archiviazione di Azure destinata a

    # Define storage configuration
    container_name = "<azure-storage-container-name>"
    account_name = "<azure-storage-account-name>"
    base_url = f"abfss://{container_name}@{account_name}.dfs.core.windows.net"
    source_path = f"{base_url}/FactResourceUsageHourly"
    
  2. Creare i dati come tabella. Ricaricare e aggiornare i dati da un'origine esterna (Archiviazione di Azure - ADLS) eliminando e ricreando la fleet_data tabella.

    table_name = "fleet_data"
    
    # Drop the table if it exists
    spark.sql(f"DROP TABLE IF EXISTS {table_name}")
    
    # Create the table
    spark.sql(f"""
        CREATE TABLE {table_name}
        USING delta
        LOCATION '{source_path}'
    """)
    
  3. Interrogare e rendere i risultati della tabella fleet_data.

    # Query and display the table
    df = spark.sql(f"SELECT * FROM {table_name}")
    display(df)
    
  4. Definire l'elenco completo di tabelle aggiuntive da creare per l'elaborazione dei dati di analisi della flotta.

    # Table names and folder paths (assumed to match)
    tables = [
        "DimResource",
        "DimMeter",
        "FactResourceUsageHourly",
        "FactAccountHourly",
        "FactRequestHourly",
        "FactMeterUsageHourly"
    ]
    
    # Drop and recreate each table
    for table in tables:
        spark.sql(f"DROP TABLE IF EXISTS {table}")
        spark.sql(f"""
            CREATE TABLE {table}
            USING delta
            LOCATION '{base_url}/{table}'
        """)
    
  5. Eseguire una query usando una di queste tabelle. Ad esempio, questa query trova i primi 100 account più attivi per transazioni.

    SELECT 
        DR.SubscriptionId,
        DR.AccountName,
        DR.ResourceGroup,
        SUM(FRH.TotalRequestCount) AS sum_total_requests
    FROM 
        FactRequestHourly FRH
    JOIN 
        DimResource DR
        ON FRH.ResourceId = DR.ResourceId
    WHERE 
        FRH.Timestamp >= DATE_SUB(CURRENT_DATE(), 7) -- Filter for the last 7 days
        AND FRH.ResourceName IN ('Document', 'StoredProcedure') -- Filter for Dataplane Operations
    GROUP BY 
        DR.AccountName,
        DR.SubscriptionId,
        DR.ResourceGroup
    ORDER BY
        sum_total_requests DESC
    LIMIT 100; -- Limit to top 100 results
    
  6. Eseguire questa query per trovare i primi 100 account più grandi per risorsa di archiviazione.

    SELECT 
        DR.SubscriptionId,
        DR.AccountName,
        MAX(FRH.MaxDataStorageInKB / (1024.0 * 1024.0)) AS DataUsageInGB,
        MAX(FRH.MaxIndexStorageInKB / (1024.0 * 1024.0)) AS IndexUsageInGB,
        MAX(
            FRH.MaxDataStorageInKB / (1024.0 * 1024.0) + 
            FRH.MaxIndexStorageInKB / (1024.0 * 1024.0)
        ) AS StorageInGB
    FROM 
        FactResourceUsageHourly FRH
    JOIN 
        DimResource DR
        ON FRH.ResourceId = DR.ResourceId
    WHERE 
        FRH.Timestamp >= DATE_SUB(CURRENT_DATE(), 1) -- Filter for the last 1 day
    GROUP BY 
        DR.AccountName,
        DR.SubscriptionId
    ORDER BY
        StorageInGB DESC
    LIMIT 100; -- Limit to top 100 results