Wo Flaggen in Qlik Sense Datenladeskript platzieren?

stimmen
0

Das Ende Ziel und Kontext

Hallo ihr alle, vielen Dank für das Lesen! Das Endprodukt in meinem Qlik Blatt, einen Tisch haben, die eine „% Covered“ Spalte zeigt. Was ist der Prozentsatz der Elemente in einer Abteilung, die das Inventar größer oder gleich als die Anforderung ist.

Hier ist ein Beispiel dafür, was das Ende Tisch wie (das prozentuale Anteil Covered Feld aussehen soll, ist ein berechnetes Feld:

| Department | Count of Products | Percent Covered |
|------------|-------------------|-----------------|
| Bio        | 34858             | 89.40%          |
| Mech       | 50119             | 92.05%          |
| Admin      | 560               | 98.22%          |

Um hoffentlich besser darzustellen, ist es das, was es aussehen würde, wenn Sie sind die Berechnung auf eine Tabelle von Produktnummern anzuwenden:

| Product Number | Inventory | Requirement | Percent Covered |
|----------------|-----------|-------------|-----------------|
| 444391         | 112       | 113         | 99.11%          |
| 444569         | 86        | 350         | 24.57%          |
| 443551         | 12        | 11          | 109.09%         |

Das Problem

Obwohl es in Tests mit kleinen Datenmengen arbeitet , wenn sie mit den realen Daten geladen ist es zu viel für Qlik mich in der Ausdrücken in den Charts zu handhaben und Timeout - Fehler führt:

Count({<ProductNumber = {=[Inventory] >= [Requirement]}>} ProductNumber) / Count(ProductNumber)

Um dies zu umgehen, habe ich versucht , die oben genannten Arbeiten in der Datenladeskript zu tun. Mit Hilfe der Qlik docs und Community Forum, ist dies offenbar soll etwas arbeiten: Im Data Loader Skript: If([Inventory] >= [Requirement], 1, 0) as Flag In dem Ausdruck:Count({<Flag = {'1'}>} ProductNumber)/Count(ProductNumber)

Das Problem ist, egal wo ich dies im Skript platzieren, es wirft Fehler.

Was habe ich versucht,

Ich habe alle diese Kombinationen versucht, mit und ohne Semikolons.

[MyAwesomeSheet]:
If([Inventory] >= [Requirement], 1, 0) as Flag
LOAD
    [ProductNumber],
    [Requirement],
    [Inventory],
    [Department],
 FROM [lib://Desktop/fake-example-data.xlsx]
(ooxml, embedded labels, table is [MyAwesomeTable]);

Fehler: „Die Daten wurde nicht geladen Bitte korrigieren Sie die Fehler und versuchen Sie es erneut zu laden.“

[MyAwesomeSheet]:
LOAD
    [ProductNumber],
    [Requirement],
    [Inventory],
    [Department],
 FROM [lib://Desktop/fake-example-data.xlsx]
If([Inventory] >= [Requirement], 1, 0) as Flag
(ooxml, embedded labels, table is [MyAwesomeTable]);

Fehler: „Die Daten wurde nicht geladen Bitte korrigieren Sie die Fehler und versuchen Sie es erneut zu laden.“

[MyAwesomeSheet]:
LOAD
    [ProductNumber],
    [Requirement],
    [Inventory],
    [Department],
 FROM [lib://Desktop/fake-example-data.xlsx]
(ooxml, embedded labels, table is [MyAwesomeTable]);
If([Inventory] >= [Requirement], 1, 0) as Flag

Fehler: „Unexpected token: ''`


Jede Hilfe wäre sehr dankbar! Danke!

Veröffentlicht am 09/10/2019 um 18:55
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
1

Nach dem, was Sie es versucht haben, gibt zwei Möglichkeiten:

Innerhalb Last

Sie können das Flag-Feld in der Ladeanweisung selbst erstellen

[MyAwesomeSheet]:
LOAD
    [ProductNumber],
    [Requirement],
    [Inventory],
    [Department],
    If([Inventory] >= [Requirement], 1, 0) as Flag
 FROM [lib://Desktop/fake-example-data.xlsx]
(ooxml, embedded labels, table is [MyAwesomeTable]);

Vorangehende Last

Ein andere Technik verwendet vorhergehende Last

Sie können eine viele vorhergehenden Lasten, wie Sie wollen. Jede Last ist, Laden von Daten von den vorangehenden Belastungen darunter

[MyAwesomeSheet]:
Load
    *,
    If([Inventory] >= [Requirement], 1, 0) as Flag
LOAD
    [ProductNumber],
    [Requirement],
    [Inventory],
    [Department],
 FROM [lib://Desktop/fake-example-data.xlsx]
(ooxml, embedded labels, table is [MyAwesomeTable]);
Beantwortet am 09/10/2019 um 20:56
quelle vom benutzer

stimmen
0

Die Antwort oben für die Flagge innerhalb der Last ist richtig, aber für die Zukunft gibt es ein Komma direkt vor dem aus dem dem Ladefehler werfen.

LOAD
    [ProductNumber],
    [Requirement],
    [Inventory],
    [Department],
FROM [lib://Desktop/fake-example-data.xlsx]

SOLLTE SEIN:

LOAD
    [ProductNumber],
    [Requirement],
    [Inventory],
    [Department]
FROM [lib://Desktop/fake-example-data.xlsx]
Beantwortet am 22/10/2019 um 19:50
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more