code: public Table withPartitionKeys(Column... partitionKeys) {
          if (this.partitionKeys == null) {
              setPartitionKeys(new java.util.ArrayList<Column>(partitionKeys.length));
          }
          for (Column ele : partitionKeys) {
              this.partitionKeys.add(ele);
          }
          return this;
      }
docs: <p>
  A list of columns by which the table is partitioned. Only primitive types are supported as partition keys.
  </p>
  <p>
  When creating a table used by Athena, and you do not specify any <code>partitionKeys</code>, you must at least
  set the value of <code>partitionKeys</code> to an empty list. For example:
  </p>
  <p>
  <code>"PartitionKeys": []</code>
  </p>
  <p>
  <b>NOTE:</b> This method appends the values to the existing list (if any). Use
  {@link #setPartitionKeys(java.util.Collection)} or {@link #withPartitionKeys(java.util.Collection)} if you want
  to override the existing values.
  </p>
  
  @param partitionKeys
  A list of columns by which the table is partitioned. Only primitive types are supported as partition
  keys.</p>
  <p>
  When creating a table used by Athena, and you do not specify any <code>partitionKeys</code>, you must at
  least set the value of <code>partitionKeys</code> to an empty list. For example:
  </p>
  <p>
  <code>"PartitionKeys": []</code>
  @return Returns a reference to this object so that method calls can be chained together.