Omówienie tabel i rekordów aplikacji kanwy w usłudze Power Apps

Usługa Power Apps umożliwia tworzenie aplikacji kanwy, które korzystają z informacji zawartych w programach Microsoft Excel, SharePoint, SQL Server i kilku innych źródłach danych przechowujących dane w rekordach i tabelach. Aby wydajnie korzystać z danych tego typu, warto zapoznać się z pojęciami dotyczącymi takich struktur.

  • Rekord zawiera co najmniej jedną kategorię informacji dotyczących osoby, miejsca lub rzeczy. Na przykład rekord może zawierać imię i nazwisko, adres e-mail i numer telefonu jednego klienta. W innych narzędziach rekordy mogą funkcjonować pod nazwą „wiersz”, „element” lub „pozycja”.
  • Tabela zawiera jeden rekord lub wiele rekordów, które zawierają te same kategorie informacji. Tabela może na przykład zawierać imiona i nazwiska, adresy e-mail i numery telefonów 50 klientów.

W swojej aplikacji będziesz używać formuł do tworzenia i aktualizowania rekordów i tabel oraz manipulowania nimi. Dane będą prawdopodobnie odczytywane z zewnętrznego źródła danych (tabeli rozszerzonej) i zapisywane w nim. Ponadto możesz utworzyć co najmniej jedną tabelę wewnętrzną, czyli kolekcję.

Można utworzyć rozmaite formuły przyjmujące nazwę tabeli jako argument (analogicznie do formuł w programie Excel, które używają odwołań do komórek jako argumentów). Niektóre formuły w usłudze Power Apps zwracają tabelę, która odzwierciedla inne określone przez Ciebie argumenty. Można na przykład utworzyć formułę:

  • w celu zaktualizowania rekordu w tabeli, określając tę tabelę jako jeden z wielu argumentów funkcji Patch
  • w celu dodania lub usunięcia kolumn w tabeli albo zmiany ich nazw, określając tę tabelę jako argument funkcji AddColumns, DropColumns lub RenameColumns. Żadna z tych funkcji nie modyfikuje oryginalnej tabeli. Zamiast tego funkcja zwraca inną tabelę utworzoną na podstawie innych określonych argumentów.

Elementy tabeli

Rekordy

Każdy rekord zawiera co najmniej jedną kategorię informacji dotyczących osoby, miejsca lub rzeczy. W powyższym przykładzie przedstawiono rekordy dotyczące poszczególnych produktów (Chocolate, Bread, and Water) i kolumny zawierające różne kategorie informacji (Price, Quantity on Hand i Quantity on Order).

W formule można się odwołać do samego rekordu, z pominięciem kontekstu tabeli. W tym celu należy użyć nawiasów klamrowych. Na przykład rekord { Name: "Strawberries", Price: 7.99 } nie jest skojarzony z tabelą. Pamiętaj, że nazwy pól, takie jak Name i Price w tym przykładzie, nie są ujęte w cudzysłów.

Pola

Pole to fragment informacji zawartych w rekordzie. Pole takie można sobie wyobrazić jako wartość w kolumnie odpowiadająca określonemu rekordowi.

Podobnie jak w przypadku kontrolek, do pola lub rekordu można się odwołać za pomocą elementu . (operatora) zastosowanego dla rekordu. Na przykład funkcja First(Products).Name zwraca pole Name odpowiadające pierwszemu rekordowi w tabeli Products.

Pole może zawierać inny rekord lub tabelę, co widać w przykładzie dotyczącym funkcji GroupBy. Można zagnieździć dowolną liczbę poziomów rekordów i tabele.

Kolumny

Kolumna odwołuje się do tego samego pola dla co najmniej jednego rekordu w tabeli. W powyższym przykładzie każdy produkt ma pole ceny — cena znajduje się w tej samej kolumnie dla wszystkich produktów. Powyższa tabela ma cztery kolumny, przedstawione w poziomie u góry:

  • Nazwisko
  • Cena
  • Ilość rzeczywista
  • Ilość w zamówieniu

Nazwa kolumny odzwierciedla pola w niej zawarte.

Wszystkie wartości w kolumnie reprezentują ten sam typ danych. W powyższym przykładzie kolumna „Quantity on Hand” zawiera tylko liczby. Nie zawiera ona ciągów — dla żadnego rekordu nie zobaczymy zatem w tej kolumnie ciągu typu „12 jednostek”. Pole może być także puste.

W niektórych narzędziach kolumny są nazywane „polami”.

Uwaga

W przypadku źródeł danych programu SharePoint i Excel, które zawierają nazwy kolumn ze spacjami, usługa Power Apps zastępuje każdą spację wartością „_x0020_”. Na przykład tekst „Nazwa kolumny” w SharePoint lub Excel będzie widoczny jako „Nazwa_x0020_kolumny” w Power Apps w przypadku wyświetlania w układzie danych lub stosowania w formule.

Table

Tabela składa się z co najmniej jednego rekordu. Każdy rekord ma wiele pól mających spójne nazwy dla wszystkich rekordów.

Każda tabela przechowywana w źródle danych lub kolekcji ma nazwę. Nazwa umożliwia odwoływanie się do tabeli i przekazywanie jej do funkcji przyjmujących tabele jako argumenty. Tabele mogą być również wynikiem działania funkcji lub formuły.

Jak przedstawiono w poniższym przykładzie, tabelę można wyrazić w formule, korzystając z funkcji Table i zestawu rekordów ujętych w nawiasy klamrowe:

Table( { Value: "Strawberry" }, { Value: "Vanilla" } )

Można również zdefiniować jednokolumnową tabelę, korzystając z nawiasów kwadratowych. Odpowiednikiem powyższych danych byłby następujący zapis:

[ "Strawberry", "Vanilla" ]

Formuły tabel

W programie Excel i usłudze Power Apps można za pomocą formuł w podobny sposób modyfikować liczby i ciągi tekstowe:

  • W programie Excel można na przykład wpisać wartość typu 42 w komórce A1, a następnie w innej komórce wpisać formułę, taką jak A1+2, w celu uzyskania wartości 44.
  • W usłudze Power Apps ustaw właściwość Default elementu Slider1 na wartość 42 i ustaw właściwość Text etykiety na wartość Slider1.Value + 2, aby została wyświetlona wartość 44.

W obu przypadkach obliczona wartość zmienia się automatycznie, jeśli zmienisz wartości argumentów (np. liczbę w komórce A1 lub wartość elementu Slider1).

W podobny sposób można za pomocą formuł korzystać z danych w tabelach i rekordach oraz manipulować nimi. Nazwy tabel mogą stanowić argumenty w niektórych formułach, takich jak formuła Min(Catalog, Price) umożliwiająca przedstawienie najniższej wartości w kolumnie Price tabeli Catalog. Inne formuły zwracają wyniki w postaci całych tabel. Na przykład formuła RenameColumns(Catalog, "Price", "Cost") zwraca wszystkie rekordy z tabeli Catalog, ale zmienia nazwę kolumny Price na Cost.

Podobnie jak w przypadku liczb, formuły obejmujące tabele i rekordy są automatycznie przeliczane, jeśli zmieni się źródłowa tabela lub rekord. Jeśli koszt produktu w tabeli Catalog zostanie zmniejszony poniżej poprzedniej wartości minimalnej, wartość zwrócona przez formułę Min zostanie automatycznie zmieniona z uwzględnieniem nowego kosztu.

Przyjrzyjmy się kilku prostym przykładom.

  1. Utwórz pustą aplikację na telefon, a następnie dodaj pionową kontrolkę Galeria zawierającą inne kontrolki.

    Domyślnie na ekranie jest pokazywany symbol zastępczy w postaci tekstu z tabeli o nazwie CustomGallerySample. Dla właściwości Items kontrolki ekranu Galeria zostaje automatycznie ustawiona ta tabela.

    Uwaga

    W celach ilustracyjnych niektóre kontrolki zostały nieco inaczej rozmieszczone oraz powiększone.

  2. Zamiast ustawiać dla właściwości Items nazwę tabeli ustaw dla niej formułę, która zawiera nazwę tabeli jako argument, jak w poniższym przykładzie:

    Sort(CustomGallerySample, SampleHeading, Descending)

    Ta formuła obejmuje funkcję Sort, która pobiera nazwę tabeli jako swój pierwszy argument i nazwę kolumny w tej tabeli jako swój drugi argument. Funkcja obsługuje również opcjonalny trzeci argument, który określa, że chcesz sortować dane w kolejności malejącej.

  3. Ustaw dla właściwości Items formułę, która pobiera jako argument formułę z poprzedniego kroku i zwraca tabelę, jak w poniższym przykładzie:

    FirstN(Sort(CustomGallerySample, SampleHeading, Descending), 2)

    Zastosowana w tej formule funkcja FirstN umożliwia pokazanie określonej liczby rekordów w tabeli. Pierwszym argumentem formuły FirstN może być funkcja Sort, a drugim — liczba (w naszym przypadku jest to liczba 2), która określa liczbę pokazywanych rekordów.

    Cała formuła zwraca tabelę zawierającą dwa pierwsze rekordy tabeli CustomGallerySample posortowane według kolumny SampleHeading w kolejności malejącej.

Funkcje tabel i właściwości kontrolek

Rozważ użycie funkcji Lower. Jeśli zmienna welcome zawiera ciąg tekstowy „Hello, World”, formuła Lower(welcome) zwraca wartość „hello, world”. Ta funkcja w żaden sposób nie zmienia wartości w zmiennej. Lower jest funkcją czystą, która jedynie przetwarza dane wejściowe i generuje dane wyjściowe. To wszystko; nie ma żadnych efektów ubocznych. Wszystkie funkcje w programie Excel i większość funkcji usługi Power Apps to czyste funkcje, które umożliwiają automatyczne ponowne obliczanie wartości dla skoroszytu lub aplikacji.

Usługa Power Apps oferuje zestaw funkcji, które operują na tabelach w taki sam sposób. Te funkcje umożliwiają pobieranie tabel jako danych wyjściowych, a następnie filtrowanie, sortowanie, przekształcanie, redukowanie i podsumowywanie całych tabel danych. W rzeczywistości funkcji Lower i wiele innych funkcji, które zwykle akceptują pojedynczą wartość, może również akceptować jednokolumnową tabelę jako dane wejściowe.

  • Sort, Filter — sortuje i filtruje rekordy.
  • FirstN, LastN — zwraca pierwsze N lub ostatnie N rekordy/rekordów tabeli.
  • Abs, Sqrt, Round, RoundUp, RoundDown — operacje arytmetyczne na poszczególnych rekordach jednokolumnowej tabeli dające w wyniku jednokolumnową tabelę wyników.
  • Left, Mid, Right, Replace, Substitute, Trim, Lower, Upper, Proper — manipulacje na ciągach poszczególnych rekordów jednokolumnowej tabeli dające w wyniku jednokolumnową tabelę ciągów.
  • Len — w przypadku kolumny ciągów zwraca jednokolumnową tabelę zawierająca długość każdego ciągu.
  • Concatenate — łączy wiele kolumn ciągów, dając w wyniku jednokolumnową tabelę ciągów.
  • AddColumns, DropColumns, RenameColumns, ShowColumns — manipuluje kolumną tabeli, dając w wyniku nową tabelę z innymi kolumnami.
  • Distinct — usuwa zduplikowane rekordy.
  • Shuffle — rozmieszcza rekordy w kolejności losowej.
  • HashTags — wyszukuje hasztagi w ciągu.
  • Errors — udostępnia informacje o błędach podczas pracy ze źródłem danych.

Wiele z tych funkcji tabeli akceptuje jednokolumnową tabelę jako dane wejściowe. Jeśli cała tabela zawiera tylko jedną kolumnę, można określić ją według nazwy. Jeśli tabela zawiera wiele kolumn, można określić jedną z tych kolumn, korzystając ze składni Table.Column. Na przykład Products.Name zwraca tabelę jednokolumnową wyłącznie z wartościami Nazwa z tabeli Produkty.

Można całkowicie zmienić kształt tabeli, używając funkcji AddColumns, RenameColumns, ShowColumns lub DropColumns. Te funkcje również zmieniają tylko dane wyjściowe, a nie źródło.

Właściwości kontrolek mogą być również tabelami:

  • Items — ma zastosowanie do galerii, pól list i pól kombi. Ta właściwość definiuje tabelę wyświetlaną w galerii lub na liście.
  • SelectedItems — ma zastosowanie do pól list i pól kombi. Ta właściwość definiuje tabelę elementów, które zostały wybrane przez użytkownika, jeśli włączono opcję SelectMultiple.

Formuły behawioralne

Inne funkcje zostały zaprojektowane specjalnie do modyfikowania danych i powodują efekty uboczne. Ponieważ te funkcje nie są funkcjami czystymi, należy je starannie skompilować. Nie mogą one brać udziału w automatycznym przeliczaniu wartości w aplikacji. Tych funkcji można używać tylko w formułach behawioralnych.

  • Collect, Clear, ClearCollect — tworzy kolekcje, usuwa je oraz dodaje do nich dane.
  • Patch — modyfikuje jedno lub kilka pól w rekordzie.
  • Update, UpdateIf — aktualizuje rekordy spełniające co najmniej jedno określone kryterium.
  • Remove, RemoveIf — usuwa rekordy spełniające co najmniej jedno określone kryterium.

Formuły dotyczące rekordów

Można także utworzyć formułę, która oblicza dane dla indywidualnego rekordu, pobiera indywidualny rekord jako argument i zwraca wynik w postaci indywidualnego rekordu. W naszym przykładzie z galerią użyjemy właściwości Gallery1.Selected w celu wyświetlenia informacji z dowolnego rekordu wybranego przez użytkownika w tej galerii.

  1. Dodaj przycisk i ustaw dla jego właściwości OnSelect następującą formułę:
    Collect( SelectedRecord, Gallery1.Selected )

  2. Trzymając wciśnięty klawisz Alt, kliknij przycisk.

  3. W menu Plik wybierz pozycję Kolekcje.

Formuła zwraca rekord obejmujący nie tylko dane z rekordu, który jest aktualnie wybrany w galerii, ale również każdą kontrolkę w tej galerii. W naszym przykładzie rekord zawiera zarówno kolumnę SampleText, która odpowiada kolumnie SampleText w oryginalnej tabeli, jak również kolumnę Subtitle1, która reprezentuje etykietę pokazującą dane z tej kolumny. Wybierz ikonę tabeli w kolumnie Subtitle1, aby przejść do szczegółów tych danych.

Uwaga

Kolumna Subtitle1 może być nazwana Subtitle2 lub podobnie, jeśli dodane elementy różnią się od tych określonych w niniejszym temacie.

Po wybraniu rekordu można wyodrębnić z niego poszczególne pola przy użyciu elementu . (operator).

  1. Dodaj kontrolkę Etykieta i umieść ją poniżej galerii i przycisku.

  2. Ustaw właściwość Text kontrolki etykiety na następujące wyrażenie:
    "Selected: " & Gallery1.Selected.SampleHeading

Z właściwości Selected (czyli rekordu) została wyodrębniona właściwość SampleHeading.

Rekord może służyć także za kontener ogólnego zastosowania dla pokrewnych wartości nazwanych.

  • Jeśli tworzysz formułę korzystającą z funkcji UpdateContext i Navigate, możesz za pomocą rekordu zebrać zmienne kontekstowe, które chcesz zaktualizować.
  • Korzystając z właściwości Updates kontrolki Formularz edycji, można zebrać informacje o zmianach wprowadzonych w formularzu przez użytkownika.
  • Funkcja Patch umożliwia zaktualizowanie źródła danych oraz scalenie rekordów.

W takich sytuacjach rekord nie jest częścią tabeli.

Funkcje rekordów i właściwości kontrolek

Funkcje, które zwracają rekordy:

  • FirstN, LastN — zwraca pierwszy lub ostatni rekord (lub rekordy) tabeli.
  • Lookup — zwraca pierwszy rekord z tabeli, która spełnia co najmniej jedno kryterium.
  • Patch — aktualizuje źródło danych lub scala rekordy.
  • Defaults — zwraca wartości domyślne źródła danych.

Właściwości, które zwracają rekordy:

  • Selected — ma zastosowanie do galerii i pól listy. Dotyczy obecnie wybranego rekordu.
  • Updates — ma zastosowanie do galerii. Zbiera wszystkie zmiany, które użytkownik wprowadza w formularzu wprowadzania danych.
  • Update — ma zastosowanie do kontrolek obsługujących dane wejściowe, takich jak kontrolki wprowadzania tekstu i suwaki. Konfiguruje poszczególne właściwości, które mają zostać zebrane w galerii.

Zakres rekordów

Niektóre funkcje działają przez ocenę formuły względem wszystkich poszczególnych rekordów tabeli. Wyniki formuły są używane na różne sposoby:

  • AddColumns — formuła udostępnia wartość dodanego pola.
  • Average, Max, Min, Sum, StdevP, VarP — formuła udostępnia wartość do zagregowania.
  • Filter, Lookup — formuła określa, czy rekord powinien być uwzględniony w danych wyjściowych.
  • Concat — formuła określa ciągi, które mają zostać połączone.
  • Distinct — formuła zwraca wartość służącą do zidentyfikowania zduplikowanych rekordów.
  • ForAll — formuła może zwrócić dowolną wartość. Możliwe są efekty uboczne.
  • Sort — formuła zawiera wartość, według której rekordy mają zostać posortowane.
  • With — formuła może zwrócić dowolną wartość. Możliwe są efekty uboczne.

W ramach tych formuł można odwoływać się do pól przetwarzanego rekordu. Każda z tych funkcji tworzy „zakres rekordów”, w którym jest oceniana formuła. Pola rekordu stanowią identyfikatory najwyższego poziomu. Z całej aplikacji możesz też odwoływać się do właściwości kontrolki i innych wartości.

Za przykład niech posłuży tabela Products:

Aby utworzyć tę przykładową tabelę w aplikacji, wstaw przycisk, ustaw właściwość OnSelect na tę formułę, a następnie wybierz przycisk (kliknij go w czasie, gdy klawisz Alt jest wciśnięty w programie Power Apps Studio):

Set( Products,
    Table(
        { Product: "Widget",    'Quantity Requested': 6,  'Quantity Available': 3 },
        { Product: "Gadget",    'Quantity Requested': 10, 'Quantity Available': 20 },
        { Product: "Gizmo",     'Quantity Requested': 4,  'Quantity Available': 11 },
        { Product: "Apparatus", 'Quantity Requested': 7,  'Quantity Available': 6 }
    )
)

Aby sprawdzić, czy w przypadku jakiegokolwiek produktu nie zażądano ilości większej niż dostępna, można posłużyć się następującą funkcją:

Filter( Products, 'Quantity Requested' > 'Quantity Available' )

Pierwszy argument, który zostanie uwzględniony w funkcji Filter, to tabela rekordów objętych działaniami, a drugi argument to formuła. Funkcja Filter pozwala uzyskać zakres rekordów do oceny tej formuły. Zakres udostępnia pola poszczególnych rekordów — w tej sytuacji są to pola Product, Quantity Requested i Quantity Available. Wynik porównania określa, czy każdy rekord powinien być uwzględniony w wyniku funkcji:

W ramach tego przykładu możemy też obliczyć ilość poszczególnych produktów, jaką należy zamówić:

AddColumns( 
    Filter( Products, 'Quantity Requested' > 'Quantity Available' ), 
    "Quantity To Order", 'Quantity Requested' - 'Quantity Available'
)

Do wyniku zostaje dodana kolumna obliczeniowa. Funkcja AddColumns ma własny zakres rekordów służący do obliczenia różnicy między ilością żądaną i ilością dostępną.

Na koniec możemy zredukować tabelę wynikową, aby zawierała tylko potrzebne kolumny:

ShowColumns(
    AddColumns(
        Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
        "Quantity To Order", 'Quantity Requested' - 'Quantity Available'
    ),
    "Product",
    "Quantity To Order"
)

Zauważ, że powyżej w niektórych miejscach jest używany cudzysłów podwójny ("), a w innych — cudzysłów pojedynczy ('). Podczas odwoływania się do wartości obiektu, takiego jak pole lub tabela, którego nazwa zawiera spację, wymagany jest cudzysłów pojedynczy. Cudzysłów podwójny jest używany, gdy nie odwołujemy się do wartości obiektu, ale do samego obiektu. Szczególnie dotyczy to sytuacji, w których obiekt jeszcze nie istnieje (np. w przypadku funkcji AddColumns).

Uściślanie

Nazwy pól dodane za pomocą zakresu rekordów przesłaniają te same nazwy z innych miejsc w aplikacji. W takim przypadku dostęp do wartości znajdujących się poza zakresem rekordów można uzyskać za pomocą operatora @ uściślania:

  • Aby uzyskać dostęp do wartości z zagnieżdżonych zakresów rekordów, zastosuj operator @ z nazwą używanej tabeli, korzystając ze wzorca:
    Tabela[@NazwaPola]
  • Aby uzyskać dostęp do wartości globalnych, takich jak źródła danych, kolekcje i zmienne kontekstowe, użyj wzorca [@NazwaObiektu] (bez oznaczenia tabeli).

Jeśli tabela, na której są wykonywane działania, stanowi wyrażenie — np. Filter( Table, ... ) — wówczas nie można użyć operatora uściślania. Tylko najbardziej wewnętrzny zakres rekordów może uzyskać dostęp do pól z tego wyrażenia tabeli, nie korzystając z operatora uściślania.

Załóżmy, że mamy kolekcję X:

Można ją utworzyć za pomocą funkcji ClearCollect( X, [1, 2] ).

Druga kolekcja to Y:

Tworzymy ją za pomocą funkcji ClearCollect( Y, ["A", "B"] ).

Oprócz tego definiujemy zmienną kontekstową o nazwie Value, korzystając z formuły: UpdateContext( {Value: "!"} )

Zbierzmy wszystkie dane. W tym kontekście następująca formuła:

Ungroup(
    ForAll( X,
        ForAll( Y,
            Y[@Value] & Text( X[@Value] ) & [@Value]
        )
    ),
    "Value"
)

powoduje utworzenie tej tabeli:

Jak do tego dochodzi? Najbardziej zewnętrzna funkcja, ForAll, definiuje zakres rekordów dla kolekcji X, umożliwiając dostęp do pola Value każdego rekordu w ramach przetwarzania. Uzyskanie dostępu odbywa się przy użyciu ciągu Value lub X[@Value].

Najbardziej wewnętrzna funkcja ForAll definiuje inny zakres rekordów dla kolekcji Y. Ponieważ ta tabela również ma zdefiniowane pole Value, użycie pola Value w tym miejscu odnosi się do rekordu kolekcji Y (już nie do rekordu kolekcji X). Aby w tym miejscu uzyskać dostęp w kolekcji X do pola Value, musimy użyć dłuższej wersji z operatorem uściślania.

Ponieważ kolekcja Y to najbardziej wewnętrzny zakres rekordów, korzystanie z pól tej tabeli nie wymaga uściślania. Ten sam wynik zapewni użycie tej formuły:

Ungroup(
    ForAll( X,
        ForAll( Y,
            Value & Text( X[@Value] ) & [@Value]
        )
    ),
    "Value"
)

Wszystkie zakresy rekordów kolekcji ForAll zastępują zakres globalny. Zdefiniowana przez nas zmienna kontekstowa Value nie jest dostępna według nazwy bez użycia operatora uściślania. Aby uzyskać dostęp do tej wartości, należy użyć opcji [@Value].

Funkcja Ungroup spłaszcza wynik, ponieważ funkcje ForAll zwrócą zagnieżdżoną tabelę wyników.

Tabele jednokolumnowe

Aby wykonywać operacje na jednej kolumnie tabeli, użyj funkcji ShowColumns, tak jak w poniższym przykładzie:

ShowColumns( Products, "Product" )

Ta formuła powoduje utworzenie tabeli z jedną kolumną:

Aby uzyskać krótszą alternatywę, określ element Table.Column, która wyodrębnia tabelę jednokolumnową zawierającą tylko kolumnę z tabeli. Ta formuła daje na przykład taki sam skutek, jak użycie opcji ShowColumns.

Products.Product

Rekordy wbudowane

Rekordy można wyrazić przy użyciu nawiasów klamrowych zawierających wartości pól nazwanych. Na przykład pierwszy rekord w tabeli na początku tego tematu można wyrazić za pomocą następującej formuły:

{ Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 }

Można również osadzić formuły w innych formułach, jak w poniższym przykładzie:

{ Name: First(Products).Name, Price: First(Products).Price * 1.095 }

Rekordy można zagnieżdżać przez zagnieżdżenie nawiasów klamrowych, jak pokazano w poniższym przykładzie:

{ 'Quantity': { 'OnHand': ThisItem.QuantOnHand, 'OnOrder': ThisItem.QuantOnOrder } }

Jeśli nazwa kolumny zawiera znaki specjalne, takie jak spacja lub dwukropek, należy ją ująć w cudzysłów pojedynczy. Aby użyć cudzysłowu pojedynczego w nazwie kolumny, podwój go.

Wartość w kolumnie Price nie obejmuje symbolu waluty (np. znaku dolara). To formatowanie zostanie zastosowane po wyświetleniu wartości.

Tabele wbudowane

Tabelę można utworzyć, korzystając z funkcji Table i zestawu rekordów. Tabelę z początku tego tematu można wyrazić za pomocą następującej formuły:

Table( 
    { Name: "Chocolate", Price: 3.95, 'Quantity on Hand': 12, 'Quantity on Order': 10 },
    { Name: "Bread", Price: 4.95, 'Quantity on Hand': 34, 'Quantity on Order': 0 },
    { Name: "Water", Price: 4.95, 'Quantity on Hand': 10, 'Quantity on Order': 0 } 
)

Tabele można także zagnieżdżać:

Table( 
    { Name: "Chocolate", 
      'Quantity History': Table( { Quarter: "Q1", OnHand: 10, OnOrder: 10 },
                                 { Quarter: "Q2", OnHand: 18, OnOrder: 0 } ) 
    }
)

Wbudowane tabele wartości

Tabele jednokolumnowe można tworzyć, określając wartości w nawiasach kwadratowych. Tabela wynikowa zawiera jedną kolumnę o nazwie Value.

Na przykład funkcja [ 1, 2, 3, 4 ] jest równoznaczna z Table( { Value: 1 }, { Value: 2 }, { Value: 3 }, { Value: 4 } ) i zwraca tę tabelę: