====== Learning Tabulify - Step 4 - How to select Data Resources ======
===== Concepts =====
To [[docs:op:select|select a data resources]] such as a [[docs:resource:file|file]] or a [[docs:resource:table|database table]], ''Tabulify'' uses the concept of:
* [[#data selector]]
* and [[#selection_with_dependencies|dependency]] (Do we select also the dependent ''data resources'')
This page goes through this concepts with explanation and examples.
===== Data Selector =====
A ''data selector'' is composed of two parts:
* a [[docs:common:globbing|glob pattern]]
* and a [[docs:connection:connection|connection]]
* separated by the ''@'' (at) sign.
A [[docs:resource:data_selector|data selector]] looks like that:
globPattern@connection
A [[docs:common:globbing|glob pattern]] permits to define the ''name'' or the ''path'' of the [[docs:resource:resource|data resource]] located in its [[docs:connection:connection#system|system connection]].
===== Normal Selection =====
For instance, with the [[docs:system:tpcds|internal TPC-DS data store]], the below [[docs:tabli:data:list|list command]] will select all [[docs:resource:table|tables]] that ends with the term ''sales'' because the ''*'' character matches all characters.
tabli data list *sales@tpcds
where:
* ''tabli'' is the [[docs:tabli:tabli|main command line utility]]
* ''data'' is a [[docs:tabli:module|module]] (ie the [[docs:tabli:data:start|data module]])
* ''list'' is a [[docs:tabli:command|command]]
* ''*sales@tpcds'' is a [[docs:resource:data_selector|resource data selector]] that select [[docs:resource:resource|data resources]].
* ''tpcds'' defines the [[docs:connection:connection|connection]]
* ''*sales'' defines the [[docs:resource:table|tables]] to look for with a [[docs:common:globbing|glob pattern]]. In our case all tables that finish with the word ''sales'' because ''*'' is the [[docs:common:globbing|globbing star]] and select all characters.
Output:
path
-------------
catalog_sales
store_sales
web_sales
To get more practice on ''glob pattern'', you can have a look at this page. [[howto:tabli:glob]]
===== Selection with dependencies =====
When moving data due to [[docs:resource:fkey|foreign-key constraint]], you need to move the data resources and their [[docs:resource:dependency|dependencies]].
That's why ''Tabulify'' offers the ''%%--with-dependencies%%'' [[docs:tabli:flag|flag]] that will select also the [[docs:resource:dependency|dependent resources]] of the selected [[docs:resource:resource|data resource]]
Example: All ''tables'' that have a name that ends with ''sales'' in the [[docs:system:tpcds|tpcds system]] and their [[docs:resource:dependency|dependent tables]]
tabli data list --with-dependencies *sales@tpcds
path
----------------------
call_center
catalog_page
catalog_sales
customer
customer_address
customer_demographics
date_dim
household_demographics
income_band
item
promotion
ship_mode
store
store_sales
time_dim
warehouse
web_page
web_sales
web_site
===== Local File System =====
The connection part of a [[docs:resource:data_selector|data selector]] is not mandatory as the default connection is the [[docs:connection:cd|local file system]].
Therefore, performing the [[docs:tabli:data:list|list command]] with a [[docs:resource:data_selector|data selector]] without ''connection'' will give you a list of the file in your current directory.
tabli data list *
path
-----------------------
README.md
characters.csv
date_dim--datagen.yml
sequence--datagen.yml
This is then the equivalent of the [[wp>Ls|ls command]]
===== Next =====
Now that we know how to select [[docs:resource:resource|data resources]], the next page will show you how to print their content.
[[5_print_data_resource|How to print Data Resources]]