Creare e gestire le relazioni in Power BI DesktopCreate and manage relationships in Power BI Desktop

Quando si importano più tabelle, è probabile che verranno eseguite analisi con i dati inclusi nelle tabelle.When you import multiple tables, chances are you’re going to do some analysis using data from all those tables. Le relazioni tra le tabelle sono necessarie per calcolare con precisione i risultati e visualizzare le informazioni corrette nei report.Relationships between those tables are necessary in order to accurately calculate results and display the correct information in your reports. Power BI Desktop semplifica la creazione di queste relazioni.Power BI Desktop makes creating those relationships easy. Nella maggior parte dei casi, in effetti, tutte le operazioni verranno eseguite automaticamente dalla funzionalità Rilevamento automatico.In-fact, in most cases you won’t have to do anything, the Autodetect feature can do it for you. In alcuni casi, tuttavia, potrebbe essere necessario creare manualmente le relazioni oppure apportare alcune modifiche a una relazione.However, in some cases you might have to create relationships yourself, or you might need to make some changes to a relationship. È quindi importante comprendere le relazioni in Power BI Desktop e capire come crearle e modificarle.Either way, it’s important to understand relationships in Power BI Desktop and how to create and edit them.

Rilevamento automatico durante il caricamentoAutodetect during load

Se si eseguono query in due o più tabelle alla volta, Power BI Desktop proverà a trovare e creare automaticamente le relazioni quando i dati vengono caricati.If you query two or more tables at the same time, when the data is loaded, Power BI Desktop will attempt to find and create relationships for you. Le proprietà Cardinalità, Direzione filtro incrociato e Attiva vengono impostate automaticamente.Cardinality, Cross filter direction, and Active properties are automatically set. Power BI Desktop esamina i nomi di colonna nelle tabelle sottoposte a query per determinare se sono presenti potenziali relazioni.Power BI Desktop looks at column names in the tables you are querying to determine if there are any potential relationships. Se le relazioni sono presenti, verranno create automaticamente.If there are, those relationships are created automatically. Se Power BI Desktop non riesce a determinare con un livello elevato di confidenza un'eventuale corrispondenza, la relazione non verrà creata automaticamente.If Power BI Desktop cannot determine with a high-level of confidence there is a match, it will not automatically create the relationship. È comunque possibile usare la finestra di dialogo Gestisci relazioni per creare o modificare le relazioni.You can still use the Manage Relationships dialog to create or edit relationships.

Creare una relazione usando il Rilevamento automaticoCreate a relationship by using Autodetect

Nella scheda Home fare clic su Gestisci relazioni>Rilevamento automatico.On the Home tab, click Manage Relationships > AutoDetect.

Creare manualmente una relazioneCreate a relationship manually

  1. Nella scheda Home fare clic su Gestisci relazioni>Nuovo.On the Home tab, click Manage Relationships > New.
  2. Nella finestra di dialogo Crea relazione selezionare una tabella nel primo elenco a discesa di tabelle e quindi selezionare la colonna da usare nella relazione.In the Create Relationship dialog, in the first table drop-down list, select a table, and then select the column you want to use in the relationship.
  3. Nel secondo elenco a discesa di tabelle selezionare l'altra tabella da inserire nella relazione, quindi selezionare la colonna da usare e infine fare clic su OK.In the to second table drop-down list, select the other table you want in the relationship, then select the other column you want to use, and then click OK.

Per impostazione predefinita, Power BI Desktop configurerà automaticamente le proprietà Cardinalità (direzione), Direzione filtro incrociato e Attiva per la nuova relazione. È tuttavia possibile modificare tali proprietà, se necessario, in Opzioni avanzate.By default, Power BI Desktop will automatically configure the Cardinality (direction), Cross filter direction, and Active properties for your new relationship; however, you can change these if necessary in Advanced options. Per altre informazioni, vedere la sezione Informazioni sulle opzioni avanzate più avanti in questo articolo.To learn more, see the Understanding advanced options section later in this article.

Modificare una relazioneEdit a relationship

  1. Nella scheda Home fare clic su Gestisci relazioni.On the Home tab, click Manage Relationships.
  2. Nella finestra di dialogo Gestisci relazioni selezionare la relazione e quindi fare clic su Modifica.In the Manage Relationships dialog, select the relationship, then click Edit.

Configurare le opzioni avanzateConfigure advanced options

Quando si crea o si modifica una relazione, è possibile configurare le opzioni avanzate.When you create or edit a relationship, you can configure advanced options. Per impostazione predefinita, le opzioni avanzate verranno configurate automaticamente in base alla maggiore probabilità.By default, advanced options are automatically configured based on a best guess. Il risultato può essere diverso per ogni relazione, in base ai dati disponibili nelle colonne.This can be different for each relationship based on the data in the columns.

CardinalitàCardinality

Molti-a-uno (*:1) - Tipo predefinito e più comune.Many to One (*:1) - This is the most common, default type. Significa che la colonna in una tabella può avere più istanze di un valore e l'altra tabella correlata, spesso nota come tabella di ricerca, include solo un'istanza di un valore.This means the column in one table can have more than one instance of a value, and the other related table, often know as the Lookup table, has only one instance of a value.

Uno-a-uno (1:1) - Significa che la colonna in una tabella include solo un'istanza di un valore specifico e l'altra tabella correlata include solo un'istanza di un valore specifico.One to One (1:1) - This means the column in one table has only one instance of a particular value, and the other related table has only one instance of a particular value.

Per informazioni dettagliate su quando modificare la cardinalità, vedere la sezione Informazioni sulle opzioni avanzate più avanti in questo articolo.See the Understanding advanced options section later in this article for more details about when to change cardinality.

Direzione filtro incrociatoCross filter direction

Entrambi - Questa è la direzione predefinita più comune.Both - This is the most common, default direction. Significa che per finalità relative ai filtri entrambe le tabelle vengono considerate come se fossero una singola tabella.This means for filtering purposes, both tables are treated as if they're a single table. Questa procedura funziona bene con una singola tabella che include un numero di tabelle di ricerca che la racchiudono.This works well with a single table that has a number of lookup tables that surround it. Un esempio è una tabella di valori effettivi delle vendite con una tabella di ricerca per reparto.An example is a Sales actuals table with a lookup table for department. Spesso si tratta di una configurazione di schema a stella (una tabella centrale con diverse tabelle di ricerca). Tuttavia, se si hanno due o più tabelle con tabelle di ricerca (con alcune in comune), è preferibile usare l'impostazione Entrambi.This is often called a Star schema configuration (a central table with several Lookup tables.) However, if you have two or more tables that also have lookup tables (with some in common) then you wouldn't want to use the Both setting. Per continuare l'esempio precedente, in questo caso, è anche presente una tabella delle vendite in budget che registra il budget mirato per ogni reparto.To continue the previous example, in this case, you also have a budget sales table that records target budget for each department. La tabella del reparto, infine, è connessa sia alla tabella vendite sia alla tabella budget.And, the department table is connected to both the sales and the budget table. Evitare l'impostazione Entrambi per questo tipo di configurazione.Avoid the Both setting for this kind of configuration.

Singola – Significa che le opzioni del filtro nelle tabelle connesse vengono applicate alla tabella in cui vengono aggregati i valori.Single - This means that filtering choices in connected tables work on the table where values are being aggregated. Se si importa una tabella di Power Pivot in Excel 2013 o in un modello di dati precedente, tutte le relazioni avranno un'unica direzione.If you import a Power Pivot in Excel 2013 or earlier data model, all relationships will have a single direction.

Per informazioni dettagliate su quando modificare la direzione del filtro incrociato, vedere la sezione Informazioni sulle opzioni avanzate più avanti in questo articolo.See the Understanding advanced options section later in this article for more details about when to change cross filter direction.

Imposta come relazione attivaMake this relationship active

Se selezionata, questa opzione significa che la relazione viene usata come relazione attiva e predefinita.When checked, this means the relationship serves as the active, default relationship. Nei casi in cui sono presenti più relazioni tra due tabelle, la relazione attiva permette a Power BI Desktop di creare automaticamente visualizzazioni che includono entrambe le tabelle.In cases where there are more than one relationship between two tables, the active relationship provides a way for Power BI Desktop to automatically create visualizations that include both tables.

Per informazioni dettagliate su quando rendere attiva una relazione specifica, vedere la sezione Informazioni sulle opzioni avanzate più avanti in questo articolo.See the Understanding advanced options section later in this article for more details about when to make a particular relationship active.

Informazioni sulle relazioniUnderstanding relationships

Dopo avere connesso due tabelle con una relazione, sarà possibile usare i dati di entrambe le tabelle come se si trattasse di una singola tabella, senza doversi preoccupare dei dettagli delle relazioni o senza dovere ridurre le due tabelle a una tabella singola prima di importarle.Once you have connected two tables together with a relationship, you can work with the data in both tables as if they were a single table, freeing you from having to worry about relationship details, or flattening those tables into a single table before importing them. In molte situazioni, Power BI Desktop può creare automaticamente le relazioni, in modo che non sia neanche necessaria la creazione manuale.In many situations, Power BI Desktop can automatically create relationships for you, so creating those relationships yourself might not even be needed. Tuttavia, se Power BI Desktop non riesce a determinare con un livello elevato di certezza che deve esistere una relazione tra due tabelle, la relazione non verrà automaticamente creata.However, if Power BI Desktop can’t determine with a high-degree of certainty that a relationship between two tables should exist, it will not automatically create the relationship . In questo caso, sarà necessario creare manualmente la relazione.In that case, you will need to create the relationship.

La breve esercitazione seguente illustra il funzionamento delle relazioni in Power BI Desktop.Let’s do a little tutorial, to better show you how relationships work in Power BI Desktop.

Suggerimento

È possibile completare personalmente questa lezione.You can complete this lesson yourself. Copiare la tabella ProjectHours seguente in un foglio di lavoro di Excel, selezionare tutte le celle, quindi fare clic su INSERISCI>Tabella.Copy the ProjectHours table below into an Excel worksheet, select all of the cells, click INSERT > Table. Nella finestra di dialogo Crea tabella è sufficiente fare clic su OK.In the Create Table dialog, just click OK. In Nome tabelladigitare ProjectHours.Then in Table Name, type ProjectHours. Eseguire la stessa procedura per la tabella CompanyProject.Do the same for the CompanyProject table. Sarà quindi possibile importare i dati usando Recupera dati in Power BI Desktop.You can then import the data by using Get Data in Power BI Desktop. Selezionare la cartella di lavoro e le tabelle come origine dati.Select your workbook and tables as a data source.

La prima tabella, ProjectHours, è un record di ticket di lavoro che registrano il numero di ore per cui una persona ha lavorato su un progetto specifico.This first table, ProjectHours, is a record of work tickets that record the number of hours a person has worked on a particular project.

ProjectHoursProjectHours

TicketTicket SubmittedBySubmittedBy HoursHours ProjectProject DateSubmitDateSubmit
10011001 Brewer, AlanBrewer, Alan 2222 BlueBlue 1/1/20131/1/2013
10021002 Brewer, AlanBrewer, Alan 2626 RedRed 2/1/20132/1/2013
10031003 Ito, ShuIto, Shu 3434 YellowYellow 12/4/201212/4/2012
10041004 Brewer, AlanBrewer, Alan 1313 OrangeOrange 1/2/20121/2/2012
10051005 Bowen, EliBowen, Eli 2929 PurplePurple 10/1/201310/1/2013
10061006 Bento, NunoBento, Nuno 3535 GreenGreen 2/1/20132/1/2013
10071007 Hamilton, DavidHamilton, David 1010 YellowYellow 10/1/201310/1/2013
10081008 Han, MuHan, Mu 2828 OrangeOrange 1/2/20121/2/2012
10091009 Ito, ShuIto, Shu 2222 PurplePurple 2/1/20132/1/2013
10101010 Bowen, EliBowen, Eli 2828 GreenGreen 10/1/201310/1/2013
10111011 Bowen, EliBowen, Eli 99 BlueBlue 10/15/201310/15/2013

La seconda tabella, CompanyProject, è un elenco di progetti a cui è stata assegnata una priorità di tipo A, B o C.This second table, CompanyProject, is a list of projects with an assigned priority, A, B, or C.

CompanyProjectCompanyProject

ProjNameProjName PriorityPriority
BlueBlue AA
RedRed BB
GreenGreen CC
YellowYellow CC
PurplePurple BB
OrangeOrange CC

Si noti che ogni tabella contiene una colonna del progetto.Notice that each table has a project column. Ogni colonna ha un nome lievemente differente, ma i valori sono simili.Each are named slightly different, but the values look like they’re the same. Si tratta di un aspetto importante, che verrà esaminato più avanti.That’s important, and we’ll get back to it in a little bit.

Dopo avere importato le due tabelle in un modello, è possibile creare un report.Now that we have our two tables imported into a model, let’s create a report. Si vuole ottenere prima di tutto il numero di ore inviate in base alla priorità del progetto, sarà necessario selezionare Priority e Hours da Campi.The first thing we want to get is the number of hours submitted by project priority, so we select Priority and Hours from Fields.

Se si esamina la tabella nell'area di disegno Report, il numero di ore visualizzato è 256,00 per ogni progetto, che corrisponde anche al totale.If we look at our table in the Report canvas, you’ll see the number of hours is 256.00 for each project, and it’s also the total. Evidentemente questo valore non è corretto.Clearly this isn’t correct. Questo problema dipendeWhy? dal fatto che non è possibile calcolare una somma totale dei valori di una tabella (Hours nella tabella Project), suddivisi in base ai valori di un'altra tabella (Priority nella tabella CompanyProject) senza una relazione tra le due tabelle.It’s because we can’t calculate a sum total of values from one table (Hours in the Project table), sliced by values in another table (Priority in the CompanyProject table) without a relationship between these two tables.

È quindi necessario creare una relazione tra le due tabelle.So, let’s create a relationship between these two tables.

Come si ricorderà, in entrambe le tabelle sono disponibili colonne con un nome progetto, con valori simili.Remember those columns we saw in both tables with a project name, but with values that look alike? Queste due colonne verranno usate per creare una relazione tra le tabelle.We’re going to use these two columns to create a relationship between our tables.

Perché queste colonne?Why these columns? perché se si esamina la colonna Project nella tabella ProjectHours, si noteranno valori quali Blue, Red, Yellow, Orange e così via.Well, if we look at the Project column in the ProjectHours table, we see values like Blue, Red, Yellow, Orange, and so on. Sono in effetti presenti alcune righe con lo stesso valore.In fact, we see several rows that have the same value. I valori relativi ai colori per Project sono molti.In-effect, we have many color values for Project.

Se si esamina la colonna ProjName nella tabella CompanyProject, si noterà che è presente solo un valore per ogni colore per il progetto.If we look at the ProjName column in the CompanyProject table, we see there’s only one of each of the color values for project. Ogni valore di colore in questa tabella è univoco e questo è importante, perché è possibile creare una relazione tra queste due tabelle.Each color value in this table is unique, and that’s important, because we can create a relationship between these two tables. In questo caso, si tratta di una relazione di tipo Molti-a-uno.In this case, a many-to-one relationship. In una relazione molti-a-uno è necessario che almeno una colonna in una delle tabelle contenga valori univoci.In a many-to-one relationship, at least one column in one of the tables must contain unique values. Sono disponibili opzioni avanzate per alcune relazioni, che verranno esaminate più avanti, ma per il momento verrà creata una relazione tra le colonne Project delle due tabelle.There are some advanced options for some relationships, and we’ll look at those later, but for now, let’s create a relationship between the Project columns in each of our two tables.

Per creare la nuova relazioneTo create the new relationship

  1. Fare clic su Gestisci relazioni.Click Manage Relationships.
  2. In Gestisci relazionifare clic su Nuovo.In Manage Relationships, click New. Verrà visualizzata la finestra di dialogo Crea relazione , in cui è possibile selezionare tabelle, colonne ed eventuali impostazioni avanzate per la relazione.This opens the Create Relationship dialog, where we can select the tables, columns, and any advanced settings we want for our relationship.
  3. Nella prima tabella selezionare ProjectHours, quindi selezionare la colonna Project .In the first table, select ProjectHours, then select the Project column. Questo è il lato molti della relazione.This is the many side of our relationship.
  4. Nella seconda tabella selezionare CompanyProject, quindi selezionare la colonna ProjName .In the second table, select CompanyProject, then select the ProjName column. Questo è il lato uno della relazione.This is the one side of our relationship.
  5. Fare clic su OK nella finestra di dialogo Crea relazione e nella finestra di dialogo Gestisci relazioni .Go ahead and click OK in both the Create Relationship dialog and the Manage Relationships dialog.

Per fornire informazioni più esaustive, la relazione è stata creata eseguendo la procedura più complicata.In the interest of full disclosure, you really just created this relationship the hard way. Sarebbe sufficiente fare clic sul pulsante Rilevamento automatico nella finestra di dialogo Gestisci relazioni.You could've just clicked on the Autodetect button in the Manage Relationships dialog. In effetti, il rilevamento automatico potrebbe averlo già fatto automaticamente quando sono stati caricati i dati se entrambe le colonne avessero avuto lo stesso nome.In-fact, Autodetect would have already done it for you when you loaded the data if both columns had the same name. È comunque utile conoscere la procedura manuale.But, what’s the challenge in that?

È ora possibile esaminare di nuovo la tabella nell'area di disegno Report.Now, let’s look at the table in our Report canvas again.

Ha un aspetto decisamente migliore.Now that looks a whole lot better, doesn’t it?

Quando si sommano le ore in base a Priority, Power BI Desktop cercherà ogni istanza dei valori di colore univoci nella tabella di ricerca CompanyProject e quindi cercherà ogni istanza di tali valori nella tabella CompanyProject e calcolerà una somma totale per ogni valore univoco.When we sum up hours by Priority, Power BI Desktop will look for every instance of the unique color values in the CompanyProject lookup table, and then look for every instance of each of those values in the CompanyProject table, and calculate a sum total for each unique value.

Si tratta di un'operazione abbastanza semplice e con il Rilevamento automatico potrebbe non essere necessaria.That was pretty easy, in-fact, with Autodetect, you might not even have to do this much.

Informazioni sulle opzioni avanzateUnderstanding advanced options

Quando viene creata una relazione, con il Rilevamento automatico o manualmente, Power BI Desktop configura automaticamente le opzioni avanzate in base ai dati disponibili nelle tabelle.When a relationship is created, either with Autodetect or one you create manually, Power BI Desktop will automatically configure advanced options based on the data in your tables. È possibile configurare le proprietà avanzate delle relazioni espandendo Opzioni avanzate nella finestra di dialogo di creazione/modifica della relazione.You can configure advanced relationship properties by expanding Advanced options in the Create/Edit relationship dialog.

Come indicato, queste opzioni vengono in genere impostate automaticamente e non sarà necessario modificarle. In alcuni casi, tuttavia, potrebbe essere necessario configurare manualmente le opzioni avanzate.As we said, these are usually set automatically and you won’t need to mess with them; however, there are several situations where you might want to configure advanced options yourself.

Gli aggiornamenti futuri ai dati richiedono una cardinalità diversaFuture updates to the data require a different cardinality

In genere, Power BI Desktop riesce a determinare automaticamente la cardinalità migliore per la relazione.Normally, Power BI Desktop can automatically determine the best cardinality for the relationship. Se è necessario eseguire l'override delle impostazioni automatiche, perché si prevede che i dati cambieranno in futuro, è possibile selezionarli nel controllo Cardinalità.If you do need to override the automatic setting, because you know the data will change in the future, you can select it in the Cardinality control. L'esempio seguente illustra una situazione in cui è necessario selezionare una cardinalità diversa.Let’s look at an example where we need to select a different cardinality.

La tabella CompanyProjectPriority seguente è un elenco di tutti i progetti aziendali e delle rispettive priorità.The CompanyProjectPriority table below is a list of all company projects and their priority. La tabella ProjectBudget è l'insieme di progetti per cui è stato approvato il budget.The ProjectBudget table is the set of projects for which budget has been approved.

ProjectBudgetProjectBudget

Approved ProjectsApproved Projects BudgetAllocationBudgetAllocation AllocationDateAllocationDate
BlueBlue 40,00040,000 12/1/201212/1/2012
RedRed 100,000100,000 12/1/201212/1/2012
GreenGreen 50,00050,000 12/1/201212/1/2012

CompanyProjectPriorityCompanyProjectPriority

ProjectProject PriorityPriority
BlueBlue AA
RedRed BB
GreenGreen CC
YellowYellow CC
PurplePurple BB
OrangeOrange CC

Se si crea una relazione tra la colonna Project nella tabella CompanyProjectPriority e la colonna ApprovedProjects nella tabella ProjectBudget, come indicato di seguito:If we create a relationship between the Project column in the CompanyProjectPriority table and ApprovedProjects column in the ProjectBudget table, like this:

La cardinalità è impostata automaticamente su Uno-a-uno (1:1) e il filtro incrociato su Entrambi (come illustrato).Cardinality is automatically set to One-to-One (1:1), and cross filtering to be Both (as shown). Ciò dipende dal fatto che per Power BI Desktop la combinazione migliore delle due tabelle ha un aspetto analogo al seguente:This is because to Power BI Desktop, the best combination of the two tables really looks like this:

ProjectProject PriorityPriority BudgetAllocationBudgetAllocation AllocationDateAllocationDate
BlueBlue AA 40,00040,000 12/1/201212/1/2012
RedRed BB 100,000100,000 12/1/201212/1/2012
GreenGreen CC 50,00050,000 12/1/201212/1/2012
YellowYellow CC

PurplePurple BB

OrangeOrange CC

Esiste una relazione uno-a-uno tra le due tabelle, perché la colonna Project della tabella combinata non include valori ripetuti.There is a one-to-one relationship between our two tables because there are no repeating values in the combined table’s Project column. La colonna Project è univoca, perché ogni valore è presente solo una volta, quindi le righe delle due tabelle possono essere combinate direttamente senza duplicazioni.The Project column is unique, because each value occurs only once, so, the rows from the two tables can be combined directly without any duplication.

Si supponga tuttavia che siano previste modifiche ai dati al successivo aggiornamento.But, let’s say you know the data will change the next time you refresh it. Una versione aggiornata della tabella ProjectBudget include ora righe aggiuntive per Blue e Red:A refreshed version of the ProjectBudget table now has additional rows for Blue and Red:

ProjectBudgetProjectBudget

Approved ProjectsApproved Projects BudgetAllocationBudgetAllocation AllocationDateAllocationDate
BlueBlue 40,00040,000 12/1/201212/1/2012
RedRed 100,000100,000 12/1/201212/1/2012
GreenGreen 50,00050,000 12/1/201212/1/2012
BlueBlue 80,00080,000 6/1/20136/1/2013
RedRed 90,00090,000 6/1/20136/1/2013

Ciò significa che la combinazione migliore delle due tabelle ha ora un aspetto analogo al seguente: This means the best combination of the two tables now really looks like this:

ProjectProject PriorityPriority BudgetAllocationBudgetAllocation AllocationDateAllocationDate
BlueBlue AA 40,00040,000 12/1/201212/1/2012
RedRed BB 100,000100,000 12/1/201212/1/2012
GreenGreen CC 50,00050,000 12/1/201212/1/2012
YellowYellow CC

PurplePurple BB

OrangeOrange CC

BlueBlue AA 8000080000 6/1/20136/1/2013
RedRed BB 9000090000 6/1/20136/1/2013

In questa nuova tabella combinata, la colonna Project include valori ripetuti.In this new combined table, the Project column has repeating values. Le due tabelle originali non avranno una relazione uno-a-uno dopo l'aggiornamento della tabella.The two original tables won’t have a one-to-one relationship once the table is refreshed. In questo caso, dal momento che si sa che dopo gli aggiornamenti futuri nella colonna Project saranno presenti duplicati, sarà necessario impostare il valore di Cardinalità su Molti-a-uno (*:1), con Molti sul lato ProjectBudget e Uno sul lato CompanyProject.In this case, because we know those future updates will cause the Project column to have duplicates, we want to set the Cardinality to be Many-to-One (*:1), with the Many on the ProjectBudget side and the One on the CompanyProject side.

Modifica della direzione del filtro incrociato per un set complesso di tabelle di relazioniAdjusting cross filter direction for a complex set of tables of relationships

Per la maggior parte delle relazioni, la direzione filtro incrociato è impostata su 'Entrambi'.For most relationships, the cross filter direction is set to ‘Both’. In alcune circostanze non comuni, tuttavia, potrebbe essere necessario impostare un valore diverso da quello predefinito, ad esempio se si importa un modello da una versione precedente di Power Pivot, in cui ogni relazione è impostata su una direzione singola.There are, however, some more uncommon circumstances where you might need to set this different from the default, like if you’re importing a model from an older version of Power Pivot, where every relationship is set to a single direction.

L'impostazione Entrambi permette a Power BI Desktop di considerare tutti gli aspetti delle tabelle connesse come se fossero una tabella singola.The Both setting enables Power BI Desktop to treat all aspects of connected tables as if they are a single table. In alcune situazioni, tuttavia Power BI Desktop non può impostare la direzione filtro incrociato di una relazione su "Entrambi", mantenendo al tempo stesso un set non ambiguo di valori predefiniti disponibile per finalità di reporting.There are some situations, however, where Power BI Desktop cannot set a relationship’s cross filter direction to ‘Both’ and also keep an unambiguous set of defaults available for reporting purposes. Se una direzione filtro incrociato della relazione non è impostata su Entrambi, ciò dipende in genere dal fatto che creerebbe ambiguità.If a relationship cross filter direction isn't set to Both, then it’s usually because it would create ambiguity. Se l'impostazione predefinita per il filtro incrociato non è adatta alle proprie esigenze, provare a impostarla in modo che sia verso una tabella specifica o che sia di tipo Entrambi.If the default cross filter setting isn’t working for you, try setting it to a particular table or Both.

Il filtro incrociato a direzione singola è adatto a molte situazioni.Single direction cross filtering works for many situations. Se è stato importato un modello da Power Pivot a Excel 2013 o versioni precedenti, tutte le relazioni verranno impostate sulla direzione singola.In fact, if you’ve imported a model from Power Pivot in Excel 2013 or earlier, all of the relationships will be set to single direction. Per direzione singola si intende che le opzioni del filtro nelle tabelle connesse vengono applicate alla tabella in cui viene eseguita l'aggregazione.Single direction means that filtering choices in connected tables work on the table where aggregation work is happening. In alcuni casi la comprensione del filtro incrociato può risultare complessa, quindi può essere utile esaminare un esempio.Sometimes, understanding cross filtering can be a little difficult, so let’s look at an example.

Con il filtro incrociato a direzione singola, se si crea un report che riepiloga le ore del progetto, sarà possibile scegliere di riepilogare o filtrare in base a CompanyProject, Priority o CompanyEmployee, City.With single direction cross filtering, if you create a report that summarizes the project hours and then you can choose to summarize (or filter) by CompanyProject, Priority or CompanyEmployee, City. Se tuttavia si vuole contare il numero di dipendenti per ogni progetto (una domanda meno comune), il filtro non funzionerà.If however, you want to count the number of employee per projects (a less common question), it won’t work. Verrà visualizzata una colonna di valori tutti uguali.You’ll get a column of values that are all the same. Nell'esempio seguente la direzione del filtro incrociato di entrambe le relazioni è impostata su direzione singola, ovvero verso la tabella ProjectHours:In the example below, both relationships cross filtering direction is set to a single direction – towards the ProjectHours table:

La specifica del filtro procederà da CompanyProject a CompanyEmployee, come illustrato nella figura seguente, ma senza raggiungere CompanyEmployee.Filter specification will flow from CompanyProject to CompanyEmployee (as shown in the image below) but, it won’t flow up to CompanyEmployee. Se tuttavia si imposta la direzione del filtro incrociato su Entrambi, il filtro funzionerà correttamente.However, if you set the cross filtering direction to Both it will work. L'impostazione Entrambi permette alla specifica del filtro di raggiungere Employee.The Both setting allows the filter specification to flow up to Employee.

Se la direzione del filtro incrociato è impostata su Entrambi, il report avrà l'aspetto corretto:With the cross filtering direction set to Both, our report now appears correct:

L'applicazione del filtro a entrambe le direzioni è ottimale per un criterio di relazioni di tabella analogo a quello riportato in precedenza.Cross filtering both directions works well for a pattern of table relationships that look like the pattern above. Questo schema viene in genere definito a stella e ha un aspetto analogo al seguente:This is most commonly called a star schema, like this:

L'applicazione della direzione per il filtro incrociato non funziona in modo ottimale con un criterio più generale spesso presente nei database, come illustrato nel diagramma seguente:Cross filtering direction does not work well with a more general pattern often found in databases, like in this diagram:

Se il criterio di tabelle disponibile è analogo al seguente, ovvero include cicli, il filtro incrociato può creare un set ambiguo di relazioni.If you have a table pattern like this, with loops, then cross filtering can create an ambiguous set of relationships. Ad esempio, se si somma un campo da TableX e quindi si sceglie di filtrare in base a un campo in TableY, non sarà possibile determinare chiaramente la direzione del filtro, ovvero attraverso la tabella in alto o la tabella in basso.For instance, if you sum up a field from TableX and then choose to filter by a field on TableY, then it’s not clear how the filter should travel, through the top table or the bottom table. Un esempio comune di questo tipo di modello è che TableX è una tabella delle vendite con i dati effettivi e TableY è una tabella contenente i dati di budget.A common example for this kind of pattern is TableX to be a Sales table with actuals data and for TableY to be budget data. Quindi, le tabelle nel centro sono tabelle di ricerca usate da entrambe le tabelle, ad esempio Divisione o Regione.Then, the tables in the middle are lookup tables that both tables use, such as Division or Region.

Analogamente alle relazioni attive/inattive, Power BI Desktop non consentirà l'impostazione di una relazione come Entrambi se ciò comporterà la creazione di ambiguità nei report.Just like with active/inactive relationships, Power BI Desktop won’t allow a relationship to be set as Both if it will create ambiguity in reports. È possibile risolvere questo problema in molti modi. Di seguito sono illustrati i due modi più comuni:There are several different ways you can deal with this, here are the two most common:

  • Eliminare o contrassegnare le relazioni come inattive per ridurre l'ambiguità.Delete or mark relationships as inactive to reduce ambiguity. Potrebbe essere quindi possibile impostare su Entrambi un filtro incrociato per le relazioni.Then you might be able to set a relationship cross filtering as Both.
  • Importare una tabella due volte (la seconda volta con un nome diverso), per eliminare i cicli.Bring in a table twice (with a different name the second time) to eliminate loops. Il criterio della relazione sarà quindi simile a uno schema a stella.This makes the pattern of relationships like a star schema. Lo schema a stella permette di impostare su Entrambi tutte le relazioni.With a star schema all of the relationships can be set to Both.

Relazione attiva non validaWrong active relationship

Quando Power BI Desktop crea automaticamente le relazioni, in alcuni casi rileva più di una relazione tra due tabelle.When Power BI Desktop automatically creates relationships, it sometimes encounters more than one relationship between two tables. In questo caso, solo una delle relazioni viene impostata come attiva.When this happens only one of the relationships is set to be active. La relazione attiva viene usata come relazione predefinita, in modo che Power BI Desktop possa creare automaticamente una visualizzazione quando si scelgono campi da due diverse tabelle.The active relationship serves as the default relationship so that when you choose fields from two different tables, Power BI Desktop can automatically create a visualization for you. È tuttavia possibile che in alcuni casi la relazione selezionata automaticamente non sia valida.However, in some cases the automatically selected relationship can be wrong. È possibile usare la finestra di dialogo Gestisci relazioni per impostare una relazione come attiva o inattiva oppure è possibile impostare la relazione attiva nella finestra di dialogo Modifica relazione.You can use the Manage Relationships dialog to set a relationship as active or inactive, or you can set the active relationship in the Edit relationship dialog.

Per assicurare che sia disponibile una relazione predefinita, Power BI Desktop consente solo una singola relazione attiva tra due tabelle in un determinato momento.To ensure there’s a default relationship, Power BI Desktop only allows a single active relationship between two tables at a given time. È quindi necessario impostare prima di tutto la relazione corrente come inattiva e in seguito impostare la relazione che deve essere attiva.So, you must first set the current relationship as inactive and then set the relationship you want to be active.

Esaminiamo un esempio.Let’s look at an example. La prima tabella è ProjectTickets e la seconda tabella è EmployeeRole.This first table is ProjectTickets, and the next table is EmployeeRole.

ProjectTicketsProjectTickets

TicketTicket OpenedByOpenedBy SubmittedBySubmittedBy HoursHours ProjectProject DateSubmitDateSubmit
10011001 Perham, TomPerham, Tom Brewer, AlanBrewer, Alan 2222 BlueBlue 1/1/20131/1/2013
10021002 Roman, DanielRoman, Daniel Brewer, AlanBrewer, Alan 2626 RedRed 2/1/20132/1/2013
10031003 Roth, DanielRoth, Daniel Ito, ShuIto, Shu 3434 YellowYellow 12/4/201212/4/2012
10041004 Perham, TomPerham, Tom Brewer, AlanBrewer, Alan 1313 OrangeOrange 1/2/20121/2/2012
10051005 Roman, DanielRoman, Daniel Bowen, EliBowen, Eli 2929 PurplePurple 10/1/201310/1/2013
10061006 Roth, DanielRoth, Daniel Bento, NunoBento, Nuno 3535 GreenGreen 2/1/20132/1/2013
10071007 Roth, DanielRoth, Daniel Hamilton, DavidHamilton, David 1010 YellowYellow 10/1/201310/1/2013
10081008 Perham, TomPerham, Tom Han, MuHan, Mu 2828 OrangeOrange 1/2/20121/2/2012
10091009 Roman, DanielRoman, Daniel Ito, ShuIto, Shu 2222 PurplePurple 2/1/20132/1/2013
10101010 Roth, DanielRoth, Daniel Bowen, EliBowen, Eli 2828 GreenGreen 10/1/201310/1/2013
10111011 Perham, TomPerham, Tom Bowen, EliBowen, Eli 99 BlueBlue 10/15/201310/15/2013

EmployeeRoleEmployeeRole

EmployeeEmployee RoleRole
Bento, NunoBento, Nuno Project ManagerProject Manager
Bowen, EliBowen, Eli Project LeadProject Lead
Brewer, AlanBrewer, Alan Project ManagerProject Manager
Hamilton, DavidHamilton, David Project LeadProject Lead
Han, MuHan, Mu Project LeadProject Lead
Ito, ShuIto, Shu Project LeadProject Lead
Perham, TomPerham, Tom Project SponsorProject Sponsor
Roman, DanielRoman, Daniel Project SponsorProject Sponsor
Roth, DanielRoth, Daniel Project SponsorProject Sponsor

Sono effettivamente presenti due relazioni,There are actually two relationships here. una tra SubmittedBy nella tabella ProjectTickets ed Employee nella tabella EmployeeRole e l'altra tra OpenedBy nella tabella ProjectTickets ed Employee nella tabella EmployeeRole. One is between SubmittedBy in the ProjectTickets table and Employee in the EmployeeRole table, and the other is between OpenedBy in the ProjectTickets table and Employee in the EmployeeRole table.

Se si aggiungono entrambe le relazioni al modello (prima di tutto OpenedBy), nella finestra di dialogo Gestisci relazioni si potrà notare che OpenedBy è attiva:If we add both relationships to the model (OpenedBy first), then the Manage Relationships dialog will show that OpenedBy is active:

Se ora si crea un report che usa i campi Role ed Employee da EmployeeRole e il campo Hours da ProjectTickets in una visualizzazione tabella nell'area di disegno Report, verranno visualizzati solo gli sponsor del progetto, perché sono gli unici ad avere aperto un ticket di progetto.Now, if we create a report that uses Role and Employee fields from EmployeeRole, and the Hours field from ProjectTickets in a table visualization in the Report canvas, we’ll see only project sponsors because they’re the only ones that opened a project ticket.

È possibile modificare la relazione attiva e impostarla su SubmittedBy invece di OpenedBy.We can change the active relationship and get SubmittedBy instead of OpenedBy. In Gestisci relazioni deselezionare la relazione tra ProjectTickets(OpenedBy) ed EmployeeRole(Employee) e quindi selezionare la relazione tra Project Tickets(SubmittedBy) ed EmployeeRole(Employee).In Manage Relationships, we uncheck the ProjectTickets(OpenedBy) to EmployeeRole(Employee) relationship, and then we check the Project Tickets(SubmittedBy) to EmployeeRole(Employee) relationship.

Visualizzare tutte le relazioni in Visualizzazione relazioniSee all of your relationships in Relationship View

Talvolta il modello ha più tabelle e relazioni complesse tra di esse.Sometimes your model has multiple tables and complex relationships between them. Visualizzazione relazioni in Power BI Desktop mostra tutte le relazioni nel modello, la loro direzione e la cardinalità in un diagramma personalizzabile e facile da comprendere.Relationship View in Power BI Desktop shows all of the relationships in your model, their direction, and cardinality in an easy to understand and customizable diagram. Per altre informazioni, vedere Visualizzazione delle relazioni in Power BI Desktop.To learn more, see Relationship View in Power BI Desktop.