コード例 #1
0
    def parse_and_execute(self, parsed_args: Dict):
        client = create_client_from_parsed_args(parsed_args)
        df_handler = DataFrameHandler()
        table_name = parsed_args['table-name']
        in_file_path = parsed_args['input-file']
        in_format = in_file_path.suffixes[0].replace('.', '') if parsed_args['file_format'] == 'infer' \
            else parsed_args['file_format']
        if in_format not in df_handler.allowed_format:
            raise ParseError(
                f'failed to infer file {in_file_path} format. '
                f'Please give the exact file format instead of `infer`')
        converted_tmp_file = tempfile.NamedTemporaryFile(mode='w',
                                                         suffix='.ndjson.gz',
                                                         delete=False)
        convert_options = {
            'read_input': in_file_path,
            'write_output': converted_tmp_file.name,
            'in_format': in_format,
            'out_format': 'ndjson',
            'convert_options': {
                'compression': 'gzip'
            },
            'use_table_schema': api.get_table_schema(client, table_name)
        }
        df_handler = DataFrameHandler()
        df_handler.convert_file(**convert_options)
        converted_tmp_file.close()

        with open(converted_tmp_file.name, 'rb') as in_f:
            api.upload_binary_file(client=client,
                                   table_name=table_name,
                                   binary_file=in_f)
        converted_tmp_file.close()
        unlink(converted_tmp_file.name)
コード例 #2
0
    def parse_and_execute(self, parsed_args: Dict):
        table_name = parsed_args['table-name']
        client = create_client_from_parsed_args(parsed_args)
        connection = create_sql_connecting_from_parsed_args(parsed_args)

        result_df = connection.execute_query_and_save_result(
            parsed_args['query'])
        inferred_schema = AitoTableSchema.infer_from_pandas_data_frame(
            result_df)

        converted_tmp_file = tempfile.NamedTemporaryFile(mode='w',
                                                         suffix='.ndjson.gz',
                                                         delete=False)
        DataFrameHandler().df_to_format(result_df, 'ndjson',
                                        converted_tmp_file.name,
                                        {'compression': 'gzip'})
        converted_tmp_file.close()

        api.create_table(client, table_name, inferred_schema)
        with open(converted_tmp_file.name, 'rb') as in_f:
            api.upload_binary_file(client=client,
                                   table_name=table_name,
                                   binary_file=in_f)
        converted_tmp_file.close()
        unlink(converted_tmp_file.name)
        return 0
コード例 #3
0
 def parse_and_execute(self, parsed_args: Dict):
     client = create_client_from_parsed_args(parsed_args)
     table_name = parsed_args['table-name']
     table_entries = load_json_from_parsed_input_arg(parsed_args['input'])
     api.upload_entries(client,
                        table_name=table_name,
                        entries=table_entries)
     return 0
コード例 #4
0
 def parse_and_execute(self, parsed_args: Dict):
     client = create_client_from_parsed_args(parsed_args)
     table_name = parsed_args['table-name']
     if prompt_confirmation(
             f'Confirm delete table `{table_name}`? The action is irreversible',
             False):
         api.delete_table(client, table_name)
     return 0
コード例 #5
0
 def parse_and_execute(self, parsed_args: Dict):
     client = create_client_from_parsed_args(parsed_args)
     table_name = parsed_args['table-name']
     table_schema = load_json_from_parsed_input_arg(parsed_args['input'],
                                                    'table schema')
     api.create_table(client=client,
                      table_name=table_name,
                      schema=table_schema)
     return 0
コード例 #6
0
    def parse_and_execute(self, parsed_args: Dict):
        in_f_path = parsed_args['input-file']
        in_format = parsed_args.get('file_format')
        table_name = parsed_args.get('table_name')
        client = create_client_from_parsed_args(parsed_args)

        api.quick_add_table(client=client,
                            input_file=in_f_path,
                            input_format=in_format,
                            table_name=table_name)
        return 0
コード例 #7
0
    def parse_and_execute(self, parsed_args: Dict):
        client = create_client_from_parsed_args(parsed_args)

        query_str = parsed_args['query']
        query = json.loads(query_str)
        use_job = parsed_args['use_job']

        client_method = getattr(api, self.api_method_name)
        resp = client_method(client=client, query=query, use_job=use_job)

        print(resp.to_json_string(indent=2))
        return 0
コード例 #8
0
    def parse_and_execute(self, parsed_args: Dict):
        from_table = parsed_args['from-table']
        predicting_field = parsed_args['predicting-field']
        client = create_client_from_parsed_args(parsed_args)

        predict_query, evaluate_query = api.quick_predict_and_evaluate(
            client=client,
            from_table=from_table,
            predicting_field=predicting_field)
        print("[Predict Query Example]")
        print(json.dumps(predict_query, indent=2))

        if parsed_args['evaluate']:
            evaluate_result = api.evaluate(client=client, query=evaluate_query)
            print("[Evaluation Result]")
            print(
                f"- Train samples count: {evaluate_result.train_sample_count}")
            print(f"- Test samples count: {evaluate_result.test_sample_count}")
            print(f"- Accuracy: {evaluate_result.accuracy}")

        return 0
コード例 #9
0
 def parse_and_execute(self, parsed_args: Dict):
     client = create_client_from_parsed_args(parsed_args)
     table_name = parsed_args['table-name']
     api.optimize_table(client, table_name=table_name)
     return 0
コード例 #10
0
 def parse_and_execute(self, parsed_args: Dict):
     client = create_client_from_parsed_args(parsed_args)
     if prompt_confirmation(
             'Confirm delete the whole database? The action is irreversible',
             False):
         api.delete_database(client)
コード例 #11
0
 def parse_and_execute(self, parsed_args: Dict):
     client = create_client_from_parsed_args(parsed_args)
     print(api.get_database_schema(client).to_json_string(indent=2))
     return 0
コード例 #12
0
 def parse_and_execute(self, parsed_args: Dict):
     client = create_client_from_parsed_args(parsed_args)
     tables = api.get_existing_tables(client)
     print(*sorted(tables), sep='\n')
     pass
コード例 #13
0
 def parse_and_execute(self, parsed_args: Dict):
     client = create_client_from_parsed_args(parsed_args)
     api.rename_table(client, parsed_args['old-name'],
                      parsed_args['new-name'], parsed_args['replace'])
     return 0
コード例 #14
0
 def parse_and_execute(self, parsed_args: Dict):
     client = create_client_from_parsed_args(parsed_args)
     api.copy_table(client, parsed_args['table-name'],
                    parsed_args['copy-table-name'], parsed_args['replace'])
     return 0
コード例 #15
0
 def parse_and_execute(self, parsed_args: Dict):
     client = create_client_from_parsed_args(parsed_args)
     table_name = parsed_args['table-name']
     print(
         api.get_table_schema(client, table_name).to_json_string(indent=2))
     return 0
コード例 #16
0
 def parse_and_execute(self, parsed_args: Dict):
     client = create_client_from_parsed_args(parsed_args)
     database_schema = load_json_from_parsed_input_arg(
         parsed_args['input'], 'database schema')
     api.create_database(client=client, schema=database_schema)
     return 0