Nativní počítaná pole kontingenčních tabulek a položky vlastněné mezipamětí
Výpočet ze součtů kontextu
U lokálního počítaného pole mezipaměti seštuje nativní náhled nejdřív každé odkazované databázové pole v požadovaném kontextu listu, mezisoučtu nebo celkového součtu a teprve potom vyhodnotí vzorec; závislosti mohou v zobrazených datových polích chybět
Například dva záznamy s hodnotami Amount/Units 10/1 a 30/9 produkují v nativním počítaném poli výsledek 40/10 = 4 a celkový součet vyhodnotí vlastní součty závislostí, místo aby sčítal zobrazené podíly
Počítané položky vyhodnocují odkazy na členy v každém kompletním kontextu listu, včetně ostatních os řádků a sloupců; mezisoučty i celkové součty zahrnují výsledné příspěvky členů, takže položka-podíl může přispět součtem svých listových podílů
Ručně skrytý člen zůstane dostupný, když na něj odkazuje jiná počítaná položka, zatímco jeho vlastní příspěvek zůstane mimo zobrazené součty; pro A=40 a B=60 dává skrytí A hodnotě Combined=A+B stále 100 a Combined se zahrne do viditelného celkového součtu
Když spolu koexistují počítaná pole i položky, nejdřív aktualizují příspěvky položek součty odkazovaných databázových polí a teprve potom vyhodnotí počítané pole tyto aktualizované kontextové součty
Počítané položky mohou patřit k několika neseskupeným polům; zachované pořadí definic v mezipaměti rozhoduje, který vzorec pole zapíše průnik naposledy, takže posun definice může změnit i daný průnik a zobrazené součty
Neresolvovaná závislost počítaného členu se vyhodnotí, když je odkazována, včetně závislosti definované později v tomto pořadí; člen už vypočtený v dřívějším kroku si při odkazu jiným vzorcem ponechá svou aktuální hodnotu průniku
Nativní součty polí ignorují logické a textové zdrojové hodnoty, zachovávají numerické a datumové hodnoty a propagují typované zdrojové chyby; líné IF a IFERROR zvládnou chybu bez vyhodnocení nepoužité větve
Vlastnictví mezipaměti a vazba
| Veřejná deklarace | Kontrakt |
|---|---|
TXLSPivotCacheCalculatedItem | Nativní definice počítaného členu vlastněná mezipamětí; získejte ji přes vlastnící mezipaměť a při práci s vypůjčeným objektem udržujte mezipaměť naživu |
TXLSPivotCacheCalculatedItem.FieldIndex: Integer | Identita pole mezipaměti jen pro čtení, číslovaná od nuly |
TXLSPivotCacheCalculatedItem.ItemIndex: Integer | Identita sdíleného členu jen pro čtení, číslovaná od nuly uvnitř FieldIndex |
TXLSPivotCacheCalculatedItem.Formula: WideString | Nativní vzorec členu pro čtení i zápis; nastavení změní model, zatímco náhled nebo explicitní vazba validuje syntaxi i cykly závislostí před výpočtem |
TXLSPivotCacheCalculatedItem.Supported: Boolean | Dostupnost parsované identity oblasti jen pro čtení, nikoli záruka, že se každá kombinace vzorce a zobrazení dá vyhodnotit |
TXLSPivotCacheCalculatedItem.RawXml: WideString | XML nepodporované definice počítané položky zachované jen pro čtení; známé typované definice používají prázdný řetězec |
TXLSPivotCache.AddCalculatedItem(AFieldIndex, AItemIndex: Integer; const AFormula: WideString): TXLSPivotCacheCalculatedItem | Vytvoří podporovanou typovanou definici pro existujícího člena a odmítne neplatné identity, prázdný vzorec či duplicitní cílovou identitu; vrácený objekt patří mezipaměti |
TXLSPivotCache.FindCalculatedItem(AFieldIndex, AItemIndex: Integer): TXLSPivotCacheCalculatedItem | Vrátí vypůjčenou odpovídající definici nebo nil |
TXLSPivotCache.CalculatedItemCount: Integer | Počet zachovaných podporovaných i nepodporovaných definic, jen pro čtení |
TXLSPivotCache.CalculatedItems[Index: Integer]: TXLSPivotCacheCalculatedItem | Vypůjčený přístup k seznamu definic jen pro čtení, číslovaný od nuly |
TXLSPivotCache.ClearCalculatedItems | Uvolní vlastněné definice a zneplatní vypůjčené handlery; neodstraní sdílené členy a nenastaví úplnost dotazu mezipaměti |
TXLSPivotCache.MoveCalculatedItem(AIndex, ANewIndex: Integer) | Přesune existující definici mezi pozicemi číslovanými od nuly v nativním pořadí řešení, se zachováním identity vypůjčeného objektu; neplatné pozice vyvolají EArgumentOutOfRangeException, aniž by se definice pohnuly |
TXLSPivotCache._AddUnsupportedCalculatedItem(const ARawXml: WideString) | Hook pro zachování orientovaný na parser, který si uchová neznámé XML a označí model dotazu mezipaměti za neúplný |
TXLSPivotCache.Assign(Source: TXLSPivotCache) | Zkopíruje do hloubky definice, pole, sdílené členy, indexy záznamů i kontext datumového systému; handlery zdroje zůstanou nezávislé a přiřazení téže mezipaměti sama sobě je bezpečné |
TXLSPivotTable.BindCalculatedItemsToCache | Validuje a sváže autorské počítané položky zobrazení na oddělenou mezipaměť, pak připojí nové sdílené členy a definice k živé mezipaměti; selhání ponechá identity členů a definice beze změny a stávající handlery polí i členů zůstanou platné |
Položka vytvořená autorsky přes TXLSPivotField.AddCalculatedItem potřebuje před nativní materializací nebo typovanou nativní rekonstrukcí explicitní BindCalculatedItemsToCache; import podporované nativní definice mezipaměti toto vlastnictví dodá sám
Vazba na mezipaměť ovlivní každé zobrazení sdílející tu mezipaměť, takže ji volejte jako autorskou operaci a vypůjčené handlery si udržujte jen do vymazání, přiřazení nebo zničení odpovídajícího seznamu
Filtry členů a transformace zobrazení
Porovnání titulků a hodnot na poli počítaných položek vyberou zobrazené členy až po běhu vzorců členů; filtrované zdrojové členy zůstanou dostupné odkazovaným vzorcům a viditelné mezisoučty a celkové součty vyloučí jejich přímé příspěvky
Porovnání hodnoty může vybrat počítanou míru; každý kandidátní člen tuto míru vyhodnotí ze součtů závislostí svého kontextu, místo aby sčítal podíly zdrojových záznamů nebo bral vzorec jako sloupec záznamu mezipaměti
Výsledky počítaných položek podporují i modelované transformace ShowDataAs, včetně procent, indexu, rozdílů, průběžných součtů, procent průběžných součtů a pořadí; skryté členy zůstávají mimo viditelné průběžné pořadí i pořadí rank, zatímco odkazy ve vzorcích si ponechají původní hodnoty
| Veřejná deklarace | Kontrakt |
|---|---|
TXLSPivotFilter.DataFieldIsMeasureIndex: Boolean | Vybírá identitní doménu DataField; False zachová stávající identitu pole mezipaměti od nuly, True identifikuje pozici zobrazené datové míry od nuly a nastavuje se při importu nativního iMeasureFld |
TXLSPivotFilter.SourceOrder: Integer | Globální pořadí od nuly pro čtení i zápis, zachované z nativního elementu filtrů, s výchozí hodnotou -1 při absenci; lokální výpočet a typovaný zápis používají nejdřív nezáporné EvalOrder, pak SourceOrder a nakonec stabilní pořadí pole/seznamu |
Typovaný nativní zápis převede identitu pole mezipaměti na pozici jeho zobrazené míry; pole mezipaměti používané více datovými mírami potřebuje explicitní pozici míry, protože jeho agregační a zobrazovací identita by jinak byla dvojznačná
Excel umí uložit aktivní filtry s evalOrder=-1, se zachováním jejich vyhodnocovacího pořadí skrze sekvenci elementu filtrů; import, klonování i typovaná rekonstrukce si tuto sekvenci ponechají, místo aby tyto filtry braly jako neaktivní
Změna definice filtru nebo jeho zachované zdrojové pozice na importovaném zachovaném nativním zobrazení vyžaduje typovanou rekonstrukci; obyčejná nativní adopce validuje zachovanou identitu filtru a nepodporované úpravy odmítne dřív, než dojde na zápis buněk sestavy
Náhled, dotazy a datumové systémy
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 s AUseNativeGrandTotals=True použije oddělenou tabulku a mezipaměť, včetně přesných nativních součtů a identit počítaných položek; obyčejné Make a výchozí MakePreview si ponechají stávající chování výpočtu ze záznamů
GetDataValue používá nativní kontextové součty, když mezipaměť má počítaná pole nebo položky, a GETPIVOTDATA sdílí tuto dotazovací cestu; ani jedna operace neaktualizuje zdrojová data, nepřepočítá zkoumané vzorce listu a nezapisuje buňky sestavy
| Veřejná deklarace | Kontrakt |
|---|---|
TXLSPivotCache.Date1904: Boolean | Kontext zdrojového datumového systému pro samostatné nativní výpočty, ke čtení i zápisu; výchozí hodnota je False a váže se při importu Classic a XLSX, při tvorbě mezipaměti listu i při kopírování mezipaměti XLSX |
TXLSPivotDateSystem | Typovaná volba datumového systému pro oddělené nativní náhledy a dotazy |
xlpdsCache | Použije zachovaný kontext Date1904 mezipaměti, aniž by jej změnila |
xlpds1900 | Promítne datumový systém 1900 do odděleného výpočtu |
xlpds1904 | Promítne datumový systém 1904 do odděleného výpočtu |
TryXLSXMakeNativePivotLayout(...; ADateSystem: TXLSPivotDateSystem = xlpdsCache): Boolean | Nižší úroveň pomocníka nativního rozvržení přijme tutéž oddělenou volbu datumového systému za svými výstupními parametry ResultXml a Reason |
TXLSGetDate1904 = function: Boolean of object | Zpětné volání metadat kalkulátoru, které přečte aktuální datumový systém vlastnícího sešitu |
TXLSCalculator.OnGetDate1904: TXLSGetDate1904 | Volitelné vypůjčené zpětné volání používané GETPIVOTDATA; nil použije kontext mezipaměti, zatímco vyhodnocovače sešitu a jejich zobrazení jen pro čtení dodají aktuální nastavení sešitu |
Samostatní volající musí dodávat správný kontext Date1904 mezipaměti nebo explicitní volbu datumového systému; nativní materializace a vzorcové dotazy vlastněné sešitem promítnou aktuální nastavení sešitu, aniž by změnily živou mezipaměť
Datumové zdrojové hodnoty zůstávají v mezipaměti absolutními hodnotami TDateTime, zatímco nativní numerické vzorce používají excelová serialní čísla dat; systém 1904 odečítá u každé hodnoty data 1462 dní a konverze 1900 zvládne reprezentovatelná data před březnem 1900
Vlastnictví uloženého nativního výstupu si zaznamená kontext datumového systému a porovnává stylizované datumové hodnoty vůči jejich serializovanému numerickému payloadu; ukládání, opětovné otevření i změna datumového základu sešitu legitimní vlastnictví zachovají, zatímco změněné datumové, logické, chybové i textové payloady přepis stále odmítnou
Rozpočty a nepodporovaný vstup
Volitelné zpětné volání TlxPivotQueryBudget dostává přírůstky práce a aktuální odhad paměti, včetně navrhovaného odděleného snímku a úložiště vzorců; False přeruší s EXLSPivotQueryBudget a výjimky zpětných volání se propagují
Šířky záznamů a identity databázových členů se kontrolují před klonováním; kompilace a vyhodnocování vzorců účtuje práci a výpočet si drží ohraničenou hloubku syntaxe, text vzorců, domény počítaných členů i úložiště akumulátorů
Plánování počítaných položek omezuje kombinované domény členů, úložiště titulků a plány polí před alokací; nativní vyhodnocování členů i pozdější skeny agregovaných filtrů odmítnou navrhovanou práci nad svými fixními limity dřív, než do nich vstoupí, a zrušení rozpočtu ponechá živé masky členů beze změny
Parser vzorců podporuje numerické konstanty, názvy polí, názvy v uvozovkách, názvy členů kvalifikované polem, aritmetiku a porovnání, procento a ABS, SQRT, POWER, ROUND, MIN, MAX, SUM, IF, IFERROR, AND, OR a PI; neznámé funkce, odkazy na buňky, pole i nevázané názvy se odmítnou, místo aby dodaly odhadnuté hodnoty
Nativní počítaná pole vyžadují datové míry SUM a nemohou být osami řádků, sloupců ani stránek; počítané položky vyžadují zachované řetězcové titulky v neseskupených polích mezipaměti, automatické nebo SUM mezisoučty, míry SUM a podporovanou identitu oblasti s jedním členem
Neznámé funkce vzorců, nenulové fieldPosition oblasti, neznámá či poškozená metadata oblastí, dvojznačné identity měr ve filtrech a vzájemně aktivní základní i rozšířené transformace zobrazení se odmítnou výslovně; tato omezení nepřevedou nepodporovanou definici na obyčejnou položku
Pozdní filtrování agregátů počítaných členů podporuje modelovaná porovnání hodnot; starší varianty filtrů počtu, procenta a součtu a nemodelovaná metadata Top n vyžadují podporovaný nativní model výběru a odmítnou se, místo aby nahradily porovnání zdrojových záznamů
Importované surové části si pro obyčejné roundtrip zachování ponechávají nepodporovaná future metadata; lokální výpočet, typovaná rekonstrukce i extrakce sémantických funkcí vyžadují dostupný model a neaktualizují zdrojová data, aby vyrobily chybějící záznamy mezipaměti
Sémantické definice mezipaměti kontingenčních tabulek zahrnují identitu a vzorec počítané položky, kontext datumového systému a oddělené ohraničené payloady; nedostupné nativní rozšíření zůstává výslovnou sémantickou chybou