2017-12-08 2 views
0

Ich habe eine Tabelle mit einer Spalte, die eine Semikolon getrennte Liste von Tags für jede Zeile ist. Ich möchte einen Slicer erstellen, der es mir erlaubt, einen "contains" Slice in der Tags Spalte zu machen.PowerBI "enthält" Slicer

Beispiel Rekord:

Title  | Tags 
foobar  | thingA; thingB 
barfoo  | thingC; thingA; otherThing 

Slicer

thingA | thingB | thingC 

Auswahl von "thingA" sollte in beiden Reihen angezeigt wird.

Ich kann sehen, wie man eine neue Abfrage erstellt, um die Werte des Slicers mit einer bestimmten Aktion zu füllen, aber jetzt, wie man eine Beziehung zurück zur ursprünglichen Tabelle schafft, um mir zu erlauben Slice.

Antwort

1

Eine Möglichkeit, dies zu erreichen, ist die Verwendung einer zweiten nicht-vivo- lierten Version Ihrer Datensatztabelle.

Schritt 1: Erstellen eines Ohne Pivoting Datensätze Tabelle

Sie können Ihre Tags mit dem Abfrage-Editor UNPIVOT.

  1. Split Kolumne von Delimiter in der Symbolleiste auf Transform (genauer gesagt, spaltete die Tags Spalt durch ein Trennzeichen von ";").
  2. Wählen Sie die verschiedenen Tags Spalten, die sich ergeben, und wählen Format>Trim, um überflüssige führende oder nachstehende Leerzeichen loszuwerden, die Dinge durcheinander bringen könnten.
  3. Wählen Sie die mehreren Tags-Spalten aus, und wählen Sie Unpivot Columns.

Das Ergebnis sollte wie folgt aussehen:

Title | Tag 
-------|----------- 
foobar | thingA 
foobar | thingB 
barfoo | thingC 
barfoo | thingA 
barfoo | otherThing 

Solange Sie das Endergebnis zu erreichen, spielt es keine Rolle, wie Sie es bekommen.

Hinweis, diese Tabelle ist in Addition zu den ursprünglichen Tabellen in Ihrer Frage - es ist kein Ersatz.

Schritt 2: Ihre Tabellen

Ihre Unpivoted_Records Tabelle hat eine Beziehung zu Ihrem Slicer Tisch (Single/Many-to-One-Tag) und auch zu Ihrer ursprünglichen Aufzeichnung Tabelle (viel Relate sollte zu einem Titel).

Die magische Zutat ist, dass die Beziehung zwischen Unpivoted_Records und Records sollte eine Cross-Filter-Richtung von Beide (Doppelklick auf die Zeile, um es zu ändern).

Image shows the Edit Relationship dialog box, with Cross-Filter direction of both highlighted.

Beides ist nicht der Standard. Dies bedeutet, dass alle Filter, die auf Unpivoted_Records angewendet werden, rückwärts in die ursprüngliche Records-Tabelle propagiert werden und diese Tabelle ebenfalls filtern.

Picture shows 3 tables: Slicer, Records, and Records_Unpivoted. Slicer & Records are both joined with a line to Records_Unpivoted, but not to each other. The line between Records and Records_Unpvioted has a double arrow. Diagramm, wie Sie Ihre Beziehungen aussehen sollte: den eingekreisten Bereich bemerken, ist die Querfilter Richtung angibt „Both“

Schritt 3:

An diesem Punkt weg in Scheiben schneiden, Sie können die Records-Tabelle zusammen mit der Slicer-Tabelle in einem visuellen Fenster anzeigen. Wenn Sie einen Wert für den Slicer auswählen, wird die Records-Tabelle gefiltert. Sie müssen die unpivottierte Records-Tabelle nirgendwo anzeigen, da die Slicer-Auswahl bis zu Ihrer ursprünglichen Records-Tabelle gefiltert wird.

Picture of a tag slicer, with ThingB selected. The Records table is filtered to foobar.

Hinweis auf Kreuz Filter Anfahrt

Ein Quer Filter Beziehung beider können Nebenwirkungen haben, dass ich nicht abhängig von Ihrem aktuellen Datenmodell antizipieren. Dies sollte in diesem speziellen Beispiel nicht geschehen, da Records_Unpivoted nur zu dem einzigen Zweck existiert, die Beziehung zwischen der Slicer-Tabelle und der Records-Tabelle zu erleichtern. Wenn Sie jedoch eine Both-Beziehung an anderen Stellen verwenden und feststellen, dass Oddness mit dem Filtern von & fortschreitet, versuchen Sie, die Beziehung zurück auf single zu stellen, um zu sehen, ob die Cross-Filter-Richtung die Ursache ist.