Natywne pola obliczeniowe tabel przestawnych i elementy należące do pamięci podręcznej
Obliczanie z sum kontekstowych
Dla lokalnego obliczeniowego pola pamięci podręcznej natywny podgląd najpierw sumuje każde referencjonowane pole bazodanowe w żądanym kontekście liścia, sumy częściowej albo sumy całkowitej, a potem ewaluuje formułę; zależności mogą nie występować wśród wyświetlanych pól danych
Np. dwa rekordy z wartościami Amount/Units równymi 10/1 i 30/9 dają natywny wynik pola obliczeniowego 40/10 = 4, a suma całkowita ewaluuje własne sumy zależności zamiast dodawać wyświetlane ilorazy
Elementy obliczeniowe ewaluuje odwołania do elementów w każdym pełnym kontekście liścia, łącznie z pozostałymi osiami wierszy i kolumn; sumy częściowe i całkowite obejmują wynikające wkłady elementów, więc element-iloraz może wnieść sumę swoich ilorazów liściastych
Ręcznie ukryty element pozostaje dostępny, gdy inny element obliczeniowy się do niego odwołuje, a jego własny wkład pozostaje poza wyświetlanymi sumami; dla A=40 i B=60 ukrycie A nadal daje Combined=A+B wartość 100 i włącza Combined do widocznej sumy całkowitej
Gdy pola i elementy obliczeniowe współistnieją, wkłady elementów najpierw aktualizują sumy referencjonowanych pól bazodanowych, a potem pole obliczeniowe ewaluuje te zaktualizowane sumy kontekstowe
Elementy obliczeniowe mogą należeć do kilku pól niespogrupowanych; zachowana kolejność definicji pamięci podręcznej decyduje, która formuła pola zapisuje przecięcie ostatnie, więc przeniesienie definicji potrafi zmienić i to przecięcie, i wyświetlane sumy
Nierozwiązana zależność elementu obliczeniowego ewaluuje w chwili referencjonowania, łącznie z zależnością zdefiniowaną później w tej kolejności; element już obliczony we wcześniejszym kroku zachowuje swoją bieżącą wartość przecięcia, gdy inna formuła się do niego odwołuje
Natywne sumy pól ignorują źródłowe wartości Boolean i tekstowe, zachowują wartości liczbowe i datowe oraz propagują typowane błędy źródłowe; leniwe IF i IFERROR potrafią obsłużyć błąd bez ewaluowania nieużywanej gałęzi
Własność pamięci podręcznej i wiązanie
| Deklaracja publiczna | Kontrakt |
|---|---|
TXLSPivotCacheCalculatedItem | Definicja natywnego elementu obliczeniowego należąca do pamięci podręcznej; uzyskaj ją przez posiadającą pamięć podręczną i trzymaj pamięć podręczną przy życiu podczas korzystania z pożyczonego obiektu |
TXLSPivotCacheCalculatedItem.FieldIndex: Integer | Tylko do odczytu: tożsamość pola pamięci podręcznej numerowana od zera |
TXLSPivotCacheCalculatedItem.ItemIndex: Integer | Tylko do odczytu: tożsamość elementu współdzielonego numerowana od zera w ramach FieldIndex |
TXLSPivotCacheCalculatedItem.Formula: WideString | Formuła elementu natywnego do odczytu i zapisu; ustawienie jej zmienia model, podczas gdy podgląd albo jawne wiązanie waliduje składnię i cykle zależności przed obliczeniem |
TXLSPivotCacheCalculatedItem.Supported: Boolean | Tylko do odczytu: dostępność sparsowanej tożsamości obszaru, a nie gwarancja, że każda kombinacja formuły i widoku da się obliczyć |
TXLSPivotCacheCalculatedItem.RawXml: WideString | Tylko do odczytu: zachowany XML dla nieobsługiwanej definicji elementu obliczeniowego; znane typowane definicje używają pustego ciągu |
TXLSPivotCache.AddCalculatedItem(AFieldIndex, AItemIndex: Integer; const AFormula: WideString): TXLSPivotCacheCalculatedItem | Tworzy obsługiwaną typowaną definicję dla istniejącego elementu, odrzucając nieprawidłowe tożsamości, pustą formułę lub zduplikowaną tożsamość celu; zwrócony obiekt należy do pamięci podręcznej |
TXLSPivotCache.FindCalculatedItem(AFieldIndex, AItemIndex: Integer): TXLSPivotCacheCalculatedItem | Zwraca pożyczoną pasującą definicję albo nil |
TXLSPivotCache.CalculatedItemCount: Integer | Tylko do odczytu: liczba zachowanych definicji obsługiwanych i nieobsługiwanych |
TXLSPivotCache.CalculatedItems[Index: Integer]: TXLSPivotCacheCalculatedItem | Tylko do odczytu: pożyczony dostęp numerowany od zera do listy definicji |
TXLSPivotCache.ClearCalculatedItems | Zwalnia posiadane definicje i unieważnia pożyczone uchwyty; nie usuwa elementów współdzielonych ani nie ustanawia kompletności zapytań pamięci podręcznej |
TXLSPivotCache.MoveCalculatedItem(AIndex, ANewIndex: Integer) | Przenosi istniejącą definicję między pozycjami numerowanymi od zera w natywnej kolejności rozwiązywania, zachowując tożsamość pożyczonego obiektu; nieprawidłowe pozycje podnoszą EArgumentOutOfRangeException bez przenoszenia definicji |
TXLSPivotCache._AddUnsupportedCalculatedItem(const ARawXml: WideString) | Hak zachowania zorientowany na parser, który przechowuje nieznany XML i oznacza model zapytań pamięci podręcznej jako niekompletny |
TXLSPivotCache.Assign(Source: TXLSPivotCache) | Kopiuje w głąb definicje, pola, elementy współdzielone, indeksy rekordów i kontekst systemu dat; uchwyty źródła pozostają niezależne, a przypisanie tej samej pamięci podręcznej do siebie jest bezpieczne |
TXLSPivotTable.BindCalculatedItemsToCache | Waliduje i wiąże elementy obliczeniowe napisane w widoku na odłączonej pamięci podręcznej, po czym dołącza nowe elementy współdzielone i definicje do żywej pamięci podręcznej; błędy pozostawiają tożsamości elementów i definicje bez zmian, a istniejące uchwyty pól i elementów pozostają ważne |
Element napisany w widoku przez TXLSPivotField.AddCalculatedItem wymaga jawnego BindCalculatedItemsToCache przed natywną materializacją albo typowaną natywną rekonstrukcją; import obsługiwanej natywnej definicji pamięci podręcznej już dostarcza tę własność
Wiązanie pamięci podręcznej wpływa na każdy widok dzielący tę pamięć podręczną, więc wywołuj je jako operację autorską i trzymaj pożyczone uchwyty tylko do wyczyszczenia, przypisania albo zniszczenia odpowiadającej listy
Filtry elementów i transformacje wyświetlania
Porównania podpisów i wartości na polu elementów obliczeniowych wybierają wyświetlane elementy po uruchomieniu formuł elementów; odfiltrowane elementy źródłowe pozostają dostępne dla referencjonowanych formuł, a widoczne sumy częściowe i całkowite wykluczają bezpośrednie wkłady tych elementów
Porównanie wartości może wybrać obliczeniową miarę; każdy kandydacki element ewaluuje tę miarę ze swoich sum zależności kontekstowych, zamiast dodawać ilorazy rekordów źródłowych albo traktować formułę jako kolumnę rekordu pamięci podręcznej
Wyniki elementów obliczeniowych obsługują też modelowane transformacje ShowDataAs, łącznie z procentami, indeksem, różnicami, sumami narastającymi, procentami sum narastających i rangami; ukryte elementy pozostają poza widocznymi sekwencjami narastania i rang, podczas gdy odwołania formuł zachowują swoje pierwotne wartości
| Deklaracja publiczna | Kontrakt |
|---|---|
TXLSPivotFilter.DataFieldIsMeasureIndex: Boolean | Wybiera dziedzinę tożsamości DataField; False zachowuje istniejącą tożsamość pola pamięci podręcznej numerowaną od zera, a True wskazuje pozycję wyświetlanej miary danych numerowaną od zera i jest ustawiane przy imporcie natywnego iMeasureFld |
TXLSPivotFilter.SourceOrder: Integer | Globalna kolejność numerowana od zera do odczytu i zapisu, zachowana z natywnego elementu filters, domyślnie -1 przy braku; lokalne obliczenia i typowany zapis używają najpierw nieujemnego EvalOrder, potem SourceOrder, a na końcu stabilnej kolejności pola/listy |
Typowany natywny zapis konwertuje tożsamość pola pamięci podręcznej na jego wyświetlaną pozycję miary; pole pamięci podręcznej używane przez wiele miar danych wymaga jawnej pozycji miary, bo inaczej jego agregacja i tożsamość wyświetlania byłyby dwuznaczne
Excel potrafi zapisywać aktywne filtry z evalOrder=-1, zachowując ich kolejność ewaluacji przez sekwencję elementu filters; import, klonowanie i typowana rekonstrukcja zachowują tę sekwencję zamiast traktować te filtry jako nieaktywne
Zmiana definicji filtra albo jego zachowanej pozycji źródłowej w zaimportowanym zachowanym natywnym widoku wymaga typowanej rekonstrukcji; zwykła natywna adopcja waliduje zachowaną tożsamość filtra i odrzuca nieobsługiwane edycje przed zapisem komórek raportu
Podgląd, zapytania i systemy dat
function TXLSPivotTable.MakePreview(AWriter: TlxPivotResultWriter; ALayoutWriter: TlxPivotLayoutWriter; AUseNativeGrandTotals: Boolean = False; ABudget: TlxPivotQueryBudget = nil; ADateSystem: TXLSPivotDateSystem = xlpdsCache): Integer; function TXLSPivotTable.GetDataValue(const ADataField: WideString; const AConstraints: TXLSPivotDataConstraints; ABudget: TlxPivotQueryBudget; out AValue: Variant; ADateSystem: TXLSPivotDateSystem = xlpdsCache): Boolean;
MakePreview z AUseNativeGrandTotals=True korzysta z odłączonej tabeli i pamięci podręcznej, łącznie z dokładnymi natywnymi sumami i tożsamościami elementów obliczeniowych; zwykłe Make i domyślny MakePreview zachowują dotychczasowe obliczenia oparte na rekordach
GetDataValue używa natywnych sum kontekstowych, gdy pamięć podręczna ma pola albo elementy obliczeniowe, a GETPIVOTDATA dzieli tę ścieżkę zapytania; żadna z tych operacji nie odświeża danych źródłowych, nie przelicza badanych formuł arkusza ani nie zapisuje komórek raportu
| Deklaracja publiczna | Kontrakt |
|---|---|
TXLSPivotCache.Date1904: Boolean | Kontekst systemu dat źródła do odczytu i zapisu dla samodzielnych obliczeń natywnych; domyślnie False i wiąże się podczas importu Classic i XLSX, tworzenia pamięci podręcznej arkusza oraz kopiowania pamięci podręcznej XLSX |
TXLSPivotDateSystem | Typowany wybór systemu dat dla odłączonych natywnych podglądów i zapytań |
xlpdsCache | Użyj zachowanego kontekstu Date1904 pamięci podręcznej bez jego zmiany |
xlpds1900 | Projektuj system daty 1900 do odłączonego obliczenia |
xlpds1904 | Projektuj system daty 1904 do odłączonego obliczenia |
TryXLSXMakeNativePivotLayout(...; ADateSystem: TXLSPivotDateSystem = xlpdsCache): Boolean | Niższego poziomu pomocnik natywnego układu przyjmuje ten sam odłączony wybór systemu dat po swoich parametrach wyjściowych ResultXml i Reason |
TXLSGetDate1904 = function: Boolean of object | Callback metadanych kalkulatora odczytujący bieżący system dat posiadającego skoroszytu |
TXLSCalculator.OnGetDate1904: TXLSGetDate1904 | Opcjonalny pożyczony callback używany przez GETPIVOTDATA; nil korzysta z kontekstu pamięci podręcznej, a ewaluatory skoroszytu i ich widoki tylko do odczytu dostarczają bieżące ustawienie skoroszytu |
Samodzielni wywołujący muszą dostarczyć poprawny kontekst Date1904 pamięci podręcznej albo jawny wybór systemu dat; natywna materializacja i zapytania formuł należące do skoroszytu projektują bieżące ustawienie skoroszytu bez modyfikacji żywej pamięci podręcznej
Źródłowe wartości dat pozostają absolutnymi wartościami TDateTime w pamięci podręcznej, podczas gdy natywne formuły liczbowe korzystają z numerów seryjnych dat Excela; system 1904 odejmuje 1462 dni od każdej wartości daty, a konwersja 1900 obsługuje reprezentowalne daty przed marcem 1900
Własność zapisanego natywnego wyjścia rejestruje swój kontekst systemu dat i porównuje sformatowane wartości dat z ich zserializowanym ładunkiem liczbowym; zapis, ponowne otwarcie albo zmiana bazy dat skoroszytu zachowują legalną własność, podczas gdy zmienione ładunki dat, Boolean, błędów i tekstu nadal odrzucają nadpisanie
Budżety i nieobsługiwane wejścia
Opcjonalny callback TlxPivotQueryBudget otrzymuje przyrosty pracy i bieżący szacunek pamięci, łącznie z proponowanym odłączonym zrzutem i zapisem formuł; False przerywa z EXLSPivotQueryBudget, a wyjątki callbacków propagują się
Szerokości rekordów i tożsamości elementów bazodanowych są sprawdzane przed klonowaniem; kompilacja i ewaluacja formuł obciążają budżet pracy, a obliczenie zachowuje ograniczoną głębokość składni, tekst formuł, dziedziny elementów obliczeniowych i zapis akumulatorów
Planowanie elementów obliczeniowych limituje łączne dziedziny elementów, zapis podpisów i plany pól przed alokacją; natywna ewaluacja elementów i późne skany filtrów agregujących też odrzucają proponowaną pracę powyżej stałych limitów przed wejściem w te skany, a anulowanie budżetu pozostawia żywe maski elementów bez zmian
Parser formuł obsługuje stałe liczbowe, nazwy pól, nazwy w cudzysłowach, nazwy elementów kwalifikowane polem, arytmetykę i porównania, procent oraz ABS, SQRT, POWER, ROUND, MIN, MAX, SUM, IF, IFERROR, AND, OR i PI; nieznane funkcje, odwołania do komórek, tablice i niezwiązane nazwy są odrzucane zamiast dostarczać zgadywane wartości
Natywne pola obliczeniowe wymagają miar danych SUM i nie mogą być osiami wierszy, kolumn ani stron; elementy obliczeniowe wymagają zachowanych podpisów tekstowych w niespogrupowanych polach pamięci podręcznej, sum częściowych automatycznych albo SUM, miar SUM i obsługiwanej tożsamości obszaru pojedynczego elementu
Nieznane funkcje formuł, niezerowe fieldPosition obszaru, nieznane albo zniekształcone metadane obszaru, dwuznaczne tożsamości miar filtrów oraz wzajemnie aktywne podstawowe i rozszerzone transformacje wyświetlania są odrzucane jawnie; te restrykcje nie zmieniają nieobsługiwanej definicji w zwykły element
Późne filtrowanie agregujące elementów obliczeniowych obsługuje modelowane porównania wartości; starsze warianty filtrów zliczające, procentowe i sumujące oraz niemodelowane metadane Top n wymagają obsługiwanego natywnego modelu wyboru i są odrzucane zamiast zastępstwa porównaniami rekordów źródłowych
Zaimportowane surowe części zachowują nieobsługiwane przyszłe metadane dla zwykłej ochrony roundtrip; lokalne obliczenie, typowana rekonstrukcja i semantyczna ekstrakcja funkcji wymagają dostępnego modelu i nie odświeżają danych źródłowych, by wyprodukować brakujące rekordy pamięci podręcznej
Semantyczne definicje pamięci podręcznej tabel przestawnych obejmują tożsamość i formułę elementu obliczeniowego, kontekst systemu dat i odłączone ograniczone ładunki; niedostępne natywne rozszerzenia pozostają jawnym błędem semantycznym