Postgres 배열을 사용하여 Airtable 추가 사용

에어테이블이 좀 웃겨요.
비록 그것은 보기에도 느낌도 데이터베이스처럼 보이지만, 너는 데이터베이스처럼 그것을 조회할 수 없다.
이것이 바로 내가 Sequin을 건설하는 것을 도와준 이유다.
이 설명서에서는 먼저 Sequin을 사용하여 Postgres에 Airtable을 연결합니다.그리고 킬러급의 PostgreSQL 그룹 방법을 사용하여 Airtable 데이터를 잠금 해제합니다.

Airtable 및 Postgres 배열


Airtable의 힘은 유연성에 있다.Airtable의 우호적인 사용자 인터페이스 때문에, 나는 마음대로 새 테이블, 새 열을 추가하거나 열의 형식을 변경할 수 있다.대박이다.
예를 들어 제품 이미지가 포함된 Products 테이블이 있다고 가정하십시오.그러나 제품마다 여러 장의 사진을 보존하기로 결정했을 때 어떤 일이 일어날까요?나는 단지 다른 그림을 줄로 끌고 갔을 뿐이다.칼럼이나 나의 이전 그림을 옮길 필요가 없다.
이러한 유연성을 구현하기 위해 에어탭 데이터가 Sequin을 통해 Postgres로 끌어들일 때 이 데이터는 통상적으로 Postgres Arrays으로 표시된다.따라서 새 그림이 Products 테이블에 튀어나올 때, Postgres 테이블은 기존 검색어를 이동하거나 변경할 필요가 없습니다.새 이미지는 배열의 다른 값일 뿐입니다.
Airtable의 많은 필드 형식은 첨부 파일, 여러 선택, 찾기, 협업자 등 여러 개의 값을 포함할 수 있습니다.스팽글이 있으면 이러한 필드 유형은 Postgres에 배열로 나타납니다.이것들은 너에게 그리 익숙하지는 않겠지만, 수조는 박사 후에 일류이다.
몇 분 후, 당신은 Postgres 그룹의 비결을 습득하게 될 것이며, 영원히 같은 방식으로 Airtable을 보지 않을 것이다.

기다리다성장 중인 소기업이 당신의 도움을 필요로 합니까?


이 안내서를 더욱 재미있게 하기 위해서, 만약 당신이 소기업주가 업무를 발전시키는 것을 돕고 있다고 가정하십시오.
그들은 Airtable을 사용하여 제품, 구매 주문, 판매 주문서를 분류해 왔다.기업주들은 그들의 에어테이블 기지가 간단하고 사용하기 쉽기를 원하지만, 그녀는 더 많은 통찰력을 필요로 한다.
이 스토리를 계속하려면 small business's inventory tracker base을 보고 오른쪽 위에 있는 Copy base를 클릭하여 작업공간에 추가합니다.

I’m going to assume that if you’ve made it this far, you already know Airtable is the bees knees and know how to set it up.


Postgres에 Airtable 연결


이제 Sequin을 사용하여 Postgres에 Airtable base를 추가하십시오.
  • 에서 https://app.sequin.io/signup으로 이동하여 계정을 생성합니다.
  • 은 자습서를 사용하여 스팽글에 받침대를 연결하거나 Quickstart guide을 보십시오.
  • 몇 초 후, 당신은 Postgres 데이터베이스를 얻을 것입니다. Sequin은 당신의 모든 Airtable 데이터로 그것을 채우기 시작할 것입니다.
  • 은 현재 connect to your new Postgres database으로 모든 표준 SQL 클라이언트를 지원합니다.TablePlusPopSQL 등 도구는 모두 좋은 선택입니다(저는 TablePlus를 사용할 것입니다).
  • Postgres에서 Airtable의 외관


    Postgres 모드 좀 봐.
    먼저 모든 Airtable 테이블 이름이 snake 대소문자로 변환된 것을 볼 수 있습니다.

    그 다음으로 Airtable에 여러 개의 값 (예: lookup, multiple select, attachment) 을 포함할 수 있는 모든 필드 형식은 text[] 형식의 열에 저장되어 있음을 알 수 있습니다.text[]은 텍스트 필드 배열입니다.

    Postgre의 배열은 대괄호 {}으로 구분되며 일반적인 대괄호 []이 아닙니다.(이것은 당신을 경각심을 유지하게 할 것이다.)

    Airtable 및 Postgres 배열


    당신이 협조하고 있는 소기업을 위해 실제 문제를 해결하기 전에, 우리는 먼저 Postgres 진열을 익히자.
    예를 들어, 인벤토리 추적기 라이브러리에서 Warehouse Locations 테이블에는 지정된 창고 위치와 연관된 제품을 선택할 수 있는 lookup 필드가 포함되어 있습니다.

    각 위치에 대해 여러 제품을 선택할 수 있습니다.따라서 동기식 Postgres 데이터베이스에서 warehouse_locations표는 product_inventory열을 하나의 그룹 유형으로 표시하고 선택한 제품마다 여러 개의 record_id을 포함한다.
    product_inventory 어레이를 살펴보겠습니다.product_inventory 표에서 warehouse_locations 열을 선택하면 매우 간단합니다.
    SELECT product_inventory FROM warehouse_locations;
    
    이것은 모든 product_inventory을 하나의 열로 되돌려줍니다. 그 안에 수조를 포함합니다.

    이것은 상관없지만, 창고마다 진열대에 열거된 첫 번째 제품을 선택하고 싶다고 가정하십시오.
    이를 위해서는 그룹의 값에 접근해야 합니다.Postgres 수조는base-1 인덱스입니다. (경각심을 유지하는 또 다른 흥미로운 방법입니다.) 따라서 수조의 첫 번째 값에 접근하려면 네모난 괄호가 있는 product_inventory[1]을 사용하십시오.다음과 같이 하십시오.
    SELECT product_inventory[1] FROM warehouse_locations;
    
    이제 각 선반에 있는 첫 번째 제품의 record_id을 보실 수 있습니다.

    마찬가지로 Postgres를 Airtable과 함께 사용할 때 여러 개의 값을 포함할 수 있는 모든 필드는 하나의 그룹이 됩니다.따라서 이런 수조의 첫 번째 값을 추출하는 간단한 방법은 매우 편리하다.
    예를 들어 Airtable 라이브러리의 Product Inventory 테이블에서 Product Name 열은 다중 선택 필드입니다.이것은 텍스트 필드로 더 잘 표현될 수 있지만, 이렇게 하면 너는 예쁜 색을 얻지 못할 것이다😌:

    제품 이름의 텍스트만 질의하려면 배열 구문을 다시 사용합니다.
    SELECT product_name[1] FROM product_inventory;
    
    이렇게 하면 명확한 제품 이름 목록이 반환됩니다.

    귀찮다


    Postgres 배열의 작동 원리를 파악한 후, SQL을 사용하여 몇 가지 견해를 추출해 봅시다.
    예를 들어 어떤 제품의 색깔이 고객에게 가장 매력적인지 보고 싶다고 가정해 보세요.그래서 잘 팔리는 제품에 대한 색상 리스트를 작성하고 싶어요.예를 들어 이 소기업에'잘 팔린다'는 것은 5회 이상의 판매를 의미한다.
    이 데이터를 얻으려면 colors표에서 product_inventory의 목록을 가져와야 합니다. 여기서 판매된 단원 수는 5보다 큽니다.
    SELECT colors FROM product_inventory WHERE units_sold[1]::integer > 5;
    

    Tip: The double colon :: next to WHERE units_sold:: is short-hand for CAST. Casting allows you to change the data type of a field - in this case from text to integer - so that you can evaluate the > 5 statement. You'll use CAST often with your Airtable data as Sequin works to support more data types beyond text, text[], and bool;


    모든 색이 그룹 형식으로 되돌아오기 때문에 이 검색의 결과는 좀 복잡합니다.일부 색상은 여러 행으로 복제되므로 가장 유행하는 색상을 제대로 설명할 수 없습니다.

    뚜렷한 리스트에서 각각의 독특한 색깔을 볼 수 있었으면 좋겠다.unnest()에서는 배열의 각 항목을 자신의 행에 중첩되지 않도록 할 수 있습니다.
    SELECT
        DISTINCT UNNEST(colors) AS "Color",
        count(colors) AS "Frequency"
    FROM product_inventory
    WHERE units_sold[1]::integer > 5
    GROUP BY "Color"
    ORDER BY "Frequency" DESC;
    
    여기서 DISTINCTunnest()을 결합하여 사용하면 가장 유행하는 색깔의 선명한 목록을 얻을 수 있습니다.그리고 AS을 사용하여 이 열에 이해하기 쉬운 이름을 제공합니다. 이 예에서 'Color' 입니다.
    그리고 count(colors)(마찬가지로 AS을 사용하여 열의 별명을'Frequency'로 표시함)을 사용하여 모든 유일한 색깔이 나타나는 빈도를 계산한다.count(colors)GROUP BY과 함께 사용되기 때문에 count(colors)은 각각의 독특한 색깔과 표를 형성한다.
    마지막으로 가장 유행하는 색깔이 맨 위에 있도록 ORDER BY을 사용하여 표를 정렬합니다.
    가장 인기 있는 제품 중'사막 브라운'은 흔히 볼 수 있는 색깔인 것 같다.

    어떤


    사막 브라운이 유행하는 것에 대한 새로운 견해를 바탕으로 어떤 제품이 이런 이상적인 색깔을 가지고 있는지 알고 싶다.
    우리는 ANY을 사용하여 제품의 색 그룹이 우리가 원하는 색을 포함하는지 신속하게 검사할 수 있다. 이 예에서 '사막 갈색' 이다
    SELECT product_name[1]
    FROM product_inventory
    WHERE 'Desert Brown' = ANY(colors);
    
    자, 몇 가지 생각이 형성되기 시작했다.우리가 이 문제를 풀도록 하자.
    우선, product_name은 데이터베이스에서 하나의 수조로 표시되어 있기 때문에 (저희 Airtable 라이브러리에서 제품 이름은 multiple select이라는 것을 기억하실 수 있습니다) 우리는 product_name[1]을 사용하여 수조의 첫 번째 항목을 선택합니다.이 예에서는 제품의 이름입니다.
    그리고 WHERE 자구는 제품Color 그룹(colors)이 Desert Brown과 일치하는 문자열을 포함하는지 검사합니다.
    그러면 사막 갈색 색상 옵션이 있는 모든 제품이 나열되는 목록이 생성됩니다.

    Airtable 및 Postgres 연결


    이제 너는 약간의 힘든 일을 진행할 준비가 되어 있다.창고 최적화.
    창고 안의 화물칸마다 재고품이 얼마나 있는지 볼 수 있었으면 좋겠어요.이것은 기업주들이 그들의 재고 공간을 더욱 효과적으로 사용하는 데 도움이 될 것이다.
    사용할 수 있는 첫 번째 도구는 Airtable 검색입니다.그러나 그것은 당신이 원하는 것을 완전히 보여주지 못한다.

    Airtable에서는 복잡한 함수를 작성해야 합니다.그러나 현재 데이터는 Postgres에 있습니다. SQL을 사용하여 몇 줄에서 원하는 내용을 표현할 수 있습니다.
    이를 위해 ANYJOIN을 사용하여 각 진열대에 얼마나 많은 재고가 있는지 확인할 수 있습니다.
    SELECT
        warehouse_locations.name AS "Shelf",
        SUM((product_inventory.units_ordered[1]::INTEGER) - (product_inventory.units_sold[1]::INTEGER)) AS "Inventory"
    FROM warehouse_locations
    JOIN product_inventory
        ON product_inventory.id = ANY (warehouse_locations.product_inventory)
    GROUP BY warehouse_locations.name
    ORDER BY warehouse_locations.name ASC;
    
    당신은 이미 이 검색의 대다수 요소를 사용했기 때문에, 우리는 이 요소들이 어떻게 협동하여 일을 하는지 중점적으로 소개할 것입니다.
    우선 CAST을 사용하여 units_orderedunits_soldINTEGERS으로 전환하여 각 제품의 재고를 계산한다.되돌아오는 열마다 AS을 사용할 수 있습니다.
    그리고 ANY에서 JOIN까지 사용 가능한 제품 재고를 각 화물칸에 분배한다.
    마지막으로 앞의 조회와 같이 GROUP BYORDER BY을 사용하여 출력을 구성하고 정렬합니다.

    비행 가능 및 박사후 연합회


    그리고 SQL 조작부호가 하나 더 있는데 나는 내가 계속 사용하고 있다는 것을 발견했다. UNION.(이것은 Postgres 배열과 엄격한 관계가 없기 때문에 보상이라고 부른다.)
    Airtable을 사용할 때 UNION은 서로 다른 테이블에서 비슷한 데이터를 수집하는 데 도움을 줄 수 있는 유용한 도구입니다.
    예를 들어 상점의 모든 제품 사진을 한 곳에서 보고 새로운 마케팅 활동을 준비하고 싶을지도 모른다.이를 위해서는 제품 이미지와 Purchase Orders 테이블에서 제품 이미지를 추출해야 합니다.
    SQL에서 이것은 그리 대단한 것이 아니다.
    SELECT product_inventory.images[1] FROM product_inventory
    UNION
    SELECT purchase_orders.image[1] FROM purchase_orders;
    
    이제 목록에서 전체 시스템에 표시된 모든 제품 이미지에 액세스할 수 있습니다.Airtable에서 이 동작을 실행하려면 검색 기능이 있는 유일한 Images표를 만들어야 합니다.기지 전체를 재편성하다.

    쌍방이 다 좋게 하다


    에어테이블과 Postgres 데이터베이스를 결합하면 에어테이블의 모든 놀라운 기능과 PostgreSQL의 유연성과 신뢰성을 얻을 수 있습니다.
    이제 Airtable과 SQL의 강력한 기능으로 데이터를 조회하고 통합하며 구축할 수 있습니다.

    좋은 웹페이지 즐겨찾기